| ||
单个简易模块综合实现的结果,与整个工程实现的结果是很不同的。就高电平复位来讲(xilinx):
单个8bit寄存器高电平复位,会生成8个LUT来对rst_n做逻辑取反,变为高电平后再去复位FF.
但对整个工程而讲,会自动在最开始做一次逻辑取反,而后作为全局复位,因此并为浪费到LUT资源。
故不必在意高电平复位还是低电平复位。
为什么复位信号一般都使用高点平有效呢?
Xilinx 寄存器的SR控制端是高电平有效的。如果RTL代码采用了低电平有效的复位模式,综合器将在复位信号驱动寄存器SR控制端之前的插入一个反相器(interver)。你必须使用一个查找表(look up table)来实现反向器,以利用LUT的输入端口。低电平有效的控制信号带来的额外的逻辑可能拉长了执行时间(runtime),将导致更低的FPGA资源利用率,也将影响时序和功耗。
到底我想说点什么呢?尽可能的在HDL代码或者实例化的模块中使用高电平有效的控制信号。如果在设计中,你不能够改变这些控制信号的极性,你需要在代码的顶层文件反转这些控制信号。采用这种方式描述电路的话,这些反向器将被吸收到I/O逻辑中,而不需要使用额外的FPGA逻辑、路径。Tip 4: Active-high resets enable better device utilization and improveperformance.
备注: Altera貌似使用低电平有效的复位信号。