相對於簡單的仿真,復雜的仿真是指由多個文件、甚至調用了IP核、使用tcl腳本進行的仿真。其實仿真步驟跟圖形化的差不多,只不過每一步用腳本寫好,然后再在軟件里面run一下,主要過程就是:
1、准備好各種源文件(機械操作)。
2、修改modelsim工作路徑,創建modelsim工程文件(機械操作)。
3、書寫modelsim腳本
4、運行腳本,執行仿真
上面的步驟中,最主要的就是第三步了,書寫腳本是很重要的。下面我將按照上面的步驟,聯合Altera公司(已經被Intel收購)的Quartus II 進行仿真一個IP核,這個IP核是ROM核,仿真出一個正弦波形。
=====================================================================
①為了規范設計,我使用下面的文件管理結構:



②根據上面的管理目錄,創建文件夾

=====================================================================
然后就開始仿真之旅:
1、准備好源文件
這一步要用到的是QII軟件、matlab軟件。
使用過ROM核的都知道,需要一個初始化的文件進行初始化,這里的初始化文件使用matlab和QII生成。
(1)獲取ROM核的初始化文件。
①打開matlab之后,修改工作路徑:
雙擊matlab選擇路徑:
②創建.m腳本文件,進行編寫產生初始化文件的腳本(如.mif文件):
創建:

編寫:

腳本文件不解釋了,自己好好看一下內容吧,具體可以參考我的另一篇博文:http://www.cnblogs.com/IClearner/p/7273366.html。
保存:
,自己修改名字
③運行,產生.mif文件

得到了.mif文件
,
(2)QII產生IP核文件
①在進行產生IP核文件中,先進行轉換.mif文件,也就是把.mif文件轉換成.hex文件,這是因為,初始化ROM的文件有兩種,也就是.mif文件和.hex文件。然而modelsim只能讀取.hex文件,可是.hex文件的格式沒有.mif文件那么簡單,因此先產生.mif文件,再通過.hex文件進行轉換。
拷貝.mif文件到quarturs_prj下面的ipcore_dir中:

打開QII,打開.mif文件:


得到:

另存為.hex文件:

選擇成.hex格式,順便想改個名也是可以的:

然后就得到了.hex文件:

②創建工程,生成ROM IP核。
創建工程忽略,直接記錄生成ROM的過程(其實也可以直接生成IP核而不創建工程):
先選verilog文件,再點...進行設置文件名/修改IP核。








這里就要注意了(注意上圖),這里有altera_mf文件,這個就是進行仿真ROM核時需要的仿真文件。

OK,ROM IP核就生成了:

③創建,設計.v文件和測試腳本文件


2、修改modelsim工作路徑,創建modelsim工程文件
所以的源文件都准備好了之后,就開始創建工程文件了
①這里創建工程的路徑跟簡單使用modelsim的操作差不多,不再詳述:關閉工程,改變modelsim工作路徑(工作路徑選到sim文件夾里面),創建工程之后,彈出
這個。
但是到這里的時候就不一樣了:不添加任何的文件,直接關閉。
然后進行下面的操作(這些操作都是為了能夠得到仿真波形所設置的):
②首先,根據仿真所要的庫,進行移植庫文件跟.hex文件到sim目錄中:

移植仿真需要的庫到sim中的altera_lib中:

注:仿真需要的庫如果不添加,或者modelsim讀取不到,就會有警告或者錯誤生成,到時候就需要根據提示信息進行修改;
仿真需要的庫可以在IP核.v文件中查看,也可以在設置IP核時查看,此外對於復雜的IP核,會有相應的tcl文件進行解釋,查看該tcl文件就可以找到需要添加哪些庫了:

3、書寫modelsim的tcl腳本



上面的.do文件可以參考我的另一篇博文:http://www.cnblogs.com/IClearner/p/7273441.html,主要有三點:
添加設計的仿真文件、添加庫文件、添加設計文件、添加IP核的.v文件
這一步主要就是添加源文件了,跟圖形化界面差不多,也可以用圖形化界面進行仿真IP核。(當文件相當多的時候,就建議用腳本了,這里用圖形化還是比較方便的,畢竟只有四個文件,但是用圖形化的時候,要注意那些初始化文件的位置!!;這里只是作為一個用腳本的示范)
4、在modelsim中進行運行.do文件

運行之后,沒有錯誤,就出現下面的波形了;

進一步用模擬的形式查看一下:

就看到了美美的正弦波了:

