赞
踩
K0:常见Vivado Constraints 问题索引 https://www.xilinx.com/support/answers/69583.html
K1:FPGA差分信号缓冲的转换(IBUFDS、IBUFGDS和OBUFDS)
https://blog.csdn.net/github_33678609/article/details/53789063?utm_source=blogxgwz2
全局时钟资源概念解释与基本使用方法,https://blog.csdn.net/pcseye/article/details/7321646
常见全局时钟资源的使用方法:IBUFG + BUFG;IBUFGDS + BUFG;IBUFG + DCM + BUFG;
K2:直接使用从mmcm出来的时钟 https://www.xilinx.com/support/answers/59893.html
(注: xilinx的PLL内部接构是输入master clock经过IBUF输入后进入MMCM,然后生成的时钟再经过BUFG输出)
这样使用时输入master clock与输出generate clock是不同的,要根据它们之间的相位偏移(phase shift)做不同的处理
频率不变,相位偏移为‘负’或‘0’:通过设置调整input_delay 最大最小值来处理;
频率不变,相位偏移为‘正’:通过设置multicycle_path来处理;
频率改变,相位偏移‘0’:使用虚拟时钟
(注:PLL可以生成多个不同频率且不同相位的时钟,但是具体到个例,需要根据VCO(压控振荡器)数量分析,因为PLL内部的VCO具备将频率倍增上去的能力,比如要同时输出25M和33M,就要将VCO的频率调到至少是25和33之间的公倍数,然后通过由VCO经过分频器之后得到的时钟;在这个过程中,来自同一VCO的时钟是相同的相位偏移,那么想要几个什么频率下什么相偏的时钟就要结和FPGA芯片提供的具体资源进行分析。http://bbs.eetop.cn/thread-288895-1-1.html)
1. 生成所有可能时钟用mux选择;
2. 采用PLL/MMCM的动态时钟可配置功能;(best in FPGA)
3. 生成所有可能时钟外clk?,再生成max{clk?}*2 频率的采样时钟,基于乃奎斯特采样定理采样输出;
K4:FPGA 约束步骤与方案
reference:
generate clock的继承,http://www.eetop.cn/blog/html/34/840234-28710.html
create_clock与create_generate_clock的作用范围,https://www.xilinx.com/support/answers/64340.html
virtual clock:xilinx UG903
PLL 约束:http://bbs.eetop.cn/viewthread.php?tid=477572&page=1&extra=
1. IO pad:指定输入IO pad,及其电器特性;
- set_property IOSTANDARD TMDS_33 [get_ports clk_in]
- set_property PACKAGE_PIN K18 [get_ports clk_in]
2. IO pad 到 PLL/MMCM:
- creat_clock -period 20.000 [get_ports clk_in]
- set_input_jitter [get_clocks -of_objects [get_ports clk_in]] 0.2
- ...
3. PLL/MMCM:(在约束万FPGA所有输入clk后且完成内部时钟IP的示例化连接后,先synthesis,然后借助report_clocks找到所有auto derived的generated clock信息,完成generated clock的renameing和同步、异步关系设定)
- # complement the non-inherited constraints
- create_generate_clock ...
-
- # clk100 and clk66 are generate clock
- set_clock_groups–async –group {clk50 clk100} -group {clk33 clk66}
4. logic constraints:
K5:采用create_clock定义内部clock的影响 https://www.xilinx.com/support/answers/59030.html
create_clock 定义的起点是将来timing分析的时间零点,比如latency和uncertainty值,当内部generate clock用creat clock定义就表示用了不当的中间节点作为timing分析的时间零点,就会导致timing计算偏差,可能导致设计无法稳定正常工作。
K6:create_clock与create_generated_clock概念分析 https://blog.csdn.net/u011729865/article/details/52810619
create_generated_clock 是用来说明generated clock与source clock的相位(边沿)关系,其中source clock指定了master clock真正用于产生generate clock的起点(不一定是master clock最开始的输入点,如下图所示,真正的开始输入点是Udiv/clk pin脚,而非clk脚),如果指定准确,那么generate clock与master clock的相位差会由内部连接的路径来决定/保证;另外,如果source clock没有指定准确的输入起点时,还可以通过设置相位偏移关系(-edges 选项)来达到同样效果;
在遇到多个master clock来生成多个generate clock的情况下,遵循如下原则:
1.一致性:声明的generated clock和master clock相位边沿的关系要和实际的一致。
2.唯一性:确保generated clock和master clock的路径的唯一。
其中第2条,可以借助命令(report_timing)来辅助确定每个generate clock的生成路径,然后加以约束
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。