1.modelsim仿真只支持.hex,並不支持.mif(Memory Initialzation File)。
2.在Matlab中生成.mif文件,然后再quartus中打開,轉換為hex格式后另存為。
3.讓modelsim支持hex,https://wenku.baidu.com/view/48e7216704a1b0717fd5dda0.html?re=view
4..hex文件要在modelsim工程下,還是quartus工程下???
以上是之前遇到這個問題時候在網上找到的解決方法,就先放着。
這個問題搞了兩天了,今天終於有些明白了,寫出來記錄一下。
一、modelsim能不能調用.mif文件。
對於這個問題,我的答案是能(網上有好多帖子都說modelsim只支持.hex,不支持.mif),其實持不支持的觀點也並不是錯了。下面我就來說說我的理解。
當.mif中的數據是非負數時,modelsim是能夠支持的,當存在負數時,modelsim就會將它默認作為0進行處理,並且給出常遇到的錯誤提示:
ERROR: sin.mif, line 2055, Invalid Altera-mif record.
這個提示指出了在.mif中出現的負數的位置,line 2055,你可以去.mif文件中查看這一行中的數據,或者是在這一行的附近,應該會是一個負數。之所以說modelsim支持.hex文件,是因為負數在存儲時,是按照補碼的形式存的,而.mif默認是按照十進制或者說是原碼進行存儲的。
二、rom仿真中出現的問題。
解決了上面的問題,那么再來看看如何在modelsim中調用rom。(如果你要存儲的數據中含有負數,那就生成.hex文件吧,生成的方法可以在參照文章開頭的2中那樣去處理)。
仿真rom無非是查找表中的數據,那么就會有地址和數據,上面解決了數據的問題,再來看看地址的處理。當你把存儲地址的變量聲明為reg類型時,切記要進行初始化,因為reg類型的數據,默認的初始值是不定的,即為x。(准備再寫一個介紹仿真時初始化的問題)
