QUARTUS II(7.2) 中Memory Initialization File(.mif) 的一些讨论

博主在使用Quartus II 7.2时遇到Memory Initialization File(.mif)的数据宽度错误。问题在于DEC数据类型的数据范围限制在-(2^(width -1) -1)到2^(width -1) -1,而不是预期的2补码范围。ALTERA官方解释此问题在7.2 SP1已修复,并指出DEC类型的最大值为2^(width -1),最小值为-2^(width -1)。解决方法是将DATA_RADIX设置为UNS。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  这几天想做一个简单的查找表的数控振荡器(NCO),于是自己用C语言写了一个Memory Initialization File(.mif)的生成文件,但是当DATA_RADIX是DEC(有符号整数)的时候,总是出现错误:
  Error: Data at line <number> exceeds the specified width (<number>) in the Memory Initialization File *.mif

  我一直认为DEC肯定是用2补码来编码的,那么它的数据范围应该是-2^(width -1) 到2^(width -1)-1,但是实际发现数据范围只能是-(2^(width -1)-1)到2^(width -1)-1,所以这个到底是什么编码方式呢?难道是1补码吗?但是从lpm_rom的q输出来看,的确是2补码,这样就奇怪了,2补码的范围为什么给限制了,没有-2^(width -1) 呢?

  请求大家帮忙看看以上到底是为什么。我是一个初学者,很多地方还不太明白,请大家多多指点了!

  附录1:ALTERA对这个问题的解释

  http://www.altera.com.cn/support/kdb/solutions/rd11022007_637.html

  解决方案ID: rd11022007_637

  最后修改: 2007 年11 月14 日 

  产品类别: 设计软件

  产品领域: 综合/网表检查

  产品子领域: Quartus II 综合
  问题
  Error: Data at line <number> exceeds the spe

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值