这几天想做一个简单的查找表的数控振荡器(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