MiZ702學習筆記11——如何使用vivado isim仿真


說到vivado的仿真確實是很有意思,不管是ISE還是Quartus都可以自己自動生成測試平台的完整構架,但是vivado不行,所有的測試代碼自己寫!(我反正是查了好久,都沒發現vivado如何自動生成測試平台的完整構架)。

而且vivado與眾不同的地方是,他的測試文件和設計文件的類型是一模一樣的。不像Quartus或者ISE那樣測試文件是單獨的類型。

比如Quartus中測試文件都是以.vt類型的。

這也正是vivado勝人一籌的地方,他的測試文件和設計文件的類型是一模一樣,這意味着vivado將不會區分測試文件和設計文件,設計的一致性得到統一。

不知道讀者發現沒有,設計文件新建完成后,在Design Sources和Simulation Sources中都會出現我們添加的設計文件,所以vivado

的這種設計模式,道出了一個真諦——編寫測試文件(及編寫TestBench),和編寫設計文件別無二致,都是建模!

我們要編寫的測試文件,不過是基於我們的設計文件的最頂層再次建模而已。測試文件的目的就是“給些激勵”、“看些反應”如此而已。

clip_image002[4]

添加仿真文件:

image

clip_image002[8]

clip_image004[10]

將仿真文件設置為頂層文件:

clip_image006[9]

添加代碼如下:

module sim(
    );


reg CLK,RSTn;
initial
begin
    RSTn = 0; #10; RSTn = 1;
    CLK = 0; forever #5 CLK = ~CLK;
end

// 輸出信號
wire lcd_hs;
wire lcd_vs; 
wire [3:0]lcd_red;
wire [3:0]lcd_green;
wire [3:0]lcd_blue;

// 例化vga_demo模塊   
vga_demo vga_demo(
    .CLK(CLK),
    .RSTn(RSTn),
    //硬件接口  
    .lcd_hs(lcd_hs),                    //lcd horizontal sync 
    .lcd_vs(lcd_vs),                    //lcd vertical sync
    //output lcd_blank,                //lcd blank(L:blank)
    .lcd_red(lcd_red),            //lcd red data
    .lcd_green(lcd_green),        //lcd green data
    .lcd_blue(lcd_blue)            //lcd blue data
); 
    
    
    
endmodule

 

sim作為最頂層的文件,不需要任何輸入或者輸出引腳,應為他的任務只是給激勵,刺激它所仿真的模塊。一般情況真正需要自己寫的代碼其實沒有多少。

文件添加完了就可以開始仿真了:

clip_image002[10]

出現如下畫面:

clip_image004[12]

面板1顯示的是工程的層次結構,當在面板1選擇了一個模塊后,面板2會對應變化,顯示當前模塊的的所以信號,這些信號都可以添加到波形顯示框里觀察。

一開始波形顯示框里,只會顯示你在頂層仿真文件中聲明的信號,如果想觀察其他模塊內部寄存器或者引腳的值,可以通過如下方法:

clip_image006[11]

clip_image008[9]這個三個按鈕,用的比較多:

第一個為復位,仿真會重新開始,一般在添加了新的觀察信號后使用。

第二個是run all 單擊后ISIM會一直仿真知道按下暫停。根據筆者經驗這個按鍵不要輕易按下,

一般電腦承受不起,容易卡住。所以一般會有第三個。

第三個是仿真一段時間,圖中表示一次仿真20000us。相對於run all不容易卡。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM