当前位置:网站首页>vivado里那些看不懂的原语
vivado里那些看不懂的原语
2022-07-31 12:12:00 【IC学习者】
遇到一段代码
GLOBAL sw_clk(
.in (SWCLK),
.out (swck)
);
是Intel风格的,可以用xilinx的BUFG进行替代
// BUFG 分配时钟专用资源,指定信号走专门的时钟布线
修改为
BUFG sw_clk(
.I (SWCLK),
.O (swck)
);
布线时候报错
[Place 30-574] Poor placement for routing between an IO pin and BUFG. If this sub optimal condition is acceptable for this design, you may use the CLOCK_DEDICATED_ROUTE constraint in the .xdc file to demote this message to a WARNING. However, the use of this override is highly discouraged. These examples can be used directly in the .xdc file to override this clock rule.
< set_property CLOCK_DEDICATED_ROUTE FALSE [get_nets SWCLK_IBUF] >
SWCLK_IBUF_inst (IBUF.O) is locked to IOB_X0Y7
and SWCLK_IBUF_BUFG_inst (BUFG.I) is provisionally placed by clockplacer on BUFGCTRL_X0Y0
具体原因未知,只能先把功能打通,所以把相关的部分注释掉。
下面是收集的一些资料,来源都做了标注。
【FPGA】xilinx IOBUF的用法
inout类型的接口,主动添加IOBUF
IOBUF #(
.DRIVE(12), // Specify the output drive strength
.IBUF_LOW_PWR("TRUE"), // Low Power - "TRUE", High Performance = "FALSE"
.IOSTANDARD("DEFAULT"), // Specify the I/O standard
.SLEW("SLOW") // Specify the output slew rate
) IOBUF_inst (
.O(O), // Buffer output
.IO(IO), // Buffer inout port (connect directly to top-level port)
.I(I), // Buffer input
.T(T) // 3-state enable input, high=input, low=output
);
xilinx FPGA全局时钟资源的使用
1.什么是xilinx fpga全局时钟资源
时钟对于一个系统的作用不言而喻,就像人体的心脏一样,如果系统时钟的抖动、延迟、偏移过大,会导致系统的工作频率降低,严重时甚至会导致系统的时序错乱,实现不了预期的逻辑功能。xilinx fpga内的全局时钟资源可以很好的优化时钟的性能,因此在设计时要尽可能多的使用fpga内部的时钟资源。xilinx fpga内部的全局时钟采用全铜工艺实现,配合专用时钟缓冲和驱动结构,可以使进入全局时钟网络的时钟到达fpga内部各个逻辑单元的抖动和延迟最小。全局时钟资源是专用布线资源,存在于全铜布线层上,使用全局时钟资源不会影响芯片的其他布线资源。最好的全局时钟解决方案是:让时钟从全铜工艺的全局时钟输入管脚进入fpga,然后经内部的全局时钟缓冲单元去控制各个触发器。xilinx常用的全局时钟资源原语有:全局时钟缓冲IBUFG、差分全局时钟缓冲IBUFGDS、全局缓冲BUFG、数字时钟管理单元DCM、锁相环PLL。
2.全局时钟资源的使用方法
IBUFG是从全局时钟输入管脚输入的单端时钟的第一级缓冲,IBUFGDS是指的是差分时钟的缓冲。只要是从全局时钟管脚的输入的时钟必须要经过IBUFG,如果不经过,那么ise在布局布线时就会报错,反之如果使用了IBUFG,那么信号一定是从全局时钟输入管脚输入的,这是因为IBUFG和IBUFGDS的输入只和fpga的全局时钟输入引脚有物理上的连接,与普通的IO和内部逻辑块CLB没有物理上的连接。BUFG是全局缓冲,BUFG的输出到达fpga内部各个逻辑单元的时钟延迟与抖动都是最小的。BUFG不但可以驱动IBUFG和DCM的输出,还可以驱动其他普通的片内信号和普通io,当某个信号扇出很大时,而且要求的抖动延迟最小时,可以用BUFG驱动该信号,普通IO和普通的片内逻辑信号进入全局时钟布线层有一个固定的延迟,一般在10ns左右,即普通信号或普通IO从输入到BUFG的输出有一个约10ns左右的固有延迟,但BUFG的输出到片内所有的单元(IOB,CLB,选择性块RAM)的延时可以忽略不计。时钟资源原语的使用方法主要有以下四种:
Reference
Vivado使用心得(二)BUFG,IBUFG,BUFGP,IBUFGDS等含义以及使用
全局时钟资源的使用方法(五种)
IBUFG + BUFG的使用方法:
IBUFG后面连接BUFG的方法是最基本的全局时钟资源使用方法,由于IBUFG组合BUFG相当于BUFGP,所以在这种使用方法也称为BUFGP方法。IBUFGDS + BUFG的使用方法:
当输入时钟信号为差分信号时,需要使用IBUFGDS代替IBUFG。IBUFG + DCM + BUFG的使用方法:
这种使用方法最灵活,对全局时钟的控制更加有效。通过DCM模块不仅仅能对时钟进行同步、移相、分频和倍频等变换,而且可以使全局时钟的输出达到无抖动延迟。Logic + BUFG的使用方法:
BUFG不但可以驱动IBUFG的输出,还可以驱动其它普通信号的输出。当某个信号(时钟、使能、快速路径)的扇出非常大,并且要求抖动延迟最小时,可以使用BUFG驱动该信号,使该信号利用全局时钟资源。但需要注意的是,普通IO的输入或普通片内信号进入全局时钟布线层需要一个固有的延时,一般在10ns左右,即普通IO和普通片内信号从输入到BUFG输出有一个约10ns左右的固有延时,但是BUFG的输出到片内所有单元(IOB、CLB、选择性块RAM)的延时可以忽略不计为“0”ns。Logic + DCM + BUFG的使用方法:
DCM同样也可以控制并变换普通时钟信号,即DCM的输入也可以是普通片内信号。使用全局时钟资源的注意事项全局时钟资源必须满足的重要原则是:使用IBUFG或IBUFGDS的充分必要条件是信号从专用全局时钟管脚输入。换言之,当某个信号从全局时钟管脚输入,不论它是否为时钟信号,都必须使用IBUFG或IBUFGDS;如果对某个信号使用了IBUFG或IBUFGDS硬件原语,则这个信号必定是从全局时钟管脚输入的。如果违反了这条原则,那么在布局布线时会报错。这条规则的使用是由FPGA的内部结构决定的:IBUFG和IBUFGDS的输入端仅仅与芯片的专用全局时钟输入管脚有物理连接,与普通IO和其它内部CLB等没有物理连接。另外,由于BUFGP相当于IBUFG和BUFG的组合,所以BUFGP的使用也必须遵循上述的原则。
Xilinx FPGA输入输出缓冲 BUF 的使用
UltraScale Architecture Libraries Guide (UG974)
边栏推荐
- Use Excel to read data exposed by SAP ABAP CDS View through ODBC
- cesium-Web网页优化进阶
- Docker installs canal and mysql for simple testing and achieves cache consistency between redis and mysql
- Cognitive-exercise rehabilitation medical robot application design
- Docker实践经验:Docker 上部署 mysql8 主从复制
- Indoor real-time laser SLAM control method based on biological excitation neural network
- Caused by: 类找不到: org.apache.flink.table.planner.delegation.ParserFactory或者ExecutorFactory
- DCM middleware family welcomes a new member
- ipv4和ipv6对比(IPV4)
- JS列表数据通过递归实现树形结构
猜你喜欢
随机推荐
栈和队列的基本概念
dosbox基础使用[通俗易懂]
深度学习基本概念
如何正确地把服务器端返回的文件二进制流写入到本地保存成文件
VBA输出日志到工作簿demo
0x80070570文件或目录损坏且无法删除(0x80070091怎么删除)
A40i/T3 uboot启动时对PMU部分初始化
Docker practical experience: Deploy mysql8 master-slave replication on Docker
Cognitive-exercise rehabilitation medical robot application design
R 语言data.frame 中的另一行中减去一行
Qt鼠标穿透
三相PWM整流器预测直接功率控制
Use ODBC in Excel to read data from CDS view on SAP BTP platform
想吃菌子,当然是自己上山找了
0x80070570 The file or directory is damaged and cannot be deleted (how to delete 0x80070091)
生信周刊第38期
关于IDEA开发工具的介绍
[Shader] Shader official example [easy to understand]
【核心概念】图像分类和目标检测中的正负样本划分以及架构理解
Build a Valentine's Day confession website (super detailed process, package teaching package)









