FPGA中ROM调用.mif文件和.hex文件要注意的问题(一)


 

经过一个半小时的折腾,终于弄清了ROM调用.mif文件和.hex文件的区别,所以备份下来,以供后面翻阅。

  一些原始数据需要满足断电不丢失的的需求,要存储在ROM里,而在FPGA中,一般存入ROM中的文件格式有.mif、.hex、.coe这三种格式,.hex、.coe格式一般是用于Xilinx版本,.mif、.hex格式一般用于altera版本的ROM。

  在这里针对altera版本的ROM所使用的.mif、.hex格式在调用时注意他们的不同。以生成一个正弦波为例。

                    图一 (a)  

                    

                                图一(b)

图一为调用.mif格式所产生的modelism仿真中ROM读取的数据以及仿真波形,显然,波形只有一半,这是因为当.mif中的数据是正时,modelsim是能够支持的,当数据负数时,modelsim无法读取,就会将数据默认为0;所以会在modelism出现以下内容:

# ERROR: rom_mif_sin12w10d.mif, line 257, Invalid Altera-mif record.

表明从257个数据以后,mif文件里的数据没有读取。所以图一(a)可以看出,从257以后,数据全为0。

图二是调用.hex格式所产生的modelism仿真中ROM读取的数据以及仿真波形,显然,从图二(a)中可以看出从ROM读取的数据是完整的,所以仿真的波形图也是完整的。这是因为hex文件在存储负数时,是按照补码的形式存的。所以一般使用ROM调用,推荐使用.hex文件。

 

                    图二(a)

               

                    图二(b)

  如果有负数还要使用.mif文件的话,可以将.mif文件里的数据格式改为二进制,modelism仿真中也可以从ROM进行正确读取。为了省事,一般最好直接就使用.hex文件,这样altera版本和Xilinx版本的ROM都可以直接调用,而且不用考虑.mif格式中的负数问题。

  就先写到这里。继续加油!endure!


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM