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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

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

新建工程

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

點擊Next

輸入工程名稱和路徑。

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

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

點擊Finish,項目新建完成。

添加Verilog設計文件(Design Source)

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

選擇Add or Create Design Sources,點擊Next。

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

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

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

點擊OK后,如果彈出下面窗口直接點擊Yes。

test文件和對應的模塊即創建完成,如圖。

添加Verilog仿真文件(Simulation Source)

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

設計文件新建完成后,在Design Sources和Simulation Sources中都有,而仿真文件只會出現在Simulation Sources文件夾中。設計文件可以用于仿真,也可以用于最終燒寫進開發板,而仿真文件僅用于仿真。

編寫代碼

打開test模塊,編寫代碼實現一個簡單的非門電路如下。

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

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

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

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

    所以我們將Testbench代碼全部寫到仿真文件simu中,并在simu文件中調用test模塊,從而進行仿真。

    編寫仿真代碼

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

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

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

    更多Testbench的寫法請上網搜索相關資料。

    行為仿真

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

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

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

    操作技巧

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

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

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

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

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

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

    本文由jzj1993原創,轉載請注明來源:http://www.paincker.com/vivado-basic-usage-1

    總結

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

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。