在线咨询 切换到宽版
eetop公众号 创芯大讲堂 创芯人才网

 找回密码
 注册

手机号码,快捷登录

手机号码,快捷登录

搜帖子
查看: 16218|回复: 13

[求助] 请各位牛人帮忙,Quartus II在用hex初始化rom问题

[复制链接]
发表于 2013-9-16 10:40:16 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

×
各位Quartus II 大神,小弟在 使用rom时,出现了Error: Can't read Memory Initialization File or Hexadecimal (Intel-Format) File atan_data.hex for ROM instance . If the file exists, it is not in correct format. 网上搜索了下,都不怎么明确,不知道如何解决。第一次用rom来 实现 查找表,先说一下我的步骤,如下:1、用matlab生成atan的对应序列,然后创建 .mif文件,再用Quartus II生成对应的 .hex文件;
2、在Quartus II中 tool--->MegaWizard........  等创建rom,用.hex文件初始化
3、在自己写 atan.v程序时,例化atan_rom.v模块,然后start compilation,就出现这个问题了

第一次用,不知道这样用rom步骤对不,还望大神指点!(我的目的:把反正切数据存到 rom中,然后进行查表)
 楼主| 发表于 2013-9-16 11:17:38 | 显示全部楼层
解决了,,用mif文件就好了!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-16 13:59:28 | 显示全部楼层
额,又出问题了!
虽然用 mif 可以解决上面问题,但是在 modelsim仿真时,为何例化的 rom 产生的结果 全是0 啊,又搞不懂了!这是为什么??
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-17 10:30:01 | 显示全部楼层
哎,发个帖子,只有人看,都没人回复,只能自己顶吧!

上面modelsim不能访问IP内核,所以不能用modelsim仿rom, 需要load到FPGA上才能验证。
回复 支持 反对

使用道具 举报

发表于 2013-9-18 09:45:00 | 显示全部楼层
在Quartus II环境下调用 modelsim 是可以仿真的吧
回复 支持 反对

使用道具 举报

发表于 2013-9-18 11:09:36 | 显示全部楼层
回复 4# 浩然若枫


   无论是仿真还是FPGA验证,都是用RAM来模拟ROM的行为。MegaWizard创建的rom都会调用Altera内部的ram model(在rom代码中可以查到该ram model例化名称,以及你创建rom时设置的初始化mif文件名),该model内可以清楚的看到mif文件是如何被读取的。如果你给定了正确的mif文件,仿真工具时是可以初始化rom的,不会出现你说的rom全0的情况。仔细检查你的mif文件路径和文件名。
回复 支持 反对

使用道具 举报

发表于 2013-9-19 00:54:42 | 显示全部楼层
在FPGA時要使用mif file. 若在simulation時就要看你的testbench了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-19 09:00:30 | 显示全部楼层
回复 6# rvnistelrooy
又看了一下,应该是没错,还是一样的结果,不知道怎么搞的??[\n]
mif文件应该没错,是用matlab生成 content...end 之间的内容,大致如下(数据太多,列举一部分):WIDTH=10;
DEPTH=1024;

ADDRESS_RADIX=UNS;
DATA_RADIX=UNS;

CONTENT
BEGIN
0 : 0 ;
1 : 1 ;
2 : 2 ;
3 : 3 ;
4 : 4 ;
5 : 5 ;
6 : 6 ;
7 : 7 ;
8 : 8 ;
9 : 9 ;
10 : 10 ;
.      .
(略)
.      .
1023:804;
END;


这是生成的rom程序:
`timescale 1 ps / 1 ps
// synopsys translate_on
module atan_rom (

address,

clock,

q);


input
[9:0]  address;

input
  clock;

output
[9:0]  q;
`ifndef ALTERA_RESERVED_QIS
// synopsys translate_off
`endif

tri1
  clock;
`ifndef ALTERA_RESERVED_QIS
// synopsys translate_on
`endif


wire [9:0] sub_wire0;

wire [9:0] q = sub_wire0[9:0];


altsyncram
altsyncram_component (

.clock0 (clock),

.address_a (address),

.q_a (sub_wire0),

.aclr0 (1'b0),

.aclr1 (1'b0),

.address_b (1'b1),

.addressstall_a (1'b0),

.addressstall_b (1'b0),

.byteena_a (1'b1),

.byteena_b (1'b1),

.clock1 (1'b1),

.clocken0 (1'b1),

.clocken1 (1'b1),

.clocken2 (1'b1),

.clocken3 (1'b1),

.data_a ({10{1'b1}}),

.data_b (1'b1),

.eccstatus (),

.q_b (),

.rden_a (1'b1),

.rden_b (1'b1),

.wren_a (1'b0),

.wren_b (1'b0));

defparam

altsyncram_component.clock_enable_input_a = "BYPASS",

altsyncram_component.clock_enable_output_a = "BYPASS",

altsyncram_component.init_file = "../atan/atan_data.mif",

altsyncram_component.intended_device_family = "Stratix II",

altsyncram_component.lpm_hint = "ENABLE_RUNTIME_MOD=NO",

altsyncram_component.lpm_type = "altsyncram",

altsyncram_component.numwords_a = 1024,

altsyncram_component.operation_mode = "ROM",

altsyncram_component.outdata_aclr_a = "NONE",

altsyncram_component.outdata_reg_a = "CLOCK0",

altsyncram_component.widthad_a = 10,

altsyncram_component.width_a = 10,

altsyncram_component.width_byteena_a = 1;


endmodule
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-19 09:04:17 | 显示全部楼层
回复 5# fxl090305002

我就是在Quartus II下调用的altera-Modelsim,不行啊? 还需要什么设置吗? 我写的其他工程可以仿,唯独这个结果都是0。不知道为啥
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-19 09:06:43 | 显示全部楼层
回复 7# kka

测试程序很简单的,就是给了几个地址,看看是不是输出对应的值。不过输出全是0.
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条


手机版| 小黑屋| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-9-14 07:06 , Processed in 0.019794 second(s), 6 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表