5代碼中有很多錯誤。這裏有一些:
一)取而代之的是:
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;
我),我不認爲你的意思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
。如果你打算綜合這一點,你離工作解決方案還有很長的路要走。
但是我必須強調,這些僅僅是建議。完全糾正其設計意圖未知的代碼中的錯誤是不可能的。
什麼錯誤?您的for循環應該在初始塊或總是塊中。 – toolic
這個Temp = mem [i}的錯誤不允許程序分配給非註冊表temp,左邊應該是reg/integer/time/genva, –
爲了存儲/保存一些數據,reg必須使用。任何分配都必須在程序塊中完成。請參閱(http://stackoverflow.com/questions/5360508/using-wire-or-reg-with-input-or-output-in-verilog)瞭解有關reg和電線使用情況的信息。 – sharvil111