verilog系统任务读写文件的使用

参考https://www.cnblogs.com/pengwangguoyh/articles/3167498.html

$readmemb,$readmemh,$fopen,$fdisplay;基本上就可以完成对文件的读写操作。

一、读任务

在verilog语言中有两个系统任务$readmemb,$readmemh可以用来从文件中读取数据到存储器中。这两个任务可以在仿真的任何时刻被执行使用,其使用方法如下:$readmemb

1,$readmemb("<数据文件名(路径地址和文件名)>",<存储器名>);

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

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

$readmemh

4,$readmemh("<数据文件名(路径地址和文件名)>",<存储器名>);

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

5, $readmemh("<数据文件名>",<存储器名>,<起始地址>,<结束地址>);

这里需要注意的是:

1,存储器的空间要足够,如设定[7:0] remember[0:15];即是初始化了一个15个字长为8位的存储器;

2,文件中的数据是一次读到寄存器中的,仿真中通常使用数据文件来做信号源。并且读数据总是从文件起始地址读到结束地址结束,存储器容量要足够;

3,文件应为标准数据文件,如果文件只存放数据就默认第一个数据地址为初始地址;若第一个数据设定

@002

11111111 10101011

@004

10xz0011 1100101x

第0,和第1个数据没有写,系统读进存储器时默认为 xxxx_xxxx;

对002写 11111111,对003写10101011,对004写10xz0011 ,对05写1100101x

4,文件若只写文件名需要将文件放置在默认文件路径下,可以通过modelsim->file->changedirectory来更改。

二、写任务

这里写任务用$fopen和$fdisplay两个系统任务完成,其中前者用来得到文件句柄,所谓句柄就是用来打开这个文件的读写通道,这里笔者在modelsim环境下试验了一下一旦用$fopen打开文件就会将文件清空。因此要读文件最好用$readmemb任务,写文件再用$fopen,注意最好新建个新文件来写,以免重要数据被清空。

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值