Verilog读写文件
来源:互联网 发布:windows软件 编辑:程序博客网 时间:2024/06/06 04:27
在通过编写Verilog代码实现ram功能时,需要自己先计算寄存器的位数和深度再编写代码。
而如果需要在编写的ram中预置值的话,就需要使用Verilog语言编写程序读写文件,来将相应的数据赋给寄存器。
这里给出Verilog实现ram的代码:
module dpram( rclk, raddr, dout, wclk, we, waddr, din ); parameter aw = 16; //address widtth parameter dw = 12; //data address input rclk; //read clock input [aw-1:0] raddr; //read address output [dw-1:0] dout; //data output input wclk; //write clock input we; //write enable input [aw-1:0] waddr; //write address input [dw-1:0] din; //data input reg [dw-1:0] mem[(1<<aw)-1:0]; //block-ram reg [aw-1:0] ra; //register read address always @(posedge rclk) begin ra <= #1 raddr; end assign dout = mem[ra]; always @(posedge wclk) begin if(we) mem[waddr] <= #1 din; end//读取mem文件存取程序中的mem寄存器 initial $readmemh("bmp_64K.mem",mem);endmodule
下面的程序定义了ram中寄存器的位数和深度,决定了ram的大小:
reg [dw-1:0] mem[(1<<aw)-1:0]; //block-ram
整段程序不是很复杂,其他部分主要是用于实现ram的读写控制功能,这里不做赘述。
Verilog实现读写文件功能的部分代码如下:
//读取mem文件存取程序中的mem寄存器 initial $readmemh("bmp_64K.mem",mem);
这段程序的功能是从文件名是“bmp_64K.mem”的文件中读取其中的数据并置入前面定义的mem寄存器,即将数据置入ram中。
$readmemh("file_name.xxx",data)
就是将file_name.xxx中的数据读入到data数组中。
使用格式有6种:
$readmemb("<数据文件名>",<存贮器名>); $readmemb("<数据文件名>",<存贮器名>,<起始地址>); $readmemb("<数据文件名>",<存贮器名>,<起始地址>,<结束地址>); $readmemh("<数据文件名>",<存贮器名>); $readmemh("<数据文件名>",<存贮器名>,<起始地址>); $readmemh("<数据文件名>",<存贮器名>,<起始地址>,<结束地址>);
$readmemb要求数据格式必须是二进制形式,$readmemh则要求数据格式必须是16进制格式。
下面一些用法格式:(摘自https://wenku.baidu.com/view/81075c1f964bcf84b9d57b57.html)
1,打开文件
integer file_id; file_id = fopen("file_path/file_name");
2,写入文件
//$fmonitor只要有变化就一直记录 $fmonitor(file_id, "%format_char", parameter); eg:$fmonitor(file_id, "%m: %t in1=%d o1=%h", $time, in1, o1);
//$fwrite需要触发条件才记录 $fwrite(file_id, "%format_char", parameter);
//$fdisplay需要触发条件才记录 $fdisplay(file_id, "%format_char", parameter); $fstrobe();
3,读取文件
integer file_id; file_id = $fread("file_path/file_name", "r");
4,关闭文件
$fclose(fjile_id);
5,由文件设定存储器初值
$readmemh("file_name", memory_name"); //初始化数据为十六进制 $readmemb("file_name", memory_name"); //初始化数据为二进制
0 0
- verilog读写文件测试
- verilog文件读写
- Verilog读写文件
- verilog读写文件(整理)
- verilog中读写文件操作
- Verilog 读写文件(整理二)
- .verilog系统任务读写文件$fopen和$fdisplay的使用
- verilog系统任务对文件的读写操作
- verilog存储器读写操作
- ALTERA FIFO 读写verilog代码
- 基于verilog的EEPROM读写
- Verilog文件读取
- verilog testbench中 文本读写的操作
- [verilog]用文件初始化ROM
- verilog文件操作代码(转)
- verilog多文件工程设计方法
- 文件读写、剪贴板读写
- 读写文件
- 理解Docker单机容器网络
- laravel 调用html文件
- 计蒜客模拟赛
- 独木桥
- 工具类—SharedPreference工具类
- Verilog读写文件
- git和GitHub
- 带着女友去看海——青岛
- 1315 合法整数集
- Bootstrap简介
- 4、Linux时间编程
- Java反射初识
- bootstrap安装配置
- Spring使用实例工厂方法创建Bean(一)