3 ModelSim工程實戰(zhàn)之自動仿真說完了 ModelSim 的使用流程,接下來我們將會對每個流程進(jìn)行詳細(xì)的操作演示,一步步、手把手帶領(lǐng)大家學(xué)習(xí)使用 ModelSim 軟件。首先我們講解的 ModelSim 自動仿真,所謂自動仿真,其實是在 Quartus II 中調(diào)用 ModelSim 軟件來進(jìn)行仿真。
在調(diào)用過程中,Quartus II 會幫我們完成 ModelSim 中的所有操作,我們只需要分析最后的仿真結(jié)果。下面我們就以上章節(jié)中我們創(chuàng)建的 Quartus II 軟件工程為例,進(jìn)行仿真。3.1 檢查 EDA 路徑首先我們打開之前的 Quartus II 工程
在該頁面中,我們在菜單欄中找到【Tool】→【Options】按鈕并打開,在打開的頁面左側(cè),我們找到“EDA Tool Options”點擊,如圖
在該頁面中,如果你安裝的是 ModelSim 軟件,那么你需要在 ModelSim 路徑中進(jìn)行設(shè)置,這里我們使用的 ModelSim-Altera , 所 以 我 們 將 ModelSim-Altera 路 徑 設(shè) 置 成 了C:altera13.1modelsim_asewin32aloem。這里需要大家注意的是一定要選擇 modelsim_ase文件夾中的 win32aloem。
不要選擇 modelsim_ae 文件夾中的 win32aloem。還記得我們前面說的么?ae 是收費版本,我們是不能使用的,這里的 ase 免費版本也是可以滿足我們的設(shè)計的。路徑設(shè)置完成以后,我們點擊【OK】返回我們的 Quartus II 軟件界面。3.2 選擇 EDA 工具我們在 Quartus II 軟件頁面的菜單欄中,我們找到【Assignments】→【Settings】按鈕并打開,在打開的頁面左側(cè)我們找到“EDA Tool Settings”點擊,如圖
還記得我們之前創(chuàng)建工程的時候,由于在 Quartus II 軟件中我們沒有用到仿真,所以我們將這里設(shè)置成了“None”,現(xiàn)在我們需要用到仿真工具了,我們需要在這里將 Simulation 設(shè)置成“ModelSim-Altera、Verilog HDL”。設(shè)置完成之后,我們點擊【OK】返回 Quartus II 軟件頁 面中。3.3 編寫仿真文件我們在 Quartus II 軟件頁面的菜單欄中,我們找到【Processing】→【Start】→【Start TestBench Template Writer】按鈕并點擊,這時 Message 窗口中會顯示,如圖
我們可以從這條信息中知道,Quartus II 軟件自動給我們生成了一個 TestBench 模板,我們只需要在這個模板上稍作修改就能直接使用了。我們在工程目錄下找到 Verilog_First.vt 文件,我們可以用記事本打開進(jìn)行修改,也可以使用 Quartus II 軟件打開它進(jìn)行修改,這里我們建議還在 Quartus II 軟件中進(jìn)行修改。我們在 Quartus II 軟件的菜單欄中找到【File】→【Open】按鈕并打開,在對話框中找到我們的 Verilog 文件
打開之后,如圖
在該圖中我們可以看到,Quartus II 軟件已經(jīng)為我們完成了一些基本工作,包括端口部分的代碼和接口變量的聲明,我們要做的就是在這個模板里添加我們需要的測試代碼(也就是我們常說的激勵)。為了讓讀者能夠更好的理解仿真。
這里我們就簡單介紹一下 TestBench 源代碼:代碼的第 1 行,表示仿真的單位時間為 1ps,精度為 1ps。想要進(jìn)行仿真首先要規(guī)定時間單位,我們建議大家最好在 Testbench 里面統(tǒng)一規(guī)定時間單位,不要在工程代碼里定義,因為不同的模塊如果時間單位不同可能會為仿真帶來一些問題,timescale 是 Verilog 語法中的不可綜合語法。
代碼的第 2 行就是我們熟悉的部分了,其中第 5 行至第 10 行是我們的數(shù)據(jù)類型定義,這里我們可以看到 reg eachvec 是一個多余的信號,沒有任何作用,我們也可以將它刪除,接下來我們再來看第 13 行至第 18 行,這一部分就是一個模塊調(diào)用,它將我們的 Verilog 模塊中的信號連接到我們的 TestBench 模塊中。
最后,我們再來看下第 20 行至第 32 行代碼,其中第 20 行至第 26 行是信號的初始化,第 28 行至第 31 行是時鐘信號的生成。這里我們主要來講講#10000,#10000 表示的是延遲 10000ps(即 10ns),具體的延遲單位,還是要看我們的 timescale 是如何設(shè)置的。
至此,整個代碼都介紹完了。3.4 配置仿真功能編寫完了仿真文件,接下來我們需要在 Quartus II 軟件中配置仿真功能,我們在 Quartus II軟件界面的菜單欄找到【Assigement】→【Settings】按鈕并打開,在打開的頁面中,我們找到左側(cè)的 Simulation 點擊,出現(xiàn)如圖
我們選中“Compile Test bench”,然后單擊后面的【Test Benches】按鈕,則出現(xiàn)如圖 2.9所示的“Test Benches”窗口(也就是圖中上面的窗口),接著我們單擊【New】按鈕,則會出現(xiàn)如圖 所示的“New Test Bench Settings”窗口(也就是圖中下面的窗口)。
在該頁面中,我們將 TestBench 模塊名輸入到“Test bench name”和 “Top level module in test bench”的編輯欄中。接著我們在“Test bench and simulation files”下拉列表框中添加仿真文件,如圖 所示,點擊【Open】即可。
然后單擊【Add】 按鈕添加到最下面的列表中如圖
完成后我們單擊【OK】按鈕,便可看到如圖 2.12 所示的“Test benches”窗口的列表中出現(xiàn)了剛才添加的仿真文件相關(guān)信息,至此,我們仿真文件添加完成了,接著我們單擊【OK】按鈕,返回我們的 Quartus II 軟件界面。
3.5 開始功能仿真
萬事俱備只欠東風(fēng),經(jīng)過上面這么多的操作步驟,我們終于完成了所有設(shè)置,接下來我們就可以進(jìn)行仿真了,在開始仿真之前,我們這里有一點要需要注意,我們在 Quartus II 軟件中實現(xiàn)的功能是 LED 閃爍,它的間隔時間是 1s,如果我們想要仿真這個功能,那么我們仿真軟件運行時間最低就是 1s。這 1s 鐘在我們看來是很短很短的,不過在仿真軟件看來是很長很長的,我們的仿真軟件單位可是 ps。
為了便于我們仿真,這里我們需要稍微改動一下 Verilog 代碼,我們需要將 parameter SET_TIME_1S = 27‘d50_000_000;修改為 parameter SET_TIME_1S = 27’d50; 也就是將我們原來的 1s 鐘修改成了 1us。修改完畢后,我們在 Quartus II 軟件界面中的菜單欄中找到【Tools】→【Run Simulation Tool】→【RTL Simulation】按鈕并點擊,則會出現(xiàn)如圖 2.13 所示界面。
看到這里,也許有的朋友點擊【RTL Simulation】并沒有出現(xiàn) Modelsim 仿真窗口界面,而是出現(xiàn)了如圖 2.14 所示界面。
出現(xiàn)這種錯誤主要是因為我們前面設(shè)置的 Modelsim 路徑不對造成的,如何解決這個問題呢?我們嘗試將 ModelSim-Altera 路徑設(shè)置成了 C:altera13.1modelsim_asewin32aloem。這和我們剛剛設(shè)置不同的是,我們在路徑的最后面添加了一個反斜杠。
這時,我們再點擊【RTL Simulation】按鈕就會出現(xiàn) Modelsim 仿真窗口界面了,這里我們需要說明的是:有的電腦不添加反斜杠是可以運行的,有的電腦不添加反斜杠是不能運行。在 Modelsim 軟件啟動過程中,我 們不需要任何操作,它會自動完成仿真,并給出我們所需要的波形,當(dāng)波形圖出現(xiàn)之后,我們就可以查看波形來判斷設(shè)計功能是否正常了。
編輯:jq
-
ModelSim
+關(guān)注
關(guān)注
5文章
174瀏覽量
47371
原文標(biāo)題:ModelSim 使用【二】聯(lián)合Quarus自動仿真
文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論