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
. Если вы собираетесь синтезировать это, вы далеко от рабочего решения.
Следует, однако, подчеркнуть, что это всего лишь предложения. Невозможно полностью исправить ошибки в коде, чье намерение дизайна неизвестно.
Какие ошибки? Цикл 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) для получения информации о реестре и использовании проводов. – sharvil111