下面是基于在Altera Quartus II 下如何調用ModelSim 進(jìn)行仿真的一個(gè)實(shí)例。 不能否認,Quartus II(我用的7.0)無(wú)法像ISE 那樣方便的直接調用ModelSim,而是需要額外的做一些工作。這確實(shí)給我們的仿真調試帶來(lái)了一些不便。特權同學(xué)也是在摸索了好久以后才徹底搞定這個(gè)問(wèn)題,下面分享下,力求明白易懂,讓大家少走一些彎路。 1、 打開(kāi)Quartus II,新建一個(gè)工程,工程代碼如下(只是做一個(gè)簡(jiǎn)單的二分頻電路): module modelsim_test( clk,rst_n,div ); input clk; //系統時(shí)鐘 input rst_n; //復位信號,低有效 output div; //2 分頻信號 reg div; always @ (posedge clk or negedge rst_n) if(!rst_n) div <= 1'b0; else div <= ~div; endmodule 2、 進(jìn)入菜單欄的Assignments EDA Tool Settings,進(jìn)入如下界面: 雙擊“EDA tools”下的“Simulation”選項,彈出如下界面: 點(diǎn)擊Tool name 最右側的下拉條,選擇“ModelSim”,在彈出的界面做如下設置: 3、 以上設置完成,重新編譯工程。 打開(kāi)工程目錄,看到多了一個(gè)“simulation”文件夾,再打開(kāi)該文件夾下的“modelsim”文件夾?吹接腥齻(gè)文件,其中.vo 文件就是我們的代碼布局布線(xiàn)信息。仿真還需要幾個(gè)文件,我們把它們都拷貝到該目錄下。 4、 打開(kāi)“C:altera70quartusedasim_lib”(具體quartus 軟件安裝文件的根目錄視您的實(shí)際情況而定,大體路徑都一樣),因為我們用的是MAX II器件,所以把“maxii_atoms.v”拷貝到3 中提到的目錄下,這個(gè)文件是仿真元件庫。 5、 編寫(xiě)一個(gè)工程RTL 源碼的Testbench 文件,用于作為仿真激勵(具體如何編寫(xiě)清參考相關(guān)數據文檔資料)。這個(gè)實(shí)例的testbench 如下: module vtf_test; // Inputs reg clk; reg rst_n; // Output wire div; modelsim_test u1( .clk(clk), .rst_n(rst_n), .div(div) ); initial begin clk = 0; forever #10 clk = ~clk; //產(chǎn)生50MHz 的時(shí)鐘 end initial begin rst_n = 0; #1000 rst_n = 1; //上電后1us 復位信號 #1000; $stop; end endmodule 將該文件命名為tb_test.v,保存到3 提到的文件夾下。 6、 在wokspace 的library 面板的空白處單擊右鍵,選擇“new”→“l(fā)ibrary” 在新彈出界面中做如下設置,然后點(diǎn)擊“OK”。 7、 啟動(dòng)ModelSim 軟件,點(diǎn)擊菜單欄的Compilecompile 命令,彈出如下界面: Library 選擇剛才新建的“work_test”,查找范圍定位到我們3 提到的文件夾下。全選在該目錄下可以看到的文件,點(diǎn)擊Compile(注意該文件夾必須在全英文/數字路徑下,否則會(huì )出錯無(wú)法編譯)。 8、 我們回到wokspace 的library 面板,work_test 多處了下拉框,點(diǎn)擊后如下: 我們右鍵單擊vtf_test 文件,在彈出的菜單中選擇Simulation 9、 執行上面的操作后,軟件自動(dòng)彈出wokspace 的sim 面板如下: 在vtf_test 欄單擊右鍵,在彈出菜單中選擇AddAdd to Wave。然后軟件將彈出波形窗口。 10、 波形窗口如下: 這時(shí)我們點(diǎn)擊全速編譯(一次不行,多點(diǎn)一次,工具欄倒數第三個(gè)按鈕), 然后點(diǎn)擊觀(guān)看全部波形(放大縮小按鈕后面一個(gè)藍色按鈕)。 11、 仿真結果如下: 可以看到div 信號確實(shí)是clk 的二分頻。呵呵,基本的操作就到此結束了。 |