在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

    文章

    596

    瀏覽量

    88506
  • FPGA設計
    +關注

    關注

    9

    文章

    428

    瀏覽量

    27181
  • 仿真器
    +關注

    關注

    14

    文章

    1034

    瀏覽量

    85045
  • DDC
    DDC
    +關注

    關注

    2

    文章

    95

    瀏覽量

    37573
  • Vivado
    +關注

    關注

    19

    文章

    831

    瀏覽量

    68326

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

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

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    模塊化示波器的技術原理和應用

    。 二、應用 電子工程和通信技術: 電子工程和通信技術領域,模塊化示波器發揮著不可替代的作用。它可以用于觀察和分析各種電信號隨時間的變化,如波形、幅度、頻率等參數。 電路設計過程中
    發表于 12-11 14:20

    怎么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 ?5735次閱讀
    利用<b class='flag-5'>模塊化</b>建模<b class='flag-5'>方法</b>實現基于System Generator的控制器導出<b class='flag-5'>并</b>多軟硬件<b class='flag-5'>仿真</b>驗證

    關于testbenchFPGA編程的技巧

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

    介紹FPGAtestbench編寫技巧

    原來模塊的輸入信號,定義成reg 類型,原來模塊的輸出信號,定義為wire類型,但這里有個問題,如果在testbench
    發表于 01-06 14:52 ?2063次閱讀
    <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 ?4044次閱讀

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

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

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

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

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

    本講使用matlab產生待濾波信號,編寫testbench進行仿真分析,Vivado調用F
    的頭像 發表于 04-27 18:18 ?4662次閱讀
    使用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 ?1756次閱讀

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

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

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

    擴展或改變插座的功能。以下是一些模塊化插座接線方法的概述,以及一些安全和安裝的注意事項。 1. 基本接線方法 模塊化插座的基本接線方法通常包
    的頭像 發表于 10-18 09:50 ?1691次閱讀
    主站蜘蛛池模板: 亚洲免费黄色网址 | 夜夜摸视频网 | 一区二区三区四区在线 | 99精品免费视频 | 欧美xx网站 | 黄色网在线看 | 免费看一毛一级毛片视频 | bt天堂在线最新版www | 真实偷清晰对白在线视频 | 57pao强力打造免费高清高速 | 四虎4hu| 天天综合久久 | 成人午夜视频免费看欧美 | 天天操夜夜艹 | 丁香天堂网 | 国产精品女人在线观看 | 日本在线视频精品 | 长腿丝袜美女被啪啪 | 奇米欧美成人综合影院 | 都市激情综合网 | 看全色黄大色大片免费久久 | 色视频免费观看高清完整 | 国产一区二区中文字幕 | 欧美黑人换爱交换乱理伦片 | 好爽毛片一区二区三区四 | 萌白酱白丝护士服喷水铁牛tv | 一本到卡二卡三卡福利 | 亚洲成a人片在线观看www | 欧美日韩啪啪 | 欧美一级高清片欧美国产欧美 | 酒色影院| 欧美一区二区三区高清视频 | 日本三级香港三级人妇网站 | 国产美女视频黄a视频全免费网站 | 久久综合婷婷 | www亚洲成人 | 午夜爱爱毛片xxxx视频免费看 | 欧美综合色区 | 欧美精品综合一区二区三区 | 日本不卡一区 | 又黄又爽的成人免费网站 |