微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > quartus ii 生成rom和ram嵌入oc8051

quartus ii 生成rom和ram嵌入oc8051

时间:10-02 整理:3721RD 点击:
用quartus ii 生成rom和ram嵌入oc8051,将keil下生成的HEX文件写入rom,目的想实现hex指定功能。
现在的问题是怎么将这个hex写入rom。看到这么两条语句,可以写入,但是不是很理解。
$readmemb("test.pro",t_rom.memory); //t_rom是实例化名,memory不知道是不是后缀名。
$readmemb("test.dat",t_ram.ram); //这条暂时用不到
还有这些语句是在tb文件里加入的吧!

这两条语句只是调用系统函数,仿真还可以,实际用起来建议你看看例化ROM的过程,期间有一个选项mem ini,看看

生成ROM的时候,指定一个.hex文件.这样仿真的时候,把.hex文件放到当前目录下即可.
这个.hex,必须每行一个word
你用oc8051的话,必须对Keil生成的.hex进行格式转换,转成每行一个word的格式.


不知道你是不是说的quartus ii里面生成ip核的时候,那个里面是添加过hex文件的!

megawizard生成的时候,仔细看看.有指定memory initialize的地方.


有没有别的方法呢?
有这么条语句:
$readmemb("......\init.in",buff);//buff为定义寄存器
可以在全编译时,将程序写入rom!
要是每次写程序都要从头生成rom,会不会太麻烦了!



   是的,哥们在FPFA上验证的怎么样了?


还是搞不定!
我说说我的思路你看对否。
keil里写了给p0口赋(96h)值点亮led的汇编,生成hex。在生成rom ip核时调用刚才生成的hex文件,由于程序简单再没有其他数据,所以就没管ram。
在管教分配时,把p0_o赋在了FPGA板上的led(这里的p0口没有例话,所以会有p0_i和p0_o),生成sof,烧入板中,led常亮。没有实现控制点亮,不知道这样做能否?

每次写程序,只要重新生成.hex. 而并不需要重新生成ROM
Altera的ROM模型有点小复杂,你直接readmemb不一定行.


readmemb试过了不行。
我是在定制rom时,倒数第三步要求加入初始化文件的。不知道还能在哪里写入初始化文件?求赐教~

在那里加入初始化文件,那个初始化文件,只是告诉.hex文件的位置.这个.hex并没有合并到模型之中,这个跟Xilinx是不同的.
仿真的时候,altera ROM/RAM模型里面有读.hex文件来初始化的VHDL/verilog子程序.
所以你生成的时候,指定一次就可以了.指定的时候,最好不加路径.这样仿真的时候,会在当前目录下读.hex文件.
所以ROM/RAM只要生成一次,之后只要更新.hex.


哦,这样啊!只要每次替换hex就行了。
现在altera rom仿真读不出初始化的数据,所以目前也没办法验证。先默认正确吧,要不然每次初始化rom都要生成一次rom怪麻烦的!
多谢!

$readmemb 只给tb用的,无法综合
我正在给OC8051增加调试接口,而且是开源的,可以从Keil uVision的主界面下载程序,调试程序
http://bbs.eetop.cn/thread-390441-1-1.html

$readmemb是仿真用的。
工程里面可以考虑修改ROM ipcore的参数INITFILE。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top