2016-03-24 2 views
-3

Я пишу программу Verilog для имитации передачи памяти в Temp, но у меня появилось много ошибок, помогите пожалуйста.Ошибки кода памяти в Verilog

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

Какие ошибки? Цикл for должен быть в начальном или всегда блоке. – toolic

+0

Эта ошибка для Temp = mem [i} Процедурное присвоение нерегистрируемой temp не разрешено, левая сторона должна быть reg/integer/time/genva, –

+0

Для хранения/хранения некоторых данных 'reg' должен использоваться. Любые задания должны выполняться в процедурных блоках. Обратитесь (http://stackoverflow.com/questions/5360508/using-wire-or-reg-with-input-or-output-in-verilog) для получения информации о реестре и использовании проводов. – sharvil111

ответ

0

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; 

с) Этот код должен идти в процедурном блоке, либо 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. Если вы собираетесь синтезировать это, вы далеко от рабочего решения.

Следует, однако, подчеркнуть, что это всего лишь предложения. Невозможно полностью исправить ошибки в коде, чье намерение дизайна неизвестно.

Смежные вопросы