Мне нужно загрузить память с некоторыми данными, изначально в двоичном формате. Я читал, что для этого можно использовать $readmemb, и есть даже способ сделать его синтезируемым.
Итак, я создал еще один модуль с именем RAM_IN (который не является модулем тестового стенда) и «подключил» его к верхнему модулю.
Прежде чем узнать о $readmemb, я использовал этот код:
initial
begin
in_ram [0] <= 32'b11111111_000000000000000000000000;
in_ram [1] <= 32'b10010111_000000000000000000000000;
in_ram [2] <= 32'b00110110_000000000000000000000000;
in_ram [3] <= 32'b00111110_000000000000000000000000;
in_ram [4] <= 32'b00111111_000000000000000000000000;
in_ram [5] <= 32'b00111110_000000000000000000000000;
end
Но мне слишком утомительно писать 100 таких чисел, поэтому я реализовал $readmemb следующим образом:
module RAM_IN (pix_val, indx);
input [0:5] indx;
output [31:0] pix_val;
reg [31:0] pix_val;
reg [31:0] in_ram [0:4];
always @ (indx)
pix_val = in_ram [indx];
initial
begin
$readmemb("in_ram.txt", in_ram);
end
Целью чтения этого файла является начальная загрузка 100 двоичных значений (которые имитируют интенсивность пикселей изображения 10x10) одно за другим в верхний модуль (который будет обрабатывать и выдавать результат позже...)
Я создал файл .txt, который выглядит точно так же
11111111000000000000000000000000
10010111000000000000000000000000
00110110000000000000000000000000
00111110000000000000000000000000
00111111000000000000000000000000
Когда я имитирую, modelim показывает мне память, заполненную xxxxxxxxxxxxxxxxx (все равно), похоже, что ничего не загружается в память.
Я не знаю, что я делаю неправильно. Скорее всего, это не расположение номеров в файле .txt. Может быть, потому что я собираюсь загрузить файл с $readmemb в другой модуль, который не является тестовым стендом?
PD: Моделирование этого процесса заполнения памяти я делаю только для практических целей, конечная цель состоит в том, чтобы поместить дизайн модуля Top в полноценную SoC, что, я думаю, я сделаю с помощью QSYS. Но я очень новичок в этом, поэтому я все еще учусь. Любая помощь будет высоко ценится!!!
reg [31:0] in_ram [0:4];
. - person Matthew Taylor   schedule 10.05.2016