发布时间:2023-11-30 11:00
在Verilog HDL程序中有两个系统任务 $readmemb 和 $readmemh,并用来从文件中读取数据到存储器中。
$readmemb("<数据文件名>",<存储器名>);
$readmemh("<数据文件名>",<存储器名>);
在这两个系统任务中,被读取的数据文件的内容只能包含:空白位置(空格、换行、制表格(tab)和form-feeds),注释行(//形式的和/*...*/形式的都允许)、二进制或十六进制的数字。
readmemb的简单使用:
module readmemb( );
// ------------------------------------------------------ //
reg [7:0] mem[0:7]; // 声明有8个8位的存储单元
reg [4:0] i;
initial
begin
// 读取存储器文件init.txt到存储器中的给定地址
$readmemb("init.txt", mem);
// 显示初始化后的存储器内容
for(i=0; i<=7; i=i+1)
$display("memory[%d] = %b",i, mem[i]);
end
// ------------------------------------------------------ //
endmodule
readmemh的简单使用:
module readmemh( );
// ------------------------------------------------------ //
reg [15:0] mem[0:7]; // 声明有16个8位的存储单元
reg [4:0] i;
initial
begin
// 读取存储器文件init.txt到存储器中的给定地址
$readmemh("init2.txt", mem);
// 显示初始化后的存储器内容
for(i=0; i<=7; i=i+1)
$display("memory[%d] = %h",i, mem[i]);
end
// ------------------------------------------------------ //
endmodule