<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 牛人業(yè)話 > FPGA攻略之Testbench篇

          FPGA攻略之Testbench篇

          作者:zhuwei0710 時間:2013-10-28 來源:電子產(chǎn)品世界 收藏

            ,就是測試平臺的意思,具體概念就多不介紹了,相信略懂的人都知道,編寫的主要目的是為了對使用硬件描述語言(HDL)設(shè)計的電路進行仿真驗證,測試設(shè)計電路的功能、部分性能是否與預(yù)期的目標相符。初學(xué)者往往把寫RTL代碼當成重點,不愿寫,包括小朱同學(xué)也是,僅僅使用 II自帶的仿真產(chǎn)生幾個激勵,然后觀察一下最后輸出的波形就完事了,甚至某些時候直接忽視仿真,拿單片機在線調(diào)試那一套來對付,直接把代碼下載到板子里看效果,若與預(yù)期不符,再修改代碼,再次下載到板子,如此反復(fù),直到某一天實在玩不下去了。

          本文引用地址:http://www.ex-cimer.com/article/184677.htm

            同志們,真不帶這么玩的!趕緊禁止自己使用 II自帶的仿真,甭畫波形圖了,你畫成大師也沒用(也成不了大師, II只能做極初級的仿真)!如果你立志從事FPGA行業(yè),那么會寫Testbench才你的敲門磚,而且別想著去公司寫RTL代碼了,向毛主席保證,公司一定是讓你來寫Testbench的。再趕緊把你的FPGA有多遠扔多遠(別丟,還是要用的),F(xiàn)PGA不是單片機,學(xué)習(xí)FPGA并不那么需要。打個比方,學(xué)習(xí)FPGA是兩萬五千里長征,那么使用連三千里都占不到,遠遠不到。對于FPGA,仿真驗證才是核心,這么講吧,驗證占到整個設(shè)計工作的70%,前仿真、后仿真、功能仿真、時序仿真、行為級仿真、RTL級仿真、綜合后仿真、門級仿真、布局布線后仿真……好吧,別暈,本篇只講Testbench,Modelsim仿真咱們下篇再討論。

            一個最基本的Testbench包含三個部分,信號定義、模塊接口和功能代碼。借用一下特權(quán)同學(xué)總結(jié)的編寫Testbench的三個基本步驟:

            1、對被測試設(shè)計的頂層接口進行例化;
            2、給被測試設(shè)計的輸入接口添加激勵;
            3、判斷被測試設(shè)計的輸出相應(yīng)是否滿足設(shè)計要求。

            逐步解決編寫Testbench的這三點:

            首先“對被測試設(shè)計的頂層接口進行例化”,這一步相對比較簡單,例化就是,但端口多時也夠喝一壺的,而且要分wire、reg,有時會弄錯,別難過,其實可以偷個懶,通過Quartus II自動生成一個Testbench的模板,選擇Processing -> Start -> Start Test Bench Template Writer,等待完成后打開剛才生成的Testbench,默認是保存在simulationModelsim文件夾下的.vt格式文件。這一步就不多講了,偷懶就挺好。

            其次“給被測試設(shè)計的輸入接口添加激勵”,一般時序設(shè)計必然涉及到最基本的兩個信號——clk、rst_n(時鐘、復(fù)位),肯定有童鞋會講可以沒有rst_n,是可以沒有,但何必呢,讓代碼更健壯一點不很好嘛,別鉆牛角尖。下面攻克clk、rst_n的寫法:

            首先先講一下timescale,因為想要進行仿真首先要規(guī)定時間單位,而且最好在Testbench里面統(tǒng)一規(guī)定時間單位,而不要在工程代碼里定義,因為不同的模塊如果時間單位不同可能會為仿真帶來一些問題,而timescale本身對綜合也就是實際電路沒有影響。 `timescale 1ns/ 1ps表示仿真的單位時間為1ns,精度為1ps。

            clk大體上有三種寫法 :

            上述三種代碼的目的就是產(chǎn)生系統(tǒng)時鐘,給clk一個初值后,不斷重復(fù)執(zhí)行:每10ns翻轉(zhuǎn)一次clk,從而生成一個周期為20ns,頻率50MHz的方波信號。第一、二種基本類似,第三種比較簡單,少了一個initial,放在了always里初始化。

            三種方法都無一例外地給clk賦了初值,因為信號的缺省值為Z,如果不賦初值,則反相后還是Z,時鐘就一直處于高阻Z狀態(tài)。小朱同學(xué)一般選中第一種,看個人喜歡。

            根據(jù)復(fù)位方式的不同,rst_n一般有兩種寫法:

          fpga相關(guān)文章:fpga是什么



          上一頁 1 2 下一頁

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();