SystemVerilog/Verilog的testbench中文件的写入和读取操作

在Testbench中很可能需要文件的读写操作,在可综合的设计中也可能会用到文件写入。SystemVerilog/Verilog提供的文件写入读取方法并不多,主要有两类。

第一类是writememb/writememh/readmemb/readmemh,第二类是$fscanf/$fwrite。第一类用法简单,但是功能弱,文件读取也不支持多维数组;第二类用法复杂一点,功能相对强大,配合循环语句可以处理多维数组。

1. writemem[b|h]/readmem[b|h]

writemem[b|h]主要有以下用法:

(1)$readmemb("<数据文件名>",<存储器名>);

(2)$readmemb("<数据文件名>",<存储器名>,<起始地址>);

(3)$readmemb("<数据文件名>",<存储器名>,<起始地址>,<终止地址>);

其中起始地址和终止地址都是相对于“存储器名”指定的数据而言,而不是指写入文件时的位置。参考以下代码。

parameter WIDTH         = 8;
parameter INDEX0        = 16;
parameter FILE_PATH_B   = "E:/FPGA/PRACTICE/FileReadWrite/files/file_b.txt";
parameter FILE_PATH_H   = "E:/FPGA/PRACTICE/FileReadWrite/files/file_h.txt";
parameter FILE_PATH_F   = "E:/FPGA/PRACTICE/FileReadWrite/files/file_f.txt";
parameter FILE_PATH_HALF= "E:/FPGA/PRACTICE/FileReadWrite/files/file_half.txt";

reg     [WIDTH-1: 0]    dat0[INDEX0-1: 0], dat1[INDEX0-1: 0];
wire    [WIDTH-1: 0]    dat1_comp[INDEX0-1: 0];
reg     [WIDTH-1: 0]    dat0_read[INDEX0-1: 0];
integer i, j;
integer fid;

initial begin
    for( i
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值