色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

FPGA驗證簡介之FPGA開發分析一個testbench

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

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

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

1.511x8同步FIFO功能簡介

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

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

o4YBAGByZPuATShbAAFdQ1wC_ZQ738.png

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

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

我們再詳細分析FIFO的工作時序圖。在圖2中,開始時FIFO的讀寫指針均為0,Empty為高表示FIFO處于空的狀態,然后write_allow置高,時鐘上升沿到來時寫入第一個數據,Empty變低;一個CLK之后,read_allow置高,時鐘上升沿到來時,讀出數據,由于是最后一個數據,所以Empty信號又變為有效(高電平)。在時序圖的右半部分,寫入509個數據之后,再寫入兩個數據,Full信號變為有效,表示FIFO為滿。

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

2.驗證

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

1)FIFO復位后,read_addr和write_addr為0,Full為0,Empty為1。

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

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

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

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

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需要驗證的功能點,檢查是不是所有功能點都經過了驗證。

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

initial begin

delay; //保證驗證環境正確復位

writeburst128; //寫入512個數,Full信號應該在寫入511個數后變高

writeburst128;

writeburst128;

writeburst128;

read_enable = 1; //讀出一個數,Full信號應該變低

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

read_enable = 0; //讀操作結束

endwriteburst; //寫操作結束

delay;

readburst128; //連續讀512次,Empty信號應在讀出511個數后變高

readburst128;

readburst128;

readburst128;

endreadburst;

end

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

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

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

3.總結

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

編輯:jq

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

    關注

    36

    文章

    5964

    瀏覽量

    175780
  • fifo
    +關注

    關注

    3

    文章

    389

    瀏覽量

    43742
  • CLK
    CLK
    +關注

    關注

    0

    文章

    127

    瀏覽量

    17183

原文標題:FPGA開發分析一個testbench

文章出處:【微信號:gh_9d70b445f494,微信公眾號:FPGA設計論壇】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    編寫高效Testbench的指南和示例

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

    FPGA基礎知識學習

    RAM中。這些數據定義了FPGA中的各個邏輯門的功能以及它們之間的連接方式。這個過程被稱為FPGA的配置或編程。 旦配置完成,FPGA就可以開始執行邏輯運算了。每個邏輯門都有
    發表于 04-29 23:26

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

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

    fpga仿真器是什么?它有哪些優勢?

    FPGA仿真器是種用于模擬FPGA(現場可編程門陣列)硬件行為的軟件工具。它通過模擬FPGA內部的邏輯電路、時序和接口等,幫助工程師在FPGA
    的頭像 發表于 03-15 15:15 ?1832次閱讀

    fpga原型驗證流程

    FPGA原型驗證流程是確保FPGA(現場可編程門陣列)設計正確性和功能性的關鍵步驟。它涵蓋了從設計實現到功能驗證的整個過程,是FPGA
    的頭像 發表于 03-15 15:05 ?1621次閱讀

    fpga驗證和測試的區別

    FPGA驗證和測試在芯片設計和開發過程中都扮演著重要的角色,但它們各自有著不同的側重點和應用場景。
    的頭像 發表于 03-15 15:03 ?1259次閱讀

    fpga驗證和uvm驗證的區別

    FPGA驗證和UVM驗證在芯片設計和驗證過程中都扮演著重要的角色,但它們之間存在明顯的區別。
    的頭像 發表于 03-15 15:00 ?1679次閱讀

    fpga開發是什么意思

    FPGA開發是指利用現場可編程邏輯門陣列(Field Programmable Gate Array,簡稱FPGA)進行硬件設計和實現的過程。FPGA
    的頭像 發表于 03-15 14:28 ?1216次閱讀

    fpga仿真是什么

    FPGA仿真是驗證FPGA設計正確性的過程,主要用來分析設計電路邏輯關系的正確性。在FPGA
    的頭像 發表于 03-15 13:59 ?1534次閱讀

    fpga開發板是什么?fpga開發板有哪些?

    FPGA開發板是種基于FPGA(現場可編程門陣列)技術的開發平臺,它允許工程師通過編程來定義和配置FP
    的頭像 發表于 03-14 18:20 ?2067次閱讀

    fpga用的是什么編程語言 fpga用什么語言開發

    和VHDL都是用于邏輯設計的硬件描述語言,并且都已成為IEEE標準。它們能形式化地抽象表示電路的結構和行為,支持邏輯設計中層次與領域的描述,具有電路仿真與驗證機制以保證設計的正確性,并便于文檔管理和設計重用。 fpga用什么語言開發
    的頭像 發表于 03-14 17:09 ?3550次閱讀

    高云FPGA簡介

    Nano等開發板,性價比、資料支持等都是做的比較好的。 高云高端FPGA在圖像處理、工業控制、汽車電子、人工智能等方面已經有了很好的成熟方案??偟膩碚f,做應用上需使用FPGA,高云是
    發表于 01-28 17:35

    原型平臺是做什么的?proFPGA驗證環境介紹

    proFPGA是mentor的FPGA原型驗證平臺,當然mentor被西門子收購之后,現在叫西門子EDA。
    的頭像 發表于 01-22 09:21 ?1430次閱讀
    原型平臺是做什么的?pro<b class='flag-5'>FPGA</b><b class='flag-5'>驗證</b>環境介紹

    RK3568-ARM+FPGA通信案例開發手冊 (

    RK3568-ARM+FPGA通信案例開發手冊 (
    的頭像 發表于 01-19 10:31 ?1207次閱讀
    RK3568-ARM+<b class='flag-5'>FPGA</b>通信案例<b class='flag-5'>開發</b>手冊 (<b class='flag-5'>一</b>)

    什么是FPGA原型驗證?FPGA原型設計的好處是什么?

    FPGA原型設計是種成熟的技術,用于通過將RTL移植到現場可編程門陣列(FPGA)來驗證專門應用的集成電路(ASIC),專用標準產品(ASSP)和片上系統(SoC)的功能和性能。
    發表于 01-12 16:13 ?1255次閱讀
    主站蜘蛛池模板: 美女的避毛| 精品久久久久久久高清| 极品少妇粉嫩小泬啪啪AV| 中国女人内谢69XXXXXA片| 日本69xxxxx| 吃寂寞寡妇的奶| 无码爽死成人777在线观看网站| 国产免费看片| 亚洲午夜久久久久中文字幕| 九九免费高清在线观看视频| 成人免费视频在线观看| 2019天天射干网站| 人与人特黄一级| 久色视频网| 极品少妇高潮啪啪AV无码| 国产成人精品123区免费视频| 99人精品福利在线观看| 视频一区国产| 秋霞电影网午夜鲁丝片无码| 国产精品白浆精子流水合集| 91蜜桃视频| 少妇厨房愉情理9伦片视频| 男女肉大捧进出全过程免费| 国产AV国片精品无套内谢无码| 亚洲视频精选| 亚欧成人毛片一区二区三区四区| 久久视频精品3线视频在线观看| 国产乱码二卡3卡四卡| 成人在线免费视频观看| georgielyall装修工| 92午夜理论第1000集 app| 真实伦 乱| 在线a亚洲视频| 受喷汁红肿抽搐磨NP双性| 人妻夜夜爽99麻豆AV| 欧美高清18| 欧美性暴力变态xxxx| 精品国产免费第一区二区| 国产午夜伦鲁鲁| xnxnxn69日本| 在线色av|