精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

在模塊化設計過程中編寫testbench并仿真的方法介紹

FPGA之家 ? 來源:FPGA之家 ? 2023-09-04 09:54 ? 次閱讀

仿真第1個子模塊

??在開始設計前,根據設計劃分好各功能模塊(為了敘述方便,這里以對“FPGA數字信號處理(十三)鎖相環位同步技術的實現”中設計的系統仿真為例)。編寫好第一個子模塊(本例中為雙相時鐘生成模塊),在Vivado中添加仿真sim文件,編寫testbench:

`timescale 1ns / 1ps
//-----------------------------------------------------
//  雙相時鐘信號生成模塊測試
//-----------------------------------------------------
module clk_gen_sim;

reg clk, rst;
wire clk_d1, clk_d2;
clk_gen i1
(
  .clk(clk),   //32MHz系統時鐘
  .rst(rst),   //高電平有效復位信號
  .clk_d1(clk_d1), //時鐘1
  .clk_d2(clk_d2)  //時鐘2
);

always #10 clk = ~clk;

initial begin
  clk = 1'b1;
  rst = 1'b1;
  #50;
  rst = 1'b0;
  #1000; $stop;
end

endmodule

??綜合正確后,點擊“Run Simulation”->“Run Behavioral Simulation”進行行為仿真,仿真結果如下圖:

2cfa69ee-49f6-11ee-97a6-92fbcf53809c.jpg

??仿真結果正確(即功能與預期相符),則表明該子模塊設計正確,可以開始下一個子模塊的設計和仿真。

加入第N個子模塊

??和上節一樣,設計好一個子模塊,則添加一個仿真激勵testbench文件,在仿真中確認功能正確性。最終的仿真文件清單如下所示:

2d0eb99e-49f6-11ee-97a6-92fbcf53809c.jpg

??Vivado對多模塊、多文件的仿真提供了很好的特性支持。上面有多個testbench文件,分別對不同的模塊進行仿真。當仿真好第一個模塊后,需要仿真第二個模塊時,對第一個模塊對應的testbench點右鍵->“Disable File”,并將第二個模塊對應的testbench點右鍵->“Set as Top”(當狀態為Enable的仿真文件只有一個時會自動設置為Top),如下圖所示:

2d1d493c-49f6-11ee-97a6-92fbcf53809c.jpg

??如果想要重新仿真先前的模塊,在testbench文件上點右鍵->“Enable File”即可重新將其置為有效。通過這樣的方法可以完成所有模塊的仿真。

多模塊聯合仿真

??我們知道,模塊化設計的代碼,各個模塊之間的聯系是非常緊密的。對于簡單的設計還比較好,可以像上節一樣每個模塊單獨測試,各自編寫testbench也并不復雜。而更多的設計在仿真時我們期望能直接使用第一個模塊產生的信號,作為第二個模塊的測試激勵,即多模塊聯合仿真。比如在“FPGA綜合系統設計(七)基于DDC的兩路信號相位差檢測”中,在仿真DDC模塊(數字下變頻)時顯然更希望直接使用信號生成模塊(signal_gen)中產生的信號作為激勵,而不是另外在testbench中生成一個信號作為激勵。否則不僅費時費力,也沒有測試到模塊之間連接的正確性。

??方法有兩個:第一個是先編寫好設計的頂層模塊,不斷的將子模塊實例化到頂層模塊中,只對頂層模塊做仿真;第二個是在testbench中把需要的子模塊都實例化好。

1. 第一種方法

??Vivado可以觀察模塊的內部信號,在運行頂層模塊的仿真后,Scope窗口內顯示了頂層模塊內包含的所有子模塊。如下圖所示:

2d394fb0-49f6-11ee-97a6-92fbcf53809c.jpg

??仿真波形窗口內默認只顯示頂層模塊的接口和在testbench文件中定義的變量。如果要觀察子模塊內部的信號,在子模塊上右鍵->“Add to Wave Window”,即可將相關信號添加到波形窗口。

??借助于Vivado的這個特性,可以在設計過程中不斷在頂層模塊中實例化子模塊,達到多模塊聯合仿真的目的。這樣做的優點是在編寫testbench代碼上更省力,缺點是只有一個頂層模塊的testbench,無法對各個子模塊進行單獨測試。

2. 第二種方法

??在仿真一個子模塊時希望用到其它子模塊的輸出信號,將兩者都在testbench中實例化即可。和下面testbench代碼類似:

`timescale 1ns / 1ps
module clk_iq_sim;

reg clk, rst;
wire clk_d1, clk_d2;
wire clk_i, clk_q;
clk_gen i1
(
  .clk(clk),   //32MHz系統時鐘
  .rst(rst),   //高電平有效復位信號
  .clk_d1(clk_d1), //時鐘1
  .clk_d2(clk_d2)  //時鐘2
);
/*使用clk_gen模塊的輸出信號作為該模塊的輸入激勵*/
clk_iq i2
(
  .clk(clk),   //32MHz系統時鐘
  .rst(rst),   //高電平有效復位信號
  .clk_d1(clk_d1), //時鐘1
  .clk_d2(clk_d2), //時鐘2
  .clk_i(clk_i),
  .clk_q(clk_q)
);

always #10 clk = ~clk;

initial begin
  clk = 1'b1;
  rst = 1'b1;
  #50;
  rst = 1'b0;
  #1000; $stop;
end

endmodule

??這樣做的好處是仍然可以保持每一個子模塊都有一個對應的仿真激勵文件,更方便功能測試和文件管理。尤其在經常需要修改和運行仿真的設計中,單獨測試一個模塊的運行時間比運行總體的頂層模塊仿真要節省不少時間。

使用Quartus+ModelSim

??Vivado自帶的仿真(Vivado Simulation)已經足夠好用,而使用Quartus時,由于其自帶的波形仿真工具并不方便,經常需要調用ModelSim來仿真。使用Quartus+ModelSim也可以達到上面的效果。

??多仿真文件的管理在Quartus主界面的Assignments菜單->Settings窗口中,如下圖所示:
2d571b58-49f6-11ee-97a6-92fbcf53809c.jpg

??點擊EDA Tool Settings下的Simulation,在Test Benches窗口中可以添加和管理多個testbench文件。在Compile test bench的下拉菜單里選擇指定的一個testbench,調用ModelSim仿真時會讀取相應的文件。

??ModelSim仿真過程中也可以觀察到頂層模塊內部子模塊的信號。在sim-Default窗口下可以看到頂層模塊和子模塊之間的實例化信息,選中相應的子模塊,在Objects窗口(如果沒有則在ModelSim主界面的View菜單中選中打開)下會顯示出該子模塊的相關信號。

??對需要顯示的信號點右鍵->“Add to”->“Wave”->“Selected Signals”,即可添加到波形窗口。點擊“Run-All”重新運行仿真,新添加信號的波形便會顯示出來。

2d744016-49f6-11ee-97a6-92fbcf53809c.jpg








審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 鎖相環
    +關注

    關注

    35

    文章

    583

    瀏覽量

    87697
  • FPGA設計
    +關注

    關注

    9

    文章

    428

    瀏覽量

    26487
  • 仿真器
    +關注

    關注

    14

    文章

    1016

    瀏覽量

    83645
  • DDC
    DDC
    +關注

    關注

    2

    文章

    87

    瀏覽量

    37071
  • Vivado
    +關注

    關注

    19

    文章

    808

    瀏覽量

    66332

原文標題:Testbench編寫指南(3)模塊化工程的仿真方法

文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    怎么ISE中進行模塊化設計?

    你好: 我想在ISE中進行模塊化設計,但是TCL腳本方法,還有其他方法可以進行模塊化設計嗎?
    發表于 10-10 11:46

    嵌入式軟件開發過程中模塊化

    對很多人來,嵌入式軟件開發過程中模塊化(Modularization)是一個海市蜃樓、是一個書面詞匯、是一個過氣的時尚——模塊化似乎從未真正的實現過。吹牛時人們常不屑的說:沒吃...
    發表于 12-20 07:22

    介紹一下機電暫態開源工具使用過程中的一些體會

    )作者:一一數二三這個工具箱所有代碼開源,且提供了圖形仿真界面,單元模塊化,易于添加新的模塊仿真器件。
    發表于 12-30 08:33

    編寫高效率的testbench

    編寫高效率的testbench,學習編寫測試文件的小伙伴們。
    發表于 05-11 16:40 ?16次下載

    利用模塊化建模方法實現基于System Generator的控制器導出多軟硬件仿真驗證

    利用System Generator軟件平臺,實現基于模塊化建模方法的變換器建模,簡化語言編寫控制系統的復雜過程。研究了從MATLAB-X
    發表于 11-15 14:31 ?5327次閱讀
    利用<b class='flag-5'>模塊化</b>建模<b class='flag-5'>方法</b>實現基于System Generator的控制器導出<b class='flag-5'>并</b>多軟硬件<b class='flag-5'>仿真</b>驗證

    抑制孤立簇的軟件模塊化優化算法

    軟件產品設計和開發過程中,廣泛應用模塊化方法來提高軟件產品架構的質量。但隨著軟件產品的不斷進化,軟件產品趨向大型和復雜
    發表于 04-19 14:14 ?0次下載

    關于testbenchFPGA編程的技巧

    定義信號類型:原來模塊的輸入信號,定義成reg 類型,原來模塊的輸出信號,定義為wire類型,但這里有個問題,如果在testbench
    發表于 07-31 17:52 ?1051次閱讀

    介紹FPGAtestbench編寫技巧

    原來模塊的輸入信號,定義成reg 類型,原來模塊的輸出信號,定義為wire類型,但這里有個問題,如果在testbench
    發表于 01-06 14:52 ?1921次閱讀
    <b class='flag-5'>介紹</b>FPGA<b class='flag-5'>中</b><b class='flag-5'>testbench</b>的<b class='flag-5'>編寫</b>技巧

    使用三種自動testbench驗證方法

    自我檢查testbench設計:與前兩種方法不同,該方法實時檢查預期結果和實際結果,而不是仿真結束后才檢查。
    的頭像 發表于 11-20 11:26 ?3669次閱讀

    模塊化設計過程中編寫testbench仿真的方法

    開始設計前,根據設計劃分好各功能模塊(為了敘述方便,這里以對“FPGA數字信號處理(十三)鎖相環位同步技術的實現”設計的系統仿真為例)。編寫
    的頭像 發表于 11-20 11:29 ?3867次閱讀

    FPGA仿真的學習課件和工程文件免費下載

    本文檔的主要內容詳細介紹的是FPGA仿真的學習課件和工程文件免費下載包括了:1、testbench編寫,2、仿真工具使用,2、
    發表于 12-10 15:28 ?30次下載

    使用matlab產生待濾波信號編寫testbench進行仿真分析

    本講使用matlab產生待濾波信號,編寫testbench進行仿真分析,Vivado調用F
    的頭像 發表于 04-27 18:18 ?4351次閱讀
    使用matlab產生待濾波信號<b class='flag-5'>并</b><b class='flag-5'>編寫</b><b class='flag-5'>testbench</b>進行<b class='flag-5'>仿真</b>分析

    模塊化UPS是什么?模塊化UPS電源機的優點

    模塊數量。通過機技術,多個模塊可以一起運行,提供高可靠性和高可擴展性的電源系統。下面將詳細介紹模塊化UPS電源
    的頭像 發表于 01-10 15:16 ?1281次閱讀

    FPGA入門必備:Testbench仿真文件編寫實例詳解

    編寫完HDL代碼后,往往需要通過仿真軟件Modelsim或者Vivadao自帶的仿真功能對HDL代碼功能進行驗證,此時我們需要編寫Testbenc
    發表于 04-29 10:43 ?1826次閱讀

    模塊化插座接線方法有哪些

    擴展或改變插座的功能。以下是一些模塊化插座接線方法的概述,以及一些安全和安裝的注意事項。 1. 基本接線方法 模塊化插座的基本接線方法通常包
    的頭像 發表于 10-18 09:50 ?327次閱讀