我有一个三级移位寄存器,软件总是在双端口RAM中实现它,我如何避免基于RAM的移位寄存器?
下面是Verilog的原始代码:
Reg [6:0] shft_reg1, shft_reg2, shft_reg3;
总是@(posedge pclk)开始
shft_reg1 < =喧嚣;
shft_reg2 < = shft_reg1;
shft_reg3 < = shft_reg2;
结束
我想把那些移位组件保留为寄存器。
解决方案1:
综合工具将根据一定的条件决定是将顺序移位寄存器实现为寄存器、分布RAM还是块RAM。用户可以通过指定syn_ramstyle或syn_srlstyle属性来选择不同的实现。这些属性可以被全局地应用于模块或RAM实例。例子:
Module(…)/* synthesis syn_ramstyle="block_ram" */;
或
reg [3:0] regBank[15:0] /* synthesis syn_srlstyle="register " */; / /注册信息
有关语法和属性值的更多细节,请参阅联机帮助Synplify参考手册。
解决方案2:
另一种解决方案是使用syn_keep属性来保存这些寄存器信号。Synplify将自动实现移位组件作为寄存器。