0 前言
博主我查了很多资料,虽然会使用Verilog的readmemh和readmemh和readmemh和readmemb函数,可是,在vivado软件中怎么用?文件放在哪里?没有一篇文章提及。
花了几个小时,终于研究明白了,特此记录下来,也希望为后来者提供帮助。
对于函数使用的讲解,不再赘述,其他博主写的很好了,点此查看即可。
这里重点强调,文件放在哪里!
1. 两种文件访问方式
1.1 默认路径访问
reg [31:0] rom [31:0];initial $readmemh ( "rom.txt",rom);
对于上述表示方式rom.txt
,这个文件的位置,必须放在指定文件夹内
- 打开vivado工程文件的路径
进入sim
文件夹,然后依次进入sim_1
,behav
,xsim
- 在此文件夹内,建立
rom.txt
文件
在这里建立rom.txt
文件即可,之后仿真的时候,就可以正常调用数据了。
1.2 绝对路径访问
reg [31:0] rom [31:0];initial $readmemh ( "D:/myCollege/ComputerOrganization/VerilogDesign/test_readmemh/rom.txt",rom);
如上所示,直接给出文件的绝对路径,这样就可以任意设定rom.txt
文件的位置。
补充学习链接
注意:斜杠一定要是/
,直接复制过来的win路径不是这个,需要修改。
1.3 相对路径访问
这个与win和Linux的cd
命令,访问文件的方式一样,不再多说。
通过上面的指令,你就可以把数据文件放在最表面的位置,好找。
2 教训
- 大小写错了
- 报错没看懂
- 报错一直在找文件位置的问题,但是这玩意之前解决过阿……
首先,大小写不该错,但是真错了,是很难看的出来……
其次,报错含义:dataROm未声明
可能C++能看到,到Verilog咋就看不懂了??以后心态放平和。
找错注意:2个属性,这个不是,那就是另外一个
最后,文件位置之前解决了,还记录在本文,第31行一共就2个属性,非抓第一个不放干嘛。
好了,以后不要再犯这种愚蠢的错误了。