#verilog #ram
Вопрос:
`шкала времени 1нс / 1пс
память данных модуля( входной [31:0] адрес, входные [31:0] Записанные данные, входные MemRead, входные MemWrite, выходные [31:0] Данные чтения );
reg [0:31] mem[15:0]; mem[0] = 32'haaaaaaaa; mem[1] = 32'haaaaaaaa; mem[2] = 32'haaaaaaaa; mem[3] = 32'haaaaaaaa; mem[4] = 32'haaaaaaaa; mem[5] = 32'haaaaaaaa; mem[6] = 32'haaaaaaaa; mem[7] = 32'haaaaaaaa; mem[8] = 32'haaaaaaaa; mem[9] = 32'haaaaaaaa; mem[10] = 32'haaaaaaaa; mem[11] = 32'haaaaaaaa; mem[12] = 32'haaaaaaaa; mem[13] = 32'haaaaaaaa; mem[14] = 32'haaaaaaaa; mem[15] = 32'haaaaaaaa;
начать
process(MemWrite, MemRead) // pulse on write begin if (MemWrite = '1' ) then DM( ( to_integer(unsigned(Address)) - 268500992)/4 lt;= WriteData; end if; if ( MemRead = '1') then ReadData lt;= DM( ( to_integer(unsigned(Address)) - 268500992 ) /4 ); end if;
Я отлаживаю этот код и не могу понять, почему строки не работают:
reg [0:31] mem[15:0]; mem[0] = 32'haaaaaaaa; mem[1] = 32'haaaaaaaa; mem[2] = 32'haaaaaaaa; mem[3] = 32'haaaaaaaa; mem[4] = 32'haaaaaaaa; mem[5] = 32'haaaaaaaa; mem[6] = 32'haaaaaaaa; mem[7] = 32'haaaaaaaa; mem[8] = 32'haaaaaaaa; mem[9] = 32'haaaaaaaa; mem[10] = 32'haaaaaaaa; mem[11] = 32'haaaaaaaa; mem[12] = 32'haaaaaaaa; mem[13] = 32'haaaaaaaa; mem[14] = 32'haaaaaaaa; mem[15] = 32'haaaaaaaa;
Заранее спасибо.
Комментарии:
1. Пожалуйста, проясните вашу конкретную проблему или предоставьте дополнительные сведения, чтобы выделить именно то, что вам нужно. Поскольку это написано в настоящее время, трудно точно сказать, о чем вы просите.
Ответ №1:
Я собираюсь предположить, что вы пытаетесь инициализировать массив. Вы можете сделать это, используя этот синтаксис:
reg [0:31] mem[15:0] = '{ 32'haaaaaaaa, 32'haaaaaaaa, 32'haaaaaaaa, 32'haaaaaaaa, 32'haaaaaaaa, 32'haaaaaaaa, 32'haaaaaaaa, 32'haaaaaaaa, 32'haaaaaaaa, 32'haaaaaaaa, 32'haaaaaaaa, 32'haaaaaaaa, 32'haaaaaaaa, 32'haaaaaaaa, 32'haaaaaaaa, 32'haaaaaaaa};