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