$readmemh $writememh связанные ресурсы

внезапно меня заставляют заглянуть в некоторый код Verilog testbench, который сильно использует $readmemh и $writemh. Я понял, что он в основном читает на память и пишет на память. Я буду рад, если вы можете указать на некоторые ресурсы, связанные с этими процедурами. PS: Я искал в google без успеха. (Я очень ... очень новый для Verilog)

2 ответов


Я согласен, что не слишком легко найти что-то о readmem/writemem. Вы можете найти немного здесь: http://fullchipdesign.com/index_files/readmemh.htm

во всяком случае, не так много можно сказать об этих функциях, синтаксис:

$readmem[hb]("File",ArrayName,StartAddr,EndAddr)
$writemem[hb]("File",ArrayName,StartAddr,EndAddr)

Verilog очень разборчив в формате файла, количество бит в текстовом файле должно соответствовать количеству бит в массиве.

Я рекомендую вам немного "поиграть", определив массив, заполняя его данными, запишите его с помощью writememh / 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

Ура!


чтение шестнадцатеричного файла будет работать следующим образом:

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