零基礎學FPGA(十五)Testbenth 很重要,前仿真全過程筆記(上篇)
1. 首先,我們需要將我們剛寫好的那幾個模塊包含進去,即CPU模塊,ROM模塊,RAM模塊,地址譯碼器模塊,并寫好時間測量度,見下圖
本文引用地址:http://www.ex-cimer.com/article/270154.htm
2.定義頂層模塊
由于我們的設計只有兩個輸入,即時鐘模塊和復位模塊,凡是輸入信號在testbench中通一定義成reg型變量,凡是輸出或者雙向輸入輸出信號通一定義成wire型變量,我們的設計只有輸入沒有輸出,故只定義輸入和連線即可
下圖便是我們要組成的測試頂層模塊圖,我們定義的wire型變量,實際就是我們頂層模塊中,模塊模塊與模塊間的連線。而這些連線就是我們cpu的輸出,這樣我們就可以用我們的測試模塊來測試我們的cpu是否能正確工作
3. 元件例化
就是將各個模塊連接起來即可,這里就不做太多的說明了,因為以前都寫過很多次了
4.測試激勵的書寫
小墨同學習慣上上來先寫好時鐘產(chǎn)生模塊和復位模塊.并將復位模塊用task任務封裝,這樣我們在測試過程中就可以隨時調用復位任務進行復位
時鐘為50Mhz,復位時間為20ns
然后,我們再用task封裝我們需要的模塊,我們來想一下,上電后,CPU會從ROM中讀兩個時鐘周期的數(shù)據(jù)是吧,但是我們的ROM現(xiàn)在還是空的,所以我們需要一個任務是往ROM中裝入程序,給ROM中裝數(shù)據(jù)我們可以用系統(tǒng)函數(shù)$readmemb,即打開一個文件,并將其中的數(shù)據(jù)送到我們之前定義的ROM中去
而test1.pro文件時需要我們自己定義的,我們可以在quartusII中再新建一個.v文件,在里面寫上我們自己定義的程序,并將其保存為.pro文件即可,至于寫什么程序,是我們隨便定義的,大家可以參考我之前在上一篇文章中上傳的程序中,有一個test1.pro文件,打開之后可以看到是一些16位的數(shù)字碼,這些碼就是我們ROM的地址,從第一行開始,每8位數(shù)據(jù)位一個地址,注意我們每個地址的高三位是用下劃線隔開的,這表明前三位是指令碼,這三位會被狀態(tài)機進行譯碼,控制CPU執(zhí)行相應的操作
裝完ROM和RAM的數(shù)據(jù)之后,按說就可以了進行波形仿真了,因為cpu是自動讀取數(shù)據(jù)的,下面我們先來做第一步仿真,我先把之后的代碼注釋掉,大家先看沒有被注釋掉的代碼
里面都是我們之前封裝好的函數(shù),剛開始進行復位,然后進行第一步測試,之后停止
fpga相關文章:fpga是什么
評論