MiZ702学习笔记11——如何使用vivado isim仿真
說到vivado的仿真確實(shí)是很有意思,不管是ISE還是Quartus都可以自己自動生成測試平臺的完整構(gòu)架,但是vivado不行,所有的測試代碼自己寫!(我反正是查了好久,都沒發(fā)現(xiàn)vivado如何自動生成測試平臺的完整構(gòu)架)。
而且vivado與眾不同的地方是,他的測試文件和設(shè)計(jì)文件的類型是一模一樣的。不像Quartus或者ISE那樣測試文件是單獨(dú)的類型。
比如Quartus中測試文件都是以.vt類型的。
這也正是vivado勝人一籌的地方,他的測試文件和設(shè)計(jì)文件的類型是一模一樣,這意味著vivado將不會區(qū)分測試文件和設(shè)計(jì)文件,設(shè)計(jì)的一致性得到統(tǒng)一。
不知道讀者發(fā)現(xiàn)沒有,設(shè)計(jì)文件新建完成后,在Design Sources和Simulation Sources中都會出現(xiàn)我們添加的設(shè)計(jì)文件,所以vivado
的這種設(shè)計(jì)模式,道出了一個(gè)真諦——編寫測試文件(及編寫TestBench),和編寫設(shè)計(jì)文件別無二致,都是建模!
我們要編寫的測試文件,不過是基于我們的設(shè)計(jì)文件的最頂層再次建模而已。測試文件的目的就是“給些激勵(lì)”、“看些反應(yīng)”如此而已。
添加仿真文件:
將仿真文件設(shè)置為頂層文件:
添加代碼如下:
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作為最頂層的文件,不需要任何輸入或者輸出引腳,應(yīng)為他的任務(wù)只是給激勵(lì),刺激它所仿真的模塊。一般情況真正需要自己寫的代碼其實(shí)沒有多少。
文件添加完了就可以開始仿真了:
出現(xiàn)如下畫面:
面板1顯示的是工程的層次結(jié)構(gòu),當(dāng)在面板1選擇了一個(gè)模塊后,面板2會對應(yīng)變化,顯示當(dāng)前模塊的的所以信號,這些信號都可以添加到波形顯示框里觀察。
一開始波形顯示框里,只會顯示你在頂層仿真文件中聲明的信號,如果想觀察其他模塊內(nèi)部寄存器或者引腳的值,可以通過如下方法:
這個(gè)三個(gè)按鈕,用的比較多:
第一個(gè)為復(fù)位,仿真會重新開始,一般在添加了新的觀察信號后使用。
第二個(gè)是run all 單擊后ISIM會一直仿真知道按下暫停。根據(jù)筆者經(jīng)驗(yàn)這個(gè)按鍵不要輕易按下,
一般電腦承受不起,容易卡住。所以一般會有第三個(gè)。
第三個(gè)是仿真一段時(shí)間,圖中表示一次仿真20000us。相對于run all不容易卡。
總結(jié)
以上是生活随笔為你收集整理的MiZ702学习笔记11——如何使用vivado isim仿真的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python chain模块
- 下一篇: 小学生上网课两月近视猛涨200度急坏母亲