日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Xilinx Vivado的使用详细介绍(1):创建工程、编写代码、行为仿真、Testbench

發(fā)布時間:2023/12/15 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Xilinx Vivado的使用详细介绍(1):创建工程、编写代码、行为仿真、Testbench 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

新建工程

打開Vivado軟件,直接在歡迎界面點(diǎn)擊Create New Project,或在開始菜單中選擇File - New Project即可新建工程。

點(diǎn)擊Next

輸入工程名稱和路徑。

選擇RTL Project,勾選Do not specify......(這樣可以跳過添加源文件的步驟,源文件可以后面再添加)。

根據(jù)自己的開發(fā)板選擇器件型號,可以直接通過型號進(jìn)行搜索,例如Basys3開發(fā)板上的芯片型號為xc7a35tcpg236-1。如果不了解或者暫時不寫進(jìn)開發(fā)板,可以隨便選一個型號,后面需要的時候再修改。

點(diǎn)擊Finish,項(xiàng)目新建完成。

添加Verilog設(shè)計(jì)文件(Design Source)

在Project Manager窗口中,選擇Source子窗口,在空白處或任意文件夾上右擊,選擇Add Sources。

選擇Add or Create Design Sources,點(diǎn)擊Next。

點(diǎn)擊Create File按鈕,彈出的小窗口中輸入文件名,點(diǎn)擊OK。

可以一次性新建或添加多個文件,最后點(diǎn)擊Finish。

稍后會彈出定義模塊的窗口,也就是剛剛添加的test文件。可以在這里設(shè)置test模塊的輸入輸出端口;或者直接點(diǎn)擊OK,稍后再自行編寫。

點(diǎn)擊OK后,如果彈出下面窗口直接點(diǎn)擊Yes。

test文件和對應(yīng)的模塊即創(chuàng)建完成,如圖。

添加Verilog仿真文件(Simulation Source)

操作和上一步添加Verilog設(shè)計(jì)文件基本一致,唯一的區(qū)別是選擇Add or Create Simulation Sources。我們新建一個名為simu的仿真文件。

設(shè)計(jì)文件新建完成后,在Design Sources和Simulation Sources中都有,而仿真文件只會出現(xiàn)在Simulation Sources文件夾中。設(shè)計(jì)文件可以用于仿真,也可以用于最終燒寫進(jìn)開發(fā)板,而仿真文件僅用于仿真。

編寫代碼

打開test模塊,編寫代碼實(shí)現(xiàn)一個簡單的非門電路如下。

  • module test(
  • input in,
  • output out
  • );
  • assign out = ~in;
  • endmodule
  • 行為仿真(Behavioral Simulation)與Testbench

    為了驗(yàn)證代碼是否正確,可以對代碼進(jìn)行行為仿真。我們給上面的test模塊輸入端in接入一個時鐘信號,則輸出端out就會產(chǎn)生一個電平相反的時鐘信號。

    行為仿真時,輸入信號可以使用Testbench編寫。

    如果直接修改test模塊,在其中添加Testbench代碼,再進(jìn)行仿真,是一種不太正確的做法。因?yàn)閠est模塊是設(shè)計(jì)文件,后面可能會直接燒寫進(jìn)板子。進(jìn)行仿真時添加了Testbench代碼,之后再燒寫進(jìn)板子又得刪掉Testbench代碼,這樣容易出現(xiàn)錯誤,而且操作起來也比較麻煩。尤其是接口數(shù)量多,內(nèi)部比較復(fù)雜的模塊。

    所以我們將Testbench代碼全部寫到仿真文件simu中,并在simu文件中調(diào)用test模塊,從而進(jìn)行仿真。

    編寫仿真代碼

    在simu模塊中編寫代碼如下。

  • module simu(
  • );
  • // testbench 時鐘信號
  • reg clk = 0;
  • always #10 clk <= ~clk;
  • // 輸出信號
  • wire out;
  • // 調(diào)用test模塊
  • test mytest(clk, out);
  • endmodule
  • 代碼說明:

    • reg clk = 0聲明了一個reg信號,并賦初值為0。
    • always #10 clk <= ~clk為testbench代碼,讓clk每隔10ns翻轉(zhuǎn)一次,產(chǎn)生周期為20ns的時鐘信號。
    • wire out聲明了一個wire信號,用于連接到test模塊的輸出。
    • test mytest(clk, out)調(diào)用了前面寫好的test模塊,其中mytest是模塊名稱,這里的clk和out分別連接了mytest模塊內(nèi)部的in和out信號。這種寫法類似于面向?qū)ο蟮木幊陶Z言中,對象的實(shí)例化,test為類名,而mytest為對象名稱。同樣,Verilog中調(diào)用模塊時,可以實(shí)例化多個test對象。

    更多Testbench的寫法請上網(wǎng)搜索相關(guān)資料。

    行為仿真

    右擊simu模塊,選擇Set as Top,將simu模塊設(shè)置為仿真時的頂層模塊。頂層模塊類似于C編程時的入口函數(shù),即main函數(shù)。main`函數(shù)可以調(diào)用其他子函數(shù);類似的,頂層模塊可以調(diào)用其他模塊。

    在Flow Navigator窗口中點(diǎn)擊Run Simulation - Run Behavioral Simulation;或者在菜單中選擇Flow - Run Simulation - Run Behavioral Simulation,即可啟動行為仿真。

    稍后Behavioral Simulation窗口打開,即可看到輸出的仿真波形。

    操作技巧

    雙擊圖中右側(cè)的Untitled 2標(biāo)簽,可以最大化仿真波形窗口。在波形窗口按住Ctrl鍵并滾動鼠標(biāo)滾輪,可以橫向縮放波形;按住Shift并滾動鼠標(biāo)滾輪,可以橫向平移波形。

    如圖,可以看出clk為周期20ns的時鐘信號,而out和clk的電平始終相反,即test模塊中的非門工作正確。

    在Behavioral Simulation窗口中的Scopes子窗口,根據(jù)模塊調(diào)用關(guān)系選中mytest,在右側(cè)的Objects窗口即可看到test模塊中所有的信號(包括內(nèi)部信號,即沒有寫到模塊聲明語句module(a,b,c)括號中的信號)。

    右擊信號,選擇Add To Wave Window,可將波形添加到右側(cè)的仿真波形窗口,保存仿真文件,再次仿真時就可以看到該信號的波形。

    對于一些輸出數(shù)字信號波形的情況,例如讓reg [7:0] sine_out輸出正弦波,仿真后右擊信號,選擇Waveform Style - Analog,即可以波形的形式查看信號。如圖顯示的就是正弦波信號(注意這里信號本身還是數(shù)字信號,并不是模擬信號,只是用軟件顯示出了其幅值隨時間變化的波形)。

    對于多位信號例如wire [7:0] p,默認(rèn)使用二進(jìn)制形式顯示,可以根據(jù)需要修改。例如右擊選擇Radix - Unsigned Decimal即可設(shè)置為無符號十進(jìn)制顯示,如圖。

    本文由jzj1993原創(chuàng),轉(zhuǎn)載請注明來源:http://www.paincker.com/vivado-basic-usage-1

    總結(jié)

    以上是生活随笔為你收集整理的Xilinx Vivado的使用详细介绍(1):创建工程、编写代码、行为仿真、Testbench的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。