国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

FPGA攻略之Testbench篇

發(fā)布時間:2014-8-15 15:17    發(fā)布者:看門狗
作者:zhuwei0710

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

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

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

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

  逐步解決編寫Testbench的這三點(diǎn):

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

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

  首先先講一下timescale,因?yàn)橄胍M(jìn)行仿真首先要規(guī)定時間單位,而且最好在Testbench里面統(tǒng)一規(guī)定時間單位,而不要在工程代碼里定義,因?yàn)椴煌哪K如果時間單位不同可能會為仿真帶來一些問題,而timescale本身對綜合也就是實(shí)際電路沒有影響。 `timescale 1ns/ 1ps表示仿真的單位時間為1ns,精度為1ps。

  clk大體上有三種寫法 :



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

  三種方法都無一例外地給clk賦了初值,因?yàn)樾盘柕娜笔≈禐閆,如果不賦初值,則反相后還是Z,時鐘就一直處于高阻Z狀態(tài)。小朱同學(xué)一般選中第一種,看個人喜歡。

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



上述兩種代碼的目的基本都是延時復(fù)位,但一個異步復(fù)位,一個同步復(fù)位,用途不同,小朱同學(xué)一般使用異步復(fù)位。

  最后“判斷被測試設(shè)計的輸出相應(yīng)是否滿足設(shè)計要求”。首先介紹最常用的兩個系統(tǒng)任務(wù)函數(shù)$stop和$finish。$stop代表暫停仿真后返回軟件操作主窗口,將控制權(quán)交給user;$finish代表終止仿真后關(guān)閉軟件操作主窗口。其他任務(wù)函數(shù)如$monitor、$display 、$time、$fwrite等也比較重要,用到的時候再一一介紹。為直觀介紹,使用一個例程來描述,下面是加法器的RTL代碼及Testbench:




  注意了clk、rst_n后,其他端口根據(jù)需要相應(yīng)加測試信號即可,然后把RTL代碼及Testbench添加到Modelsim仿真觀察輸出波形等,以驗(yàn)證RTL代碼的正確與否,若與預(yù)期相符則驗(yàn)證結(jié)束,反之則修改代碼至與預(yù)期相符。

  好了,Testbench就寫到這里,但沒有結(jié)束,實(shí)踐是檢驗(yàn)真理的唯一標(biāo)準(zhǔn),下一篇將結(jié)合Modelsim,以可視化的方式繼續(xù)探討Testbench,深入了解仿真的意義。
本文地址:http://www.qingdxww.cn/thread-131967-1-1.html     【打印本頁】

本站部分文章為轉(zhuǎn)載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀點(diǎn)和對其真實(shí)性負(fù)責(zé);文章版權(quán)歸原作者及原出處所有,如涉及作品內(nèi)容、版權(quán)和其它問題,我們將根據(jù)著作權(quán)人的要求,第一時間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區(qū)
  • 5分鐘詳解定時器/計數(shù)器E和波形擴(kuò)展!
  • 安靜高效的電機(jī)控制——這才是正確的方向!
  • 為何選擇集成電平轉(zhuǎn)換?
  • 想要避免發(fā)生災(zāi)難,就用MPLAB® SiC電源仿真器!
  • 貿(mào)澤電子(Mouser)專區(qū)

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權(quán)所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 青青草国产在线观看 | 亚洲淫视频 | 青青日 | 四虎永久免费地址在线网站 | 国产免费一区二区在线看 | 中文字幕免费在线播放 | 久草国产视频 | 自拍毛片| 免费v片视频在线观看视频 免费va在线观看 | 99re这里只有 | 亚洲天堂精品在线观看 | 夜夜狠狠狠狠 | 久久精品视频16 | 欧美性精品不卡在线观看 | 不卡欧美 | 免费福利网站在线观看 | 久久综合操 | 日韩精品永久免费播放平台 | 国产成人综合网在线播放 | 视频一区免费 | 免费一级毛片 | 狠狠色婷婷丁香综合久久韩国 | 四虎成人免费网址在线 | 国产国语一级a毛片高清视频 | 欧美a在线看| www.香蕉视频在线观看 | 国内精品久久影视免费 | 欧美中文字幕一区二区三区 | 精品国产一区二区三区在线观看 | 国产精品麻豆入口 | 国产精品视频久久久久 | 91欧美亚洲 | 国产精品爽爽va在线观看网站 | 亚洲一区二区三区高清 不卡 | 亚洲欧美日韩在线观看播放 | 91青青视频| 日本免费不卡视频一区二区三区 | 久久综合香蕉久久久久久久 | 欧美色精品天天在线观看视频 | 九九视频只有精品六 | 日本a级精品一区二区三区 日本a级黄色 |