【发布时间】:2020-10-19 16:50:35
【问题描述】:
我正在尝试在 Verilog 中定义一个 32 位宽 32 位深的寄存器文件。如何在有/没有 for 循环的情况下将所有值预设为零或我想要的任何值?
这是我的代码,我试过但失败了:
module register_file(rna, rnb, qa, qb);
input [4:0]rna;
input [4:0]rnb;
output [31:0]qa;
output [31:0]qb;
genvar i;
reg [31:0]registers[0:31];
assign registers[0]=32'b0;
registers[1]=32'b0;
registers[2]=32'b0;
registers[3]=32'b0;
endmodule
【问题讨论】:
-
如何方便地预设所有寄存器值。修复语法错误或编写完全不同的代码都可以。
-
对不起,我是新来的。
-
如果所有
registers'位都将在同一个always中驱动,则在第一个if子句中放置一个for循环,registers'地址为循环变量。这样,它适用于其中每个字具有相同预设/重置值的寄存器文件。如果您要为每个单词预设不同的值,最好使用自定义方法。 -
是的,我了解到 for 循环应该放在一个块中,就像总是和初始一样。否则可能会发生错误。