曰本美女∴一区二区特级A级黄色大片, 国产亚洲精品美女久久久久久2025, 页岩实心砖-高密市宏伟建材有限公司, 午夜小视频在线观看欧美日韩手机在线,国产人妻奶水一区二区,国产玉足,妺妺窝人体色WWW网站孕妇,色综合天天综合网中文伊,成人在线麻豆网观看

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

FPGA驗證簡介之FPGA開發(fā)分析一個testbench

電子工程師 ? 來源:CSDN技術(shù)社區(qū) ? 作者:aaaaatiger ? 2021-04-11 10:46 ? 次閱讀

很多FPGA/IC開發(fā)工具都提供設(shè)計例子,方便使用者學(xué)習(xí)和練習(xí),例如,Xilinx ISE提供了很多設(shè)計實例,放在ISE5.X的安裝目錄下的ISEexamples目錄下,例如CDMA匹配濾波器、Johnson計數(shù)器、PN碼發(fā)生器、頻率計等,這些例子是經(jīng)驗豐富的工程師寫的,我們可以學(xué)到編程思想、代碼風(fēng)格等方面的知識和經(jīng)驗,這些東西可能從學(xué)校老師或一般書籍都學(xué)習(xí)不到。

如果你用的不是Xilinx的FPGA,也就是說不使用ISE,那也沒關(guān)系,HDL代碼和testbench的設(shè)計思想和方法是一樣的,你照樣可以從中學(xué)到很多東西。下面以其中一個例子――同步FIFO為例,分析一下我們的第一個testbench,設(shè)計的源代碼可以在ISEexamples目錄下找到,Xilinx還提供了Application Note詳細(xì)介紹了該FIFO的細(xì)節(jié),

1.511x8同步FIFO功能簡介

為了對這個511x8同步FIFO進(jìn)行功能驗證,首先要清楚它的功能,只有這樣才能知道需要驗證什么功能,以及如何進(jìn)行驗證,圖1為該同步FIFO的原理框圖。

與異步FIFO相比,同步FIFO的讀、寫時鐘是同一個時鐘,簡化了FIFO的設(shè)計,Empty和Full標(biāo)志的產(chǎn)生也比較容易,同步FIFO內(nèi)部使用二進(jìn)制計數(shù)器記錄讀地址和寫地址。在異步FIFO中,由于讀寫使用不同的時鐘,也就是說設(shè)計存在兩個時鐘域,為了減少出現(xiàn)亞穩(wěn)態(tài)時產(chǎn)生的錯誤,記錄讀寫地址的計數(shù)器要使用格雷碼,Empty和Full標(biāo)志的產(chǎn)生也比較復(fù)雜。511x8同步FIFO(以下簡稱FIFO)的工作時序如圖2所示。

o4YBAGByZPuATShbAAFdQ1wC_ZQ738.png

讀FIFO數(shù)據(jù)時,首先read_allow信號置高,時鐘上升沿到來時read_addr地址處的數(shù)據(jù)將出現(xiàn)在read_data處,同時read_addr加1。讓read_allow信號持續(xù)為高可以完成burst read操作。如果讀出的數(shù)據(jù)是FIFO的最后一個數(shù)據(jù),那么讀操作完成后Empty信號變高。Empty信號為高時讀出來的數(shù)據(jù)是無效的。

寫FIFO數(shù)據(jù)時,首先write_allow信號置高,同時準(zhǔn)備好輸入數(shù)據(jù)write_data,時鐘上升沿到來時,數(shù)據(jù)將寫入write_addr所指向的地址中,同時write_addr加1。讓write_allow信號持續(xù)為高可以完成burst write操作。如果某一個時鐘上升沿時寫入第511個數(shù),那么下一個時鐘沿到來的時候Full信號變高,表示FIFO已經(jīng)寫滿。

我們再詳細(xì)分析FIFO的工作時序圖。在圖2中,開始時FIFO的讀寫指針均為0,Empty為高表示FIFO處于空的狀態(tài),然后write_allow置高,時鐘上升沿到來時寫入第一個數(shù)據(jù),Empty變低;一個CLK之后,read_allow置高,時鐘上升沿到來時,讀出數(shù)據(jù),由于是最后一個數(shù)據(jù),所以Empty信號又變?yōu)橛行Вǜ唠娖剑T跁r序圖的右半部分,寫入509個數(shù)據(jù)之后,再寫入兩個數(shù)據(jù),F(xiàn)ull信號變?yōu)橛行?,表示FIFO為滿。

這個FIFO還有一個名為fifo_count_out的輸出,從4’b0000~4’b1111,分別表示FIFO滿的程度從不足1/16到15/16,為某些應(yīng)用提供方便。

2.驗證

清楚FIFO的功能之后,我們就可以開始驗證工作了。驗證工作的第一步是整理出FIFO需要驗證的功能點,這些功能點一般直接來源于FIFO應(yīng)該具有的功能,或者來源于它的使用方法。FIFO需要驗證的功能點包括:

1)FIFO復(fù)位后,read_addr和write_addr為0,F(xiàn)ull為0,Empty為1。

2)讀FIFO數(shù)據(jù)時,read_allow信號必須置高,時鐘上升沿到來時read_addr地址處的數(shù)據(jù)將出現(xiàn)在read_data處,同時read_addr加1。

3)讀出FIFO的最后一個數(shù)據(jù)后,Empty信號變高。

4)寫FIFO數(shù)據(jù)時,write_allow信號必須置高,時鐘上升沿到來時,輸入數(shù)據(jù)write_data將寫入write_addr所指向的地址中,同時write_addr加1。

5)如果某一個時鐘上升沿時寫入第511個數(shù),那么下一個時鐘沿到來的時候Full信號變高,表示FIFO已經(jīng)寫滿。

6)fifo_count_out端能正確的指示FIFO滿的程度。

分析Xilinx提供的testbench可以為我們編寫自己的testbench提供很好的參考。FIFO的RTL代碼和testbench代碼放在ISEexamplesfifo_ver_131和fifo_vhd_131下。以verilog代碼為例,fifo_ver_131中包括了兩個testbench文件,一個是功能仿真testbench文件fifoctlr_cc_tb.tf,另一個是時序仿真(后仿真)testbench文件fifoctlr_cc_tb_timing.tf,這里我們主要分析功能仿真文件,為了方便大家理解,以下(下一帖)為注釋過的功能仿真testbench。大家看testbench的代碼時,對照FIFO需要驗證的功能點,檢查是不是所有功能點都經(jīng)過了驗證。

FIFO的testbench主要包括初始化、驗證initial塊、讀寫task等內(nèi)容,初始化部分主要完成復(fù)位信號、CLK信號等的初始化工作,讀寫task把讀寫、delay等操作模塊化,方便使用。這里主要介紹一下驗證initial塊,也可以說是驗證的主程序,如下所示。

initial begin

delay; //保證驗證環(huán)境正確復(fù)位

writeburst128; //寫入512個數(shù),F(xiàn)ull信號應(yīng)該在寫入511個數(shù)后變高

writeburst128;

writeburst128;

writeburst128;

read_enable = 1; //讀出一個數(shù),F(xiàn)ull信號應(yīng)該變低

writeburst128; //同時讀寫,檢查FIFO操作是否正確

read_enable = 0; //讀操作結(jié)束

endwriteburst; //寫操作結(jié)束

delay;

readburst128; //連續(xù)讀512次,Empty信號應(yīng)在讀出511個數(shù)后變高

readburst128;

readburst128;

readburst128;

endreadburst;

end

這段程序首先延遲5個時鐘周期,等初始化完成之后再開始驗證工作。驗證時,首先寫入512個數(shù),使用波形觀察器可以檢查寫入的過程是否正確,以及Full信號在寫入511個數(shù)后是否變高;然后read_enable = 1,讀出一個數(shù),F(xiàn)ull信號應(yīng)該變低,這樣寫操作和Full信號的驗證就基本完成了;程序接著也啟動了寫操作,由于此時read_enable仍然為高,即讀寫同時進(jìn)行,這是對實際情況的模擬,可以對FIFO的功能進(jìn)行更嚴(yán)格的驗證;最后,連續(xù)讀FIFO 512次,用波形觀察器檢查讀操作是否正確,Empty信號是否在讀出511個數(shù)后變高,如果這些操作都是正確的,那么FIFO的功能就基本正確了。

需要注意的一點是,以上的程序是不可綜合的,因為不是RTL級描述,而是行為級描述(Behavioral Description)。行為級描述的特點是直接描述對象的功能,具有比較高的抽象層次,開發(fā)、運行速度都比RTL代碼要快,因此testbench都是用行為級描述寫的。關(guān)于行為級描述的特點、寫法以后將有專門的章節(jié)論述。

這個testbench的特點是,輸入激勵由testbench產(chǎn)生,輸出響應(yīng)的檢查人工完成,這樣的testbench編寫相對容易,可以加快開發(fā)速度,作為開發(fā)人員自己驗證是非常好的選擇。有些testbench能完成輸入激勵和輸出檢查,不用觀察波形也能完成驗證工作,這樣的testbench具有更高的自動化程度,使用方便,可重復(fù)性好,當(dāng)設(shè)計比較復(fù)雜而且團(tuán)隊中有專門的驗證工程師時,一般會有驗證工程師建立一套這樣的testbench,用于驗證開發(fā)工程師的RTL級代碼,如果發(fā)現(xiàn)問題,開發(fā)工程師修改后在testbench再運行一次所花的時間非常少,開發(fā)復(fù)雜項目時這樣做可以比用波形觀察器節(jié)省很多時間。

3.總結(jié)

驗證一般要通過寫testbench實現(xiàn),testbench要完成向DUT施加激勵和檢查DUT相應(yīng)是否正確的功能,這就要求我們非常清楚待驗證模塊(DUT)的功能,這樣才知道需要驗證什么、如何施加激勵和如何檢查響應(yīng)是否正確。寫testbench時, 首先要列出需要驗證的功能,讓后再編寫testbench,這樣可以做到有的放矢,避免遺漏。

編輯:jq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • IC
    IC
    +關(guān)注

    關(guān)注

    36

    文章

    6062

    瀏覽量

    178065
  • fifo
    +關(guān)注

    關(guān)注

    3

    文章

    397

    瀏覽量

    44538
  • CLK
    CLK
    +關(guān)注

    關(guān)注

    0

    文章

    127

    瀏覽量

    17485

原文標(biāo)題:FPGA開發(fā)分析一個testbench

文章出處:【微信號:gh_9d70b445f494,微信公眾號:FPGA設(shè)計論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦
    熱點推薦

    FPGA開發(fā)需求

    我們這里有項目,有FPGA開發(fā)需求,配套DAC芯片AD9164+評估板AD9164-FMCC-EBZ使用。 需求:1.時域上產(chǎn)生周期性的脈沖信號; 2.同時要保證
    發(fā)表于 04-30 10:03

    FPGA EDA軟件的位流驗證

    位流驗證,對于芯片研發(fā)是非常重要的測試手段,對于純軟件開發(fā)人員,最難理解的就是位流驗證。在FPGA
    的頭像 發(fā)表于 04-25 09:42 ?397次閱讀
    <b class='flag-5'>FPGA</b> EDA軟件的位流<b class='flag-5'>驗證</b>

    FPGA開發(fā)任務(wù)

    還原成數(shù)據(jù)流,通過2.5Gbps網(wǎng)口轉(zhuǎn)發(fā)至目標(biāo)服務(wù)器。 3、FPGA PS編程 提供接口用于狀態(tài)監(jiān)控、串口配置等; 4、完成PCB板級調(diào)試驗證 FPGA電路調(diào)試、代碼聯(lián)調(diào)等工作。 5、完成上下位機通訊聯(lián)調(diào)
    發(fā)表于 04-22 18:46

    國產(chǎn)FPGA往事

    首先,這篇文章的后半部分,會有廣告:我去年和紫光同創(chuàng)原廠的技術(shù)專家寫了本書——《國產(chǎn)FPGA權(quán)威開發(fā)指南》,我想送
    的頭像 發(fā)表于 04-14 09:53 ?116次閱讀
    國產(chǎn)<b class='flag-5'>FPGA</b>往事

    Verilog 測試平臺設(shè)計方法 Verilog FPGA開發(fā)指南

    Verilog測試平臺設(shè)計方法是Verilog FPGA開發(fā)中的重要環(huán)節(jié),它用于驗證Verilog設(shè)計的正確性和性能。以下是詳細(xì)的Ver
    的頭像 發(fā)表于 12-17 09:50 ?905次閱讀

    MCU和FPGA的區(qū)別分析

    ): MCU是種集成電路芯片,它將計算機的CPU、存儲器、輸入/輸出接口等集成在芯片上。MCU通常用于嵌入式系統(tǒng),如家用電器、汽車電子和工業(yè)控制等。 FPGA(現(xiàn)場可編程門陣列)
    的頭像 發(fā)表于 11-11 14:58 ?2186次閱讀

    ARM開發(fā)板與FPGA的結(jié)合應(yīng)用

    、引言 ARM開發(fā)板是種基于ARM架構(gòu)的嵌入式開發(fā)平臺,具有高性能、低功耗的特點。FPGA
    的頭像 發(fā)表于 11-05 11:42 ?1276次閱讀

    編寫高效Testbench的指南和示例

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

    什么~FPGA可以自行二次開發(fā)了?

    什么!FPGA可以自行二次開發(fā)了? 目前市場上的標(biāo)準(zhǔn)采集卡通常不支持用戶自行開發(fā)FPGA。但因為應(yīng)用環(huán)境的需要,不僅僅只需要單的數(shù)據(jù)采集流
    的頭像 發(fā)表于 10-14 15:47 ?498次閱讀
    什么~<b class='flag-5'>FPGA</b>可以自行二次<b class='flag-5'>開發(fā)</b>了?

    萊迪思Propel工具套件加速FPGA應(yīng)用開發(fā)

    許多嵌入式系統(tǒng)的開發(fā)者都對使用基于FPGA的SoC系統(tǒng)感興趣,但是基于傳統(tǒng)HDL硬件描述語言的FPGA開發(fā)工具和復(fù)雜流程往往會令他們望而卻步。為了解決這
    的頭像 發(fā)表于 08-30 17:23 ?1245次閱讀

    Agilex 7 FPGA和SoC的基準(zhǔn)測試

    與同類FPGA相比,Agilex 7 FPGA可為OpenCores公開發(fā)布的設(shè)計提供超過速度等級的內(nèi)核性能提升。
    的頭像 發(fā)表于 08-30 17:07 ?695次閱讀
    Agilex 7 <b class='flag-5'>FPGA</b>和SoC的基準(zhǔn)測試

    FPGA開發(fā)工具

    學(xué)習(xí)開發(fā)FPGA,需要預(yù)先準(zhǔn)備好的工具嗎?比如示波器‘邏輯分析儀之類的。畢竟側(cè)重于硬件方面的處理。不知道和單片機開發(fā)有多少不同,和需要注意的地方。
    發(fā)表于 07-29 22:04

    FPGA如何估算分析功耗

    FPGA的功耗由4部分組成:上電功耗、配置功耗、靜態(tài)功耗和動態(tài)功耗。般的FPGA都具有這4種功耗,但是Actel Flash FPGA由于掉電數(shù)據(jù)不丟失,無需配置芯片,所以上電后不需
    的頭像 發(fā)表于 07-18 11:11 ?2316次閱讀
    <b class='flag-5'>FPGA</b>如何估算<b class='flag-5'>分析</b>功耗

    FPGA的學(xué)習(xí)筆記---FPGA開發(fā)流程

    與通常的單片機應(yīng)用開發(fā)不同,FPGA有自己的開發(fā)流程。但具體上怎樣操作,作為初學(xué)者,沒有點經(jīng)驗。網(wǎng)站獎勵的清華FPGA需要的
    發(fā)表于 06-23 14:47

    FPGA 高級設(shè)計:時序分析和收斂

    結(jié)果當(dāng)然是要求系統(tǒng)時序滿足設(shè)計者提出的要求。 下面舉最簡單的例子來說明時序分析的基本概念。 假設(shè)信號需要從輸入到輸出在FPGA 內(nèi)部經(jīng)過
    發(fā)表于 06-17 17:07