Я должен спроектировать сумматор, программный счетчик, память, часы и модуль тестового стенда.
Я предполагаю инициализировать из тестового стенда каждый адрес памяти с 0, а затем загрузить файл .hex, который У меня есть, который находится в том же каталоге, что и моя программа, в памяти. Текстовый файл выглядит так:
"... ...
20042000
000d2820
0c000013
... .. .... "
У меня просто проблемы с загрузкой файла text.hex в память. Вот мой код:
module testbench; //create the testbench
instruction_memory memory();
integer i;
initial begin
for(i=0; i<2048; i = i+1) begin
memory.mem[i] = 0;
end
end
initial begin
$writememh("text.hex",memory.mem);
end
integer m;
initial begin
for(m=0; m<2048; m = m+1) begin
$display(memory.mem[m]);
$display(m);
end
end
endmodule //end the testbench
module instruction_memory(); // creating the module that
//simulates the instruction //memory
reg[31:0]mem[0:2047];
endmodule //ending the instruction memory module
module clock(); //starting the clock module
endmodule //ending the clock module
module pc(); //starting the program counter module
endmodule // ending the program counter module
module adder();
endmodule // ending the adder module
Когда я запускаю его, мой вывод выглядит так:
0
1
0
2
0
3
...
...
0 2047
Почему он возвращает 0 вместо «000d2820» или какое-то другое слово?
Итак, я выполнил одно задание ... Я инициализировал память с 0, но не могу прочитать файл в нее. Как мне это сделать?
изменить: это мой код сейчас:
module testbench; //create the testbench
instruction_memory memory();
integer i;
initial begin
for(i=0; i<2048; i = i+1) begin
memory.mem[i] = 0;
end
end
initial begin
#100;
end
integer n;
initial begin
for(n=0; n<2048; n = n+1) begin
$display(memory.mem[n]);
$display(n);
end
end
initial begin
#100;
end
initial begin
$readmemh("C:\\Users\\19724\\Desktop\\spring2020\\DL\\programs\\program3\\text.hex",memory.mem);
end
initial begin
#100;
end
integer m;
initial begin
for(m=0; m<2048; m = m+1) begin
$display(memory.mem[m]);
$display(m);
end
end
endmodule //end the testbench
module instruction_memory(); // creating //the module that
//simulates the instruction //memory
reg[31:0]mem[0:2047];
endmodule //ending the instruction memory module
Этот код повторяет тот же вывод, что и выше ^ ..
0
1
0
2
..
..
0
2047
, за исключением двух раз, теперь у меня есть два цикла, отображающие выходное значение после инициализации до нуля и после "чтения шестнадцатеричного файла", я поместил это в кавычки, потому что по какой-то причине он не работает, даже если я написал абсолютное значение путь .. Кто-нибудь знает, почему он не читает мой шестнадцатеричный файл?