文章详情

ID: 1060.
案例类型: 常问问题
类别:
相关:
家庭: 所有FPGA

搜索答案数据库

我有一个3级移位寄存器,软件始终在双端口RAM中实现它,如何避免基于RAM的移位寄存器?

以下是原始VeriLog代码:

reg [6:0] shft_reg1,shft_reg2,shft_reg3;
总是@(posedge pclk)开始
shft_reg1 <= din;
shft_reg2 <= shft_reg1;
shft_reg3 <= shft_reg2;
结尾

我想将这些转移组件保留为寄存器。

解决方案1:

合成工具将基于某些标准确定是否将顺序移位寄存器作为寄存器,分配-RAM或块RAM实现。用户可以通过指定syn_ramstyle或syn_srlstyle属性来选择不同的实现。该属性可以全局应用于模块或RAM实例。举些例子:

模块(...)/ *综合syn_ramstyle =“block_ram”* /;

或者

reg [3:0] regbank [15:0] / *综合SYN_SRLSTYLE =“寄存器”* /;

有关语法和属性值的更多详细信息,请参阅联机帮助同步参考手册。

解决方案2:

替代解决方案是使用SYN_KEEP属性来保留这些寄存器信号。Synplify将自动实现换档组件作为寄存器。
与大多数网站一样,我们使用cookie和类似的技术来增强您的用户体验。我们还允许第三方在我们的网站上放置Cookie。通过继续使用本网站,您同意使用cookie,如我们所述Cookie政策