我编写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
答案 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)此代码需要进入程序块,initial
或always
。这取决于您的设计意图 - 我无法从您的代码片段中说出这一点。我们假设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
。如果你打算合成这个,那么你离开工作的解决方案还有很长的路要走。