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

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

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

3天內不再提示

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

OpenFPGA ? 來源:OpenFPGA ? 作者:OpenFPGA ? 2020-11-20 11:29 ? 次閱讀

Testbench編寫指南(3)模塊化工程的仿真方法

文章目錄

Testbench編寫指南(3)模塊化工程的仿真方法

仿真第1個子模塊

加入第N個子模塊

多模塊聯合仿真

1. 第一種方法

2. 第二種方法

使用Quartus+ModelSim

第3篇的題材是模塊化工程的仿真方法。現在只要是功能比較完善、規模比較大的FPGA設計都會采用模塊化設計的方法。本文介紹在模塊化設計過程中編寫testbench并仿真的方法,Vivado對此有很好的特性支持,使用Quartus+ModelSim也可以達到同樣的效果。

仿真第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”進行行為仿真,仿真結果如下圖:


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

加入第N個子模塊

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


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


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

多模塊聯合仿真

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

1. 第一種方法

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


??仿真波形窗口內默認只顯示頂層模塊的接口和在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窗口中,如下圖所示:


??點擊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”重新運行仿真,新添加信號的波形便會顯示出來。

責任編輯:lq

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

    關注

    15

    文章

    560

    瀏覽量

    45861
  • 仿真
    +關注

    關注

    50

    文章

    4082

    瀏覽量

    133608
  • 模塊化
    +關注

    關注

    0

    文章

    331

    瀏覽量

    21349

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

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

收藏 人收藏

    評論

    相關推薦

    使用ADS1211U的過程中,采樣值輸出一直為0XFFFFFF,為什么?

    最近在使用ADS1211U的過程中遇到些問題,一個問題是采樣值輸出一直為0XFFFFFF,有時候跟換一塊芯片就會好,有時候是一直是0;還有就是CPU程序仿真的過程中會與非
    發表于 12-25 06:22

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

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

    模塊化儀器的技術原理和應用場景

    不是嵌入儀器框架或包裝的顯示和控制。 軟件驅動:模塊化儀器通常沒有自己的用戶界面,因此被稱為無面儀器。它們通過共享計算機顯示器和鍵盤/鼠標進行操作,通過編程軟件接口(驅動程序)與
    發表于 11-28 15:09

    編寫高效Testbench的指南和示例

    Testbench是驗證HDL設計的主要手段,本文提供了布局和構建高效Testbench的指南以及示例。另外,本文還提供了一種示例,可以為任何設計開發自檢Testbench
    的頭像 發表于 10-29 16:14 ?267次閱讀
    <b class='flag-5'>編寫</b>高效<b class='flag-5'>Testbench</b>的指南和示例

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

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

    品英Pickering將亮相國防電子展,展示多款模塊化信號開關和仿真解決方案

    品英Pickering公司,全球領先的電子測試和驗證模塊化信號開關與仿真解決方案提供商,即將在2024年6月26日至28日于北京國家會議中心舉辦的第十三屆中國國際國防電子展上大放異彩。此次展會,品英Pickering將展出多款先進的模塊
    的頭像 發表于 06-19 11:28 ?690次閱讀

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

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

    IGBT模塊封裝過程中的技術詳解

    IGBT 模塊封裝采用了膠體隔離技術,防止運行過程中發生爆炸;第二是電極結構采用了彈簧結構,可以緩解安裝過程中對基板上形成開裂,造成基板的裂紋;第三是對底板進行加工設計,使底板與散熱器緊密接觸,提高了
    發表于 04-02 11:12 ?1145次閱讀
    IGBT<b class='flag-5'>模塊</b>封裝<b class='flag-5'>過程中</b>的技術詳解

    IGBT模塊封裝過程中的技術詳解

    IGBT 模塊是由 IGBT(絕緣柵雙極型晶體管芯片)與 FWD(續流二極管芯片)通過特定的電路橋接封裝而成的模塊化半導體產品;封裝后的 IGBT 模塊直接應用于變頻器、UPS不間斷電源等設備上。
    發表于 03-27 12:24 ?1757次閱讀
    IGBT<b class='flag-5'>模塊</b>封裝<b class='flag-5'>過程中</b>的技術詳解

    fpga前仿真和后仿真的區別

    FPGA的前仿真和后仿真芯片設計和驗證過程中扮演著不同的角色,各自具有獨特的特點和重要性。
    的頭像 發表于 03-15 15:29 ?2216次閱讀

    fpga時序仿真和功能仿真的區別

    FPGA時序仿真和功能仿真芯片設計和驗證過程中各自扮演著不可或缺的角色,它們之間存在明顯的區別。
    的頭像 發表于 03-15 15:28 ?2265次閱讀

    模塊化機房:數據中心的未來

    隨著數字轉型加速,數據中心已成為企業運營的核心。傳統的數據中心面臨空間利用不足、能源效率低下、擴展性差和維護成本高等問題。模塊化機房應運而生,它不僅克服了傳統設計的局限,還為數據中心的建設和運營帶來了革命性的改變。本文將探討模塊化
    的頭像 發表于 03-12 17:26 ?905次閱讀

    什么是模塊化機房?

    在這個數據驅動的時代,數據中心的作用變得日益重要。而模塊化機房,作為一種創新的數據中心解決方案,正在逐漸改變我們構建和管理這些關鍵設施的方式。但究竟什么是模塊化機房呢?它又為何受到越來越多行業的青睞?本文中,我們將一探究竟。
    的頭像 發表于 03-12 15:05 ?1482次閱讀

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

    模塊化UPS是什么?模塊化UPS電源機的優點? 模塊化UPS是一種將UPS電源拆分為多個獨立模塊的解決方案。每個
    的頭像 發表于 01-10 15:16 ?1362次閱讀

    什么是模塊化鋰電UPS?模塊化UPS支持鋰電池嗎?

    什么是模塊化鋰電UPS?模塊化UPS支持鋰電池嗎? 模塊化鋰電UPS是一種基于鋰電池技術的不間斷電源系統(UPS),它的主要特點是可以根據需求進行模塊化擴展和靈活配置。
    的頭像 發表于 01-09 15:51 ?899次閱讀
    主站蜘蛛池模板: 一级毛片免费网站| 日本一区二区在线视频| 国产在线a不卡免费视频| 黄色网一级片| 丁香五婷婷| 天天色天天综合网| 久久影视精品| 啪啪网站免费看| 日本一卡精品视频免费| 色偷偷视频| 欧美精品video| 国产一区二卡三区四区| 一级特黄aaa大片| 欧美色图影院| 国产h在线观看| 国产午夜精品久久久久免费视| 色成人免费网站| 午夜色图| 免费一看一级毛片| 成人a毛片免费全部播放| 天天干夜夜谢| 久久精品国产99久久72| 四虎在线免费播放| 九色在线| 天天插天天插| 91啦中文在线观看| 性视频在线| 九九九精品| you ji z z日本人在线观看| 热久久久久久| 日本午夜片成年www| 国产成人精品一区二区仙踪林| 1024手机看片欧美日韩| 伊人久久狼人| 精品一区二区三区免费毛片爱| 精品在线小视频| 男女全黄做爰视频| 欧美色伊人| 天天草狠狠干| 亚洲综合春色另类久久| 91色爱|