拍摄集

readmemh 格式


这两天学习verilog语言时,对 $readmemb和 $readmemh怎么读文件里的数据产生了疑问,网上大多数资料都是inter下quartus里的描述【参考文档1】,也看到一篇vivado开发环境下的文档【参考文档2】,这里也就结合自己的学习汇总一下。


  • vivado中verilog里关于$readmemb和 $readmemh的使用方法
  • 格式与规则
  • 参考文档


在Verilog语法中,$readmemb和 $readmemh一共有以下六种用法:

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

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

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

(4)$readmemh(“<数据文件名>”,<存储器名>);

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

(6)$readmemh(“<数据文件名>”,<存储器名>,<起始地址>,<终止地址>);

这里说一下常见的第一种用法和第四种用法:
在vivado里面总共有两种方式实现对指定文件数据的阅读:

1、相对路径访问:就是把要目标文件放在vivado指定文件键里面,优点不需要特定说明文件位置,缺点就是文件只能放在指定位置下。具体的是在你所建工程的.sim文件夹,然后依次进入sim_1,behav,xsim

readmemh 格式_fpga开发

D:vivado_myselfproject_38project_38.simsim_1behavxsim文本内容如下:

readmemh 格式_fpga开发_02

程序如下:

然后行为仿真,控制台输出如下:

readmemh 格式_参考文档_03


2、绝对路径访问

可以把目标文件放在系统任意位置,但在 $readmemb和 $readmenh的调用语句里必须指明文件路径。

还是上面的file1文件,将其放在桌面。路径为:

readmemh 格式_数据_04

程序修改如下:

readmemh 格式_参考文档_05

输出结果如下:

readmemh 格式_readmemh 格式_06


然后$readmemh就是读十六进制数据,你比如还是读四位一组数据的话,哪里目标文件数据格式应该是像15a0这样的,在语言使用上和前面介绍的一样。

相关推荐