FPGA内部振荡器使用
之前一直看CSDN上其他大佬写博客,一直有这种想法,以前觉得CSDN上编辑格式太复杂没时间,现临近毕业,希望多写多交流,以下是项目中遇到的一个问题,在实验室同学的讨论下,有了以下内容
FPGA有一个内部硅振荡器,可以配置为CCLK时钟,用于在主串行模式下配置FPGA。(是否可以用此时钟作为FPGA的时钟?以及如何用?)
使用TARTUPE2原语获取FPGA内部硅振荡器产生的时钟:
TARTUPE2官方解释:
STARTUPE2原语(如图5-14所示)提供了用户逻辑与配置逻辑控制和状态信号之间的接口。许多引脚与启动序列有关,包括允许用户规范启动时钟的CLK信号。STARTUPE2可以在设计中实例化,以提供用户在设备操作期间对所选配置信号的控制。
我们只需要关注相关引脚:
*CFGCLK:*置逻辑主时钟输出(即:用于配置Flash)。输出到FPGA逻辑。从专用内部环形振荡器输出时钟信号,典型频率由比特流ConfigRate选项定义。输出仅在配置期间是激活的,并且在启用了持久化的主模式下。
*CFGMCLK:*配置内部振荡器时钟输出。输出到FPGA逻辑。输出时钟信号从专用内部环形振荡器典型的65 MHz频率(咱们可以任意使用的时钟)。
*EOS:*End of Startup。Active-High输出响应EOS标志到FPGA逻辑。可以作为复位信号,表明FPGA可以进行后续操作。
TARTUPE2使用方法:
如下两种例化方式,一种直接例化需要信号;另外一种可以把flash的时钟信号例化到USRCCLKO,如下flash_clk例化也不需要约束引脚。
module tl_led_flash(output clk_out,output reg [1:0] led // led gpio output
);
// Delay lenght: 32_500_000, 500ms, by used 65MHz cfgmclk
parameter DELAY_LEN = 26'd3249_9999;reg [26:0] delay_cnt;
wire cfgmclk;
wire eos_n;/******************例化方式一*********************/
STARTUPE2 #()
STARTUPE2_inst (.CFGMCLK(cfgmclk), // 1-bit output: Configuration internal oscillator clock output 65MHz..EOS(eos_n) // 1-bit output: Active high output signal indicating the End Of Startup.
);/******************例化方式二******
wire flash_clk;
STARTUPE2 #(.PROG_USR("FALSE"), // Activate program event security feature. Requires encrypted bitstreams..SIM_CCLK_FREQ(0.0) // Set the Configuration Clock Frequency(ns) for simulation
)
STARTUPE2_inst
(.CFGCLK(), // 1-bit output: Configuration main clock output.CFGMCLK(cfgmclk), // 1-bit output: Configuration internal oscillator clock output.EOS(eos_n), // 1-bit output: Active high output signal indicating the End Of Startup..PREQ(), // 1-bit output: PROGRAM request to fabric output.CLK(0), // 1-bit input: User start-up clock input.GSR(0), // 1-bit input: Global Set/Reset input (GSR cannot be used for the port name).GTS(0), // 1-bit input: Global 3-state input (GTS cannot be used for the port name).KEYCLEARB(1), // 1-bit input: Clear AES Decrypter Key input from Battery-Backed RAM (BBRAM).PACK(1), // 1-bit input: PROGRAM acknowledge input.USRCCLKO(flash_clk), // 1-bit input: User CCLK input.USRCCLKTS(0), // 1-bit input: User CCLK 3-state enable input.USRDONEO(1), // 1-bit input: User DONE pin output control.USRDONETS(1) // 1-bit input: User DONE 3-state enable outpu
);
***************/assign clk_out = cfgmclk;
// Led flash with delay counter by cfgmclk
always@(posedge cfgmclk or negedge eos_n)if(!eos_n)begindelay_cnt <= 26'd0; // reset delay_cntled <= 2'b0; // led output lowendelse if(delay_cnt == DELAY_LEN)begindelay_cnt <= 26'd0; // reset delay_cnt;led <= ~led; // change led output status;endelsedelay_cnt <= delay_cnt + 1'b1;
endmodule
注:程序主要来源于https://blog.csdn.net/liuxuedianna/article/details/106482661(致谢)。
试验验证:
将clk_out引脚约束到黑金7020的开发板引脚上,如下图可见输出67MHz的时钟频率。与Xilinx手册上写的65MHz有所偏差,可能是温度、电压等影响。对于所做的实际项目影响不大,咱们可以使用该时钟写logic配置外部时钟芯片,用时钟芯片生成的稳定时钟作为板卡全局时钟。
FPGA内部振荡器使用相关推荐
- FPGA 内部双口块RAM 读写实现
由XILINX官网文档PG058 "LogiCORE IP Block Memory Generator v8.2" FPGA 内部块RAM 的读时序如下图: 可知,块RAM的读延 ...
- FPGA内部硬件结构简介
我们知道FPGA内部有很多可供用户任意配置的资源,其中包括:可编程逻辑.可编程I/O.互连线.IP核等资源,很多学过数字电路的人都知道与或非门可以构成几乎所有的数字电路,但是FPGA内部最基本的主要单 ...
- (220)FPGA内部组成LUT介绍
(220)FPGA内部组成&LUT介绍 1 文章目录 1)文章目录 2)FPGA入门与提升课程介绍 3)FPGA简介 4)FPGA内部组成&LUT介绍 5)技术交流 6)参考资料 2 ...
- (78)FPGA内部资源与FPGA开发流程-面试必问(二)(第16天)
(78)FPGA内部资源与FPGA开发流程-面试必问(二)(第16天) 1 文章目录 1)文章目录 2)FPGA初级课程介绍 3)FPGA初级课程架构 4)FPGA内部资源与FPGA开发流程-面试必问 ...
- (05)FPGA内部资源
(05)FPGA内部资源 1.1 目录 1)目录 2)FPGA简介 3)Verilog HDL简介 4)FPGA内部资源 5)结语 1.2 FPGA简介 FPGA(Field Programmable ...
- FPGA内部资源总结
原文链接 https://blog.csdn.net/times_poem/article/details/51351997 目前主流的FPGA仍是基于查找表技术的,已经远远超出了先前版本的基本性能 ...
- c语言转fpga原理,要想玩转FPGA,就必须理解FPGA内部的工作原理-可编程逻辑-与非网...
FPGA(Field-Program mable Gate Array),即现场可编程门阵列,它是在 PAL.GAL.CPLD 等可编程器件的基础上进一步发展的产物.它是作为专用集成电路(ASIC)领 ...
- 内部振荡器、无源晶振、有源晶振有什么区别?
单片机要运行起来,必须有一个时钟信号,就好像人的心跳.这个时钟信号可以由无源晶振提供,可以由有源晶振提供,目前大部分的单片机也集成了内部振荡器.今天就来聊聊这三者的区别. 1.内部振荡器 单片机内部集 ...
- FPGA内部资源介绍
逻辑资源块是FPGA中最重要的资源,它在FPGA芯片中占到比重最大.Xilinx公司称它为CLB,即Configurable Logic Blocks:而Altera公司称它为ALM,即Adapive ...
最新文章
- [JS] 关于parseInt的一个小知识:[‘1‘, ‘2‘, ‘3‘].map(parseInt)
- 程序员学霸!top2大学毕业!不到30岁第一次升P9失败!挫折感极强,怀疑人生?网友:没升P7的我,不要面子的吗??...
- 字符串一:替换空格()
- photo如何制作长图(外送搞笑毒故事)
- ICE简单介绍及使用示例
- 百练OJ:2678:基因检测
- HDU3388(二分+容斥原理)
- 银行委托第三方催收信用卡欠款,是合法吗?
- Linux下如何安装.cer证书
- 苹果或将推中国特色版iPhone 削掉了Face ID改用屏幕指纹
- Python 学习记录(1)对象命名导致的问题
- phpMyadmin学习入门
- 基于Silverlight4开发的相关工具
- 20140419-MCSA 2012 Server R2 Command
- element环境插件
- 优步司机如何联系客服?uber客服渠道,Uber优步司机客服渠道
- UVa——1600(巡逻机器人)
- 服务器之间的文件传输
- RK3568 重新封装V4l2为一个C++ Camera管理类 (基于RK编译环境)
- 结绳编程【按钮事件】