Verilog中的内存代码错误

时间:2016-03-24 20:53:29

标签: verilog

我编写Verilog程序来模拟内存传输到Temp,但是我遇到了很多错误,请帮忙。

wire    [64:0] temp,mem [0:256];
wire [15:0]       w0, w1, w2, w3;
wire    [7:0]       block_nr;
integer i ;



for ( i=0; i <3; i = i + 1) begin
   temp = mem [i];
   data_mem [i] = {block_nr, w0,w1, w2, w3 };
   block_nr = block_nr +1;


end

1 个答案:

答案 0 :(得分:0)

5您的代码中存在许多错误。以下是一些:

a)而不是:

wire    [64:0] temp,mem [0:256];

也许你的意思是这个?

wire    [64:0] mem [0:256]; // this might be a reg, too, one cannot tell from your code snippet
reg     [64:0] temp;

i)我认为您不认为temp是65x257阵列以及mem?你的意思是“64”吗?还是“63”?或者(见下文)“71”?你的意思是“256”吗?还是“255”?

ii)您无法从程序块中分配wire

b)这也需要reg,因为(再次)你不能从程序块中分配wire

reg    [7:0]       block_nr;

c)此代码需要进入程序块,initialalways。这取决于您的设计意图 - 我无法从您的代码片段中说出这一点。我们假设initial

initial begin
 for ( i=0; i <3; i = i + 1) begin
     temp = mem [i];
     data_mem [i] = {block_nr, w0,w1, w2, w3 };  // what is "data_mem"? Did you mean "mem"?
                                                 // if you did mean "mem", did you notice that "{block_nr, w0,w1, w2, w3 }" is 72 bits wide?
     block_nr = block_nr +1;
  end
end

如果要合成,则不能使用initial。如果你打算合成这个,那么你离开工作的解决方案还有很长的路要走。

但是,我必须强调,这些仅仅是建议。无法完全纠正设计意图未知的代码中的错误。