第24讲 UltraFast设计方法学(3):RTL代码风格(1)

声明:该笔记来源于网上的VIVADO视频教程

详细的官方资料可以参考:http://china.xilinx.com/support/documentation/sw_manuals/xilinx2018_3/c_ug949-vivado-design-methodology.pdf(UltraFAST 设计方法指南 (适用于 Vivado Design Suite))中文版
http://china.xilinx.com/support/documentation/sw_manuals/xilinx2018_3/ug949-vivado-design-methodology.pdf(英文版)

1.在VIVADO中可以用“all_latches”这个命令去寻找设计中所有的锁存器;另外也得注意“rst”是否对所有需要复位的信号进行复位;

2.为什么说要避免使用寄存器?

如下图所示,每个slice有4个FF/L和4个FF,每个FF/L可以配置成锁存器,当FF/L配置成锁存器的时候,FF是不可以用的,意味着有一半的资源被浪费掉。

3.循环语句注意:可以使用第一种写法,但是不建议使用第二种写法。当循环需要判断其它电路结构的时候会造成资源的巨大浪费。

4.状态机:Mealy型状态机取决于当前状态和输入;Moore型状态机取决于当前状态。

Moore型状态机更加适用于FPGA

5.调试逻辑:调试逻辑建议使用宏定义的方式,或者是单独的一个模块

6.控制信号:只有同样的控制集的触发器才能被放到同一个SLACE里面去,所以如果控制集比较多的话会造成资源的浪费,同时对系统的性能会有所影响,

7.在VIVADO中可以用report_control_sets来寻找设计中所用到的控制信号,同时还可以报告出哪个原件使用了哪些控制信号,

8.复位:如果需要复位的话,那么它的扇出应该尽可能少,在VIVADO里面,初始化状态并不一定需要,缺省值为0;

尽可能的简化复位路径上的时序;

不管有没有复位都不应该让复位影响整个系统功能的仿真;

下图可以看出有没有复位的综合后的效果:

9.复位尽可能的使用高有效,因为XILINX的触发器复位就是高有效,如果使用低有效,会使得综合后的电路中多了一个额外的反相器,会多占用一个查找表,对整个系统的功耗和时序都会有影响

10.使用复位应该尽量避免使用全局复位,而是使用局部复位;

尽量避免异步复位,而使用同步复位;

尽可能使用高有效复位:

下面是同步高电平复位级联电路:

猜你喜欢

转载自blog.csdn.net/Real003/article/details/89461440