FPGA|CPLD|ASICwilliam hill官网
直播中

wzq0806

9年用户 36经验值
擅长:RF/无线
私信 关注
[问答]

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

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

输出波形完全看不懂。。。
后来我又生成了mif文件,直接在已生成的ip核中修改了初始化文件为mif文件,结果点击Finish按钮时就开始报错,
IMG_20151222_102740.jpg
实在弄不动了,请教大神是什么原因~
` IMG_20151222_104356.jpg

回帖(7)

梅雪松

2015-12-23 22:44:50
怀疑你的hex路径有问题,需要保存在工程根目录才能被识别
举报

wzq0806

2015-12-28 21:20:50
引用: 小梅哥 发表于 2015-12-23 22:44
怀疑你的hex路径有问题,需要保存在工程根目录才能被识别

确实保存在根目录没问题
举报

hawke

2015-12-29 09:19:59
涉及到一些细节问题,可能是你的文件格式问题,或者安装的软件问题;
像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

2015-12-29 18:19:03
引用: hawke 发表于 2015-12-29 09:19
涉及到一些细节问题,可能是你的文件格式问题,或者安装的软件问题;
像ram,rom这样的,可以采用代码映射的模块,不如直接用verilog,这样描述问题更清晰。如:
module rom

多谢大神!回去试试
举报

wzq0806

2015-12-30 12:26:47
还是不对啊,是不是读入的txt文件有什么特殊的格式要求啊?modelsim报错fail to open readmem file"xxx.txt"in read mode。我文件就放在工程目录下的。。。
举报

wzq0806

2015-12-30 22:58:58
搞出来了,是文件路径描述不对,多谢各位大神
举报

houxiaoxiao

2015-12-31 09:45:53
我建议你看看小梅哥的视频第14讲吧,有这部分的内容非常详细
举报

更多回帖

发帖
×
20
完善资料,
赚取积分