Внезапно я попытался заглянуть в какой-нибудь верилогский тестовый тест, который сильно использует $readmemh и $writememh. Я понял, что он в основном читает в памяти и пишет в память. Я буду рад, если вы укажете на некоторые ресурсы, связанные с этими процедурами. PS: Я искал в google без успеха. (Я очень... очень новый для Verilog)
$ readmemh $writememh связанные ресурсы
Ответ 1
Я согласен, что не слишком легко найти что-то о readmem/writemem. Вы можете найти здесь немного: http://fullchipdesign.com/index_files/readmemh.htm
Во всяком случае, не так много сказать об этих функциях, синтаксис:
$readmem[hb]("File",ArrayName,StartAddr,EndAddr)
$writemem[hb]("File",ArrayName,StartAddr,EndAddr)
Verilog очень разборчив в отношении формата файла, количество бит в текстовом файле должно соответствовать количеству бит в массиве.
Я рекомендую вам немного поиграть, указав массив, заполнив его записью с помощью writeememh/writememb и затем распечатав его.
Что-то вроде этого должно начаться (не проверено!).
integer i;
reg [7:0] memory [0:15]; // 8 bit memory with 16 entries
initial begin
for (i=0; i<16; i++) begin
memory = i;
end
$writememb("memory_binary.txt", memory);
$writememh("memory_hex.txt", memory);
end
Ура!
Ответ 2
Чтение HEX файла будет работать следующим образом:
integer i;
reg [7:0] memory [0:15]; // 8 bit memory with 16 entries
initial begin
for (i=0; i<16; i++) begin
memory = i;
end
$readmemh("memory_binary.txt", memory);
end