关于Quartus II调用ROM IP核时的一连串问题,纠结两天了~求高人解答

2019-07-15 23:11发布

最近做仿真需要用到Quartus ii里的ROM IP核,为了验证功能,我新建了工程,生成IP核,数据深度512,位宽8bit,用matlab产生512个随机整数,新建hex文件,将512个随机数粘贴进hex文件表格里,保存后导入ip核。编写v文件和testbench代码,想在测试时根据addr依次读出rom中存储的随机数。结果仿真波形如下,没报错:
                              IMG_20151222_104356.jpg

输出波形完全看不懂。。。
后来我又生成了mif文件,直接在已生成的ip核中修改了初始化文件为mif文件,结果点击Finish按钮时就开始报错,
IMG_20151222_102740.jpg
实在弄不动了,请教大神是什么原因~
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
小梅哥
1楼-- · 2019-07-16 03:15
怀疑你的hex路径有问题,需要保存在工程根目录才能被识别
wzq0806
2楼-- · 2019-07-16 04:51
 精彩回答 2  元偷偷看……
hawke
3楼-- · 2019-07-16 09:05
涉及到一些细节问题,可能是你的文件格式问题,或者安装的软件问题;
像ram,rom这样的,可以采用代码映射的模块,不如直接用verilog,这样描述问题更清晰。如:
module rom
#(parameter DATA_WIDTH=8, parameter ADDR_WIDTH=9)
(
        input [(ADDR_WIDTH-1):0] addr,
        input clk,
        output reg [(DATA_WIDTH-1):0] q
);

        reg [DATA_WIDTH-1:0] rom[2**ADDR_WIDTH-1:0];

        initial
        begin
                $readmemb("rom_init_binary.txt", rom);
        end

        always @ (posedge clk)
        begin
                q <= rom[addr];
        end
endmodule

数据文件这里用的是二进制,每行一个数据即可。
wzq0806
4楼-- · 2019-07-16 11:34
hawke 发表于 2015-12-29 09:19
涉及到一些细节问题,可能是你的文件格式问题,或者安装的软件问题;
像ram,rom这样的,可以采用代码映射的模块,不如直接用verilog,这样描述问题更清晰。如:
module rom

多谢大神!回去试试
wzq0806
5楼-- · 2019-07-16 11:58
还是不对啊,是不是读入的txt文件有什么特殊的格式要求啊?modelsim报错fail to open readmem file"xxx.txt"in read mode。我文件就放在工程目录下的。。。
wzq0806
6楼-- · 2019-07-16 12:35
搞出来了,是文件路径描述不对,多谢各位大神

一周热门 更多>