FPGA系統(tǒng)設(shè)計(jì)的仿真驗(yàn)證之: 功能仿真和時(shí)序仿真的區(qū)別和實(shí)現(xiàn)方法
7.4功能仿真和時(shí)序仿真的區(qū)別和實(shí)現(xiàn)方法
這里我們使用一個(gè)波形發(fā)生器作為例子,來(lái)說(shuō)明如何使用Modelsim對(duì)QuartusII生成的IPCore和相應(yīng)的HDL文件進(jìn)行功能仿真和時(shí)序仿真。這個(gè)例子里面使用到了由QuartusII生成的一個(gè)片上ROM存儲(chǔ)單元。這種存儲(chǔ)單元和RAM一樣,都是基本的FPGA片上存儲(chǔ)單元,在以后的設(shè)計(jì)里面會(huì)經(jīng)常使用到。
7.4.1功能仿真
(1)在QuartusII中設(shè)置第三方仿真工具,選擇“Assignments-Settings-EDAToolSettings-Simulation”,選擇“ModelSim-Verilog”。如圖7.17所示。
圖7.17EDA工具設(shè)置
(2)編譯工程。編譯帶有IPCore的工程文件。
(3)編譯完成后會(huì)在工程目錄下生成“simulation-modelsim”的目錄,如圖7.18所示。其中包含了3個(gè)文件:“.vo”是仿真網(wǎng)表文件,可以用來(lái)代替設(shè)計(jì)文件;“.xrf”是Quartus編譯生成的信息文件;“.sdo”是工程延時(shí)信息。
圖7.18編譯生成文件
(4)加入仿真庫(kù)文件。
仿真庫(kù)的路徑為“C:alteraquartus50edasim_lib”,包含了如下3個(gè)仿真庫(kù)文件。
·220model.v:帶有用戶原語(yǔ)類(lèi)型的Quartus自帶的IP核的庫(kù)文件。
·altera_mf.v:Quartus自帶的IP核的庫(kù)文件。
·cyclone_atoms.v:相應(yīng)系列的器件庫(kù)。
在本例中需要添加altera_mf.v,cyclone_atoms.v兩個(gè)庫(kù)文件。
(5)編寫(xiě)測(cè)試文件(詳見(jiàn)7.5節(jié))。
(6)將測(cè)試文件粘貼到剛才生成的目錄中,如圖7.19所示。
圖7.19添加測(cè)試文件
(7)打開(kāi)modelsim。
(8)創(chuàng)建工程并添加源文件,如圖7.20所示。
圖7.20為工程添加源文件
(9)編譯工程。結(jié)合庫(kù)文件一起進(jìn)行編譯、如圖7.21和7.22所示。
圖7.21全部編譯前
圖7.22全部編譯后
(10)修改wave.vo文件。將文件中的延時(shí)信息注釋掉,即:
//initial$sdf_annotate(WAVE_v.sdo);
(11)重新編譯wave.vo文件。
(12)打開(kāi)開(kāi)始仿真對(duì)話框,如圖7.23所示對(duì)話框。
選擇頂層模塊wave_top,開(kāi)始進(jìn)行仿真,如圖7.24所示。
圖7.23選擇開(kāi)始仿真的文件 圖7.24選擇頂層模塊文件
(13)添加信號(hào)。右鍵選擇添加信號(hào)到波形圖。并在命令行中敲入“run1ms”,按“回車(chē)”鍵,開(kāi)始仿真。結(jié)果波形如圖7.25和圖7.26所示,分別是二進(jìn)制顯示、十進(jìn)制顯示。
圖7.25二進(jìn)制顯示
圖7.26十進(jìn)制顯示
放大查看細(xì)節(jié)的波形時(shí)序,可以發(fā)現(xiàn),功能仿真的結(jié)果是沒(méi)有延遲的,如圖7.27所示。
圖7.27功能仿真結(jié)果無(wú)延遲
7.4.2時(shí)序仿真
(1)將功能仿真第(10)步中對(duì)wave.vo文件做的注釋改回來(lái),重新進(jìn)行編譯。
(2)重新打開(kāi)開(kāi)始仿真對(duì)話框,選擇頂層模塊,如圖7.28所示。
(3)選擇“SDF”選項(xiàng)卡,如圖7.29所示。
圖7.28選擇頂層模塊仿真 圖7.29“SDF”選項(xiàng)卡
(4)加入“.sdo”文件,將兩個(gè)SDFOptions都選中,如圖7.30所示。
圖7.30添加“.sdo”文件
(5)和功能仿真一樣,為波形窗口添加信號(hào),開(kāi)始進(jìn)行仿真。
(6)通過(guò)波形圖,查看時(shí)序仿真的延時(shí),如圖7.31所示。
圖7.31查看時(shí)序仿真延遲
評(píng)論