零基礎學(xué)FPGA(十五)Testbenth 很重要,前仿真全過(guò)程筆記(上篇)
上一篇文章我介紹了一下一片簡(jiǎn)易CPU的設計,今天的課程我講仿真,也即前仿真。這次課程,小墨同學(xué)將和大家從建立工程開(kāi)始,一步步梳理testbench的書(shū)寫(xiě)過(guò)程,幫助大家對仿真有一個(gè)深刻的概念。以后在做項目時(shí),不要動(dòng)不動(dòng)就把程序下到板子里調試,看問(wèn)題不對再去改程序,再下到板子里調試,如此往返,會(huì )浪費大量的時(shí)間,簡(jiǎn)單的項目還好,但是到了大型項目的話(huà),是不可能有這么多時(shí)間讓我們這樣調的。因此,小墨同學(xué)在這里說(shuō),testbench很重要,做好了仿真,可以為我們節約大量的開(kāi)發(fā)時(shí)間。
本文引用地址:http://dyxdggzs.com/article/270154.htm下面我們開(kāi)始吧~
一、什么是testbench?
從字面意思上來(lái)理解,testbench就是一個(gè)測試平臺,我們之前已經(jīng)設計好了我們需要的cpu模塊,我們怎么知道我們設計的對于不對呢?我們可以給其施加一個(gè)測試激勵,例如,給他送時(shí)鐘和復位信號,由于時(shí)鐘和復位信號是我們自定義的,因此我們可以產(chǎn)生任意頻率的時(shí)鐘信號和在任意時(shí)間給系統復位。
當然我們還可以觀(guān)察我們cpu的輸出,將我們想要觀(guān)察的輸出信號引出來(lái)甚至是反饋到cpu內部,都可以,testbench沒(méi)有像RTL代碼設計那樣嚴謹,我們可以在符合語(yǔ)法規則的前提下,隨意編寫(xiě)我們的測試文件,有些在RTL代碼中不可綜合的語(yǔ)句,我們可以在testbench中實(shí)現。

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

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

再定義一個(gè)8192 x 8 的ROM
ROM和RAM都還沒(méi)有裝入數據,等會(huì )我們會(huì )調用函數給他們裝數據
接下來(lái)是地址譯碼器,來(lái)控制ROM和RAM的打開(kāi)與關(guān)閉

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

下面大家可以跟著(zhù)小墨的步驟一起做,來(lái)完成cpu 的仿真過(guò)程了
fpga相關(guān)文章:fpga是什么
評論