国产精品免费无遮挡无码永久视频-国产高潮视频在线观看-精品久久国产字幕高潮-国产精品99精品无码视亚

零基礎(chǔ)學(xué)FPGA(十五)Testbenth 很重要,前仿真全過程筆記(上篇)

發(fā)布時(shí)間:2016-2-19 09:06    發(fā)布者:designapp
關(guān)鍵詞: FPGA , Testbenth
  上一篇文章我介紹了一下一片簡易CPU的設(shè)計(jì),今天的課程我講仿真,也即前仿真。這次課程,小墨同學(xué)將和大家從建立工程開始,一步步梳理testbench的書寫過程,幫助大家對仿真有一個(gè)深刻的概念。以后在做項(xiàng)目時(shí),不要?jiǎng)硬粍泳桶殉绦蛳碌桨遄永镎{(diào)試,看問題不對再去改程序,再下到板子里調(diào)試,如此往返,會浪費(fèi)大量的時(shí)間,簡單的項(xiàng)目還好,但是到了大型項(xiàng)目的話,是不可能有這么多時(shí)間讓我們這樣調(diào)的。因此,小墨同學(xué)在這里說,testbench很重要,做好了仿真,可以為我們節(jié)約大量的開發(fā)時(shí)間。
  下面我們開始吧~
  一、什么是testbench?
  從字面意思上來理解,testbench就是一個(gè)測試平臺,我們之前已經(jīng)設(shè)計(jì)好了我們需要的cpu模塊,我們怎么知道我們設(shè)計(jì)的對于不對呢?我們可以給其施加一個(gè)測試激勵(lì),例如,給他送時(shí)鐘和復(fù)位信號,由于時(shí)鐘和復(fù)位信號是我們自定義的,因此我們可以產(chǎn)生任意頻率的時(shí)鐘信號和在任意時(shí)間給系統(tǒng)復(fù)位。
  當(dāng)然我們還可以觀察我們cpu的輸出,將我們想要觀察的輸出信號引出來甚至是反饋到cpu內(nèi)部,都可以,testbench沒有像RTL代碼設(shè)計(jì)那樣嚴(yán)謹(jǐn),我們可以在符合語法規(guī)則的前提下,隨意編寫我們的測試文件,有些在RTL代碼中不可綜合的語句,我們可以在testbench中實(shí)現(xiàn)。
  


  二、testbench的結(jié)構(gòu)
  小墨同學(xué)認(rèn)為testbench的結(jié)構(gòu)可以分為這幾個(gè)方面:
  1.要先對接口進(jìn)行例化,即模塊之間的鏈接關(guān)系
  2.對我們的設(shè)計(jì)添加激勵(lì)
  3.觀察設(shè)計(jì)輸出是否符合要求
  三、測試模塊設(shè)計(jì)
  要測試我們的cpu需要ROM和RAM模塊,這就需要我們先做好這兩個(gè)模塊
  


  這里定義了一個(gè) 1024 x 8 的RAM
  


  再定義一個(gè)8192 x 8 的ROM
  ROM和RAM都還沒有裝入數(shù)據(jù),等會我們會調(diào)用函數(shù)給他們裝數(shù)據(jù)
  接下來是地址譯碼器,來控制ROM和RAM的打開與關(guān)閉
  


  各模塊建立好之后我們就開始仿真了
  四、仿真
  這次教學(xué)我們用的是modelsim SE 10.0 版本進(jìn)行教學(xué),以下是小墨同學(xué)習(xí)慣的仿真過程,因個(gè)人習(xí)慣不同,各位朋友可以按照你們 的方法來做
  我習(xí)慣直接先在quartus II中建一個(gè).v文件將其保存在原來的工程文件目錄中,并命名為cpu_top.v,直接在這里寫測試代碼
  


  下面大家可以跟著小墨的步驟一起做,來完成cpu 的仿真過程了
                               
                  1. 首先,我們需要將我們剛寫好的那幾個(gè)模塊包含進(jìn)去,即CPU模塊,ROM模塊,RAM模塊,地址譯碼器模塊,并寫好時(shí)間測量度,見下圖
  


  2.定義頂層模塊
  由于我們的設(shè)計(jì)只有兩個(gè)輸入,即時(shí)鐘模塊和復(fù)位模塊,凡是輸入信號在testbench中通一定義成reg型變量,凡是輸出或者雙向輸入輸出信號通一定義成wire型變量,我們的設(shè)計(jì)只有輸入沒有輸出,故只定義輸入和連線即可
  


  下圖便是我們要組成的測試頂層模塊圖,我們定義的wire型變量,實(shí)際就是我們頂層模塊中,模塊模塊與模塊間的連線。而這些連線就是我們cpu的輸出,這樣我們就可以用我們的測試模塊來測試我們的cpu是否能正確工作
  


  3. 元件例化
  就是將各個(gè)模塊連接起來即可,這里就不做太多的說明了,因?yàn)橐郧岸紝戇^很多次了
  


  4.測試激勵(lì)的書寫
  小墨同學(xué)習(xí)慣上上來先寫好時(shí)鐘產(chǎn)生模塊和復(fù)位模塊.并將復(fù)位模塊用task任務(wù)封裝,這樣我們在測試過程中就可以隨時(shí)調(diào)用復(fù)位任務(wù)進(jìn)行復(fù)位
  時(shí)鐘為50Mhz,復(fù)位時(shí)間為20ns
  


  然后,我們再用task封裝我們需要的模塊,我們來想一下,上電后,CPU會從ROM中讀兩個(gè)時(shí)鐘周期的數(shù)據(jù)是吧,但是我們的ROM現(xiàn)在還是空的,所以我們需要一個(gè)任務(wù)是往ROM中裝入程序,給ROM中裝數(shù)據(jù)我們可以用系統(tǒng)函數(shù)$readmemb,即打開一個(gè)文件,并將其中的數(shù)據(jù)送到我們之前定義的ROM中去
  


  而test1.pro文件時(shí)需要我們自己定義的,我們可以在quartusII中再新建一個(gè).v文件,在里面寫上我們自己定義的程序,并將其保存為.pro文件即可,至于寫什么程序,是我們隨便定義的,大家可以參考我之前在上一篇文章中上傳的程序中,有一個(gè)test1.pro文件,打開之后可以看到是一些16位的數(shù)字碼,這些碼就是我們ROM的地址,從第一行開始,每8位數(shù)據(jù)位一個(gè)地址,注意我們每個(gè)地址的高三位是用下劃線隔開的,這表明前三位是指令碼,這三位會被狀態(tài)機(jī)進(jìn)行譯碼,控制CPU執(zhí)行相應(yīng)的操作
  


  裝完ROM和RAM的數(shù)據(jù)之后,按說就可以了進(jìn)行波形仿真了,因?yàn)閏pu是自動讀取數(shù)據(jù)的,下面我們先來做第一步仿真,我先把之后的代碼注釋掉,大家先看沒有被注釋掉的代碼
  


  里面都是我們之前封裝好的函數(shù),剛開始進(jìn)行復(fù)位,然后進(jìn)行第一步測試,之后停止
                               
                  將其保存之后,小墨同學(xué)習(xí)慣將cpu_top.v文件用modelsim打開,并默認(rèn)為用其打開,打開后見下圖
  


  然后,file——new——library——ok即建好一個(gè)庫
  


  點(diǎn)擊左上角的編譯按鈕,將我們之前寫好的所有.v文件全部都編譯進(jìn)去
  


  看到transcript一欄顯示編譯成功后即可,若沒有transcript一欄,可以選擇菜單中的view——transcript即可,若顯示有紅色錯(cuò)誤,那就請讀者按照它的要求進(jìn)行修改代碼,這說明你的代碼有問題,一般是連接問題
  


  編譯成功后,雙擊cpu_top就可以開始波形仿真了
  


  進(jìn)入仿真頁面后,我們右擊cpu模塊將其加入至波形
  


  請大家看下一篇文章,小墨同學(xué)會給大家繼續(xù)講解
                               
               
本文地址:http://www.4huy16.com/thread-160928-1-1.html     【打印本頁】

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

廠商推薦

  • Microchip視頻專區(qū)
  • 技術(shù)熱潮席卷三城,2025 Microchip中國技術(shù)精英年會圓滿收官!
  • Microchip第22屆中國技術(shù)精英年會——采訪篇
  • 電動兩輪車設(shè)計(jì)生態(tài)系統(tǒng)
  • “芯”光璀璨,鵬城共賞——2025 Microchip中國技術(shù)精英年會深圳站回顧
  • 貿(mào)澤電子(Mouser)專區(qū)

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權(quán)所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復(fù) 返回頂部 返回列表