相對於簡單的仿真,複雜的仿真是指由多個文件、甚至調用了IP核、使用tcl腳本進行的仿真。其實仿真步驟跟圖形化的差很少,只不過每一步用腳本寫好,而後再在軟件裏面run一下,主要過程就是:html
一、準備好各類源文件(機械操做)。測試
二、修改modelsim工做路徑,建立modelsim工程文件(機械操做)。spa
三、書寫modelsim腳本設計
四、運行腳本,執行仿真3d
上面的步驟中,最主要的就是第三步了,書寫腳本是很重要的。下面我將按照上面的步驟,聯合Altera公司(已經被Intel收購)的Quartus II 進行仿真一個IP核,這個IP核是ROM核,仿真出一個正弦波形。htm
=====================================================================blog
①爲了規範設計,我使用下面的文件管理結構:ip
②根據上面的管理目錄,建立文件夾get
=====================================================================軟件
而後就開始仿真之旅:
一、準備好源文件
這一步要用到的是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文件和測試腳本文件
二、修改modelsim工做路徑,建立modelsim工程文件
因此的源文件都準備好了以後,就開始建立工程文件了
①這裏建立工程的路徑跟簡單使用modelsim的操做差很少,再也不詳述:關閉工程,改變modelsim工做路徑(工做路徑選到sim文件夾裏面),建立工程以後,彈出這個。
可是到這裏的時候就不同了:不添加任何的文件,直接關閉。
而後進行下面的操做(這些操做都是爲了可以獲得仿真波形所設置的):
②首先,根據仿真所要的庫,進行移植庫文件跟.hex文件到sim目錄中:
移植仿真須要的庫到sim中的altera_lib中:
注:仿真須要的庫若是不添加,或者modelsim讀取不到,就會有警告或者錯誤生成,到時候就須要根據提示信息進行修改;
仿真須要的庫能夠在IP核.v文件中查看,也能夠在設置IP核時查看,此外對於複雜的IP核,會有相應的tcl文件進行解釋,查看該tcl文件就能夠找到須要添加哪些庫了:
三、書寫modelsim的tcl腳本
上面的.do文件能夠參考個人另外一篇博文:http://www.cnblogs.com/IClearner/p/7273441.html,主要有三點:
添加設計的仿真文件、添加庫文件、添加設計文件、添加IP核的.v文件
這一步主要就是添加源文件了,跟圖形化界面差很少,也能夠用圖形化界面進行仿真IP核。(當文件至關多的時候,就建議用腳本了,這裏用圖形化仍是比較方便的,畢竟只有四個文件,可是用圖形化的時候,要注意那些初始化文件的位置!!;這裏只是做爲一個用腳本的示範)
四、在modelsim中進行運行.do文件
運行以後,沒有錯誤,就出現下面的波形了;
進一步用模擬的形式查看一下:
就看到了美美的正弦波了: