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

零基礎學FPGA(十七)Testbench 很重要,前仿真全過程筆記(上篇)

發布時間:2015-1-20 14:14    發布者:wp1981
作者:小墨同學

    剛剛做完了高頻實驗,說實話真是做的一頭霧水。還是那種感覺,真是沒什么用,所有人拿著早已經復制好的電路圖,打開軟件運行一下,再跟助教說一聲做完了,隨便打個分就可以走人,而且還要寫一些無聊的實驗報告。算了,不吐槽了,我們來說說今天的教學內容吧。

     上一篇文章我介紹了一下一片簡易CPU的設計,今天的課程我講仿真,也即前仿真。這次課程,小墨同學將和大家從建立工程開始,一步步梳理testbench的書寫過程,幫助大家對仿真有一個深刻的概念。以后在做項目時,不要動不動就把程序下到板子里調試,看問題不對再去改程序,再下到板子里調試,如此往返,會浪費大量的時間,簡單的項目還好,但是到了大型項目的話,是不可能有這么多時間讓我們這樣調的。因此,小墨同學在這里說,testbench很重要,做好了仿真,可以為我們節約大量的開發時間。

下面我們開始吧~

一、什么是testbench?

       從字面意思上來理解,testbench就是一個測試平臺,我們之前已經設計好了我們需要的cpu模塊,我們怎么知道我們設計的對于不對呢?我們可以給其施加一個測試激勵,例如,給他送時鐘和復位信號,由于時鐘和復位信號是我們自定義的,因此我們可以產生任意頻率的時鐘信號和在任意時間給系統復位。

       當然我們還可以觀察我們cpu的輸出,將我們想要觀察的輸出信號引出來甚至是反饋到cpu內部,都可以,testbench沒有像RTL代碼設計那樣嚴謹,我們可以在符合語法規則的前提下,隨意編寫我們的測試文件,有些在RTL代碼中不可綜合的語句,我們可以在testbench中實現。



二、testbench的結構

小墨同學認為testbench的結構可以分為這幾個方面:
      1.要先對接口進行例化,即模塊之間的鏈接關系
      2.對我們的設計添加激勵
      3.觀察設計輸出是否符合要求

三、測試模塊設計

      要測試我們的cpu需要ROM和RAM模塊,這就需要我們先做好這兩個模塊



這里定義了一個 1024 x 8 的RAM



再定義一個8192  x 8 的ROM

ROM和RAM都還沒有裝入數據,等會我們會調用函數給他們裝數據

接下來是地址譯碼器,來控制ROM和RAM的打開與關閉



各模塊建立好之后我們就開始仿真了

四、仿真

      這次教學我們用的是modelsim SE 10.0 版本進行教學,以下是小墨同學習慣的仿真過程,因個人習慣不同,各位朋友可以按照你們 的方法來做

     我習慣直接先在quartus II中建一個.v文件將其保存在原來的工程文件目錄中,并命名為cpu_top.v,直接在這里寫測試代碼



下面大家可以跟著小墨的步驟一起做,來完成cpu 的仿真過程了

1.  首先,我們需要將我們剛寫好的那幾個模塊包含進去,即CPU模塊,ROM模塊,RAM模塊,地址譯碼器模塊,并寫好時間測量度,見下圖



2.定義頂層模塊

由于我們的設計只有兩個輸入,即時鐘模塊和復位模塊,凡是輸入信號在testbench中通一定義成reg型變量,凡是輸出或者雙向輸入輸出信號通一定義成wire型變量,我們的設計只有輸入沒有輸出,故只定義輸入和連線即可



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



3. 元件例化
就是將各個模塊連接起來即可,這里就不做太多的說明了,因為以前都寫過很多次了



4.測試激勵的書寫

小墨同學習慣上上來先寫好時鐘產生模塊和復位模塊.并將復位模塊用task任務封裝,這樣我們在測試過程中就可以隨時調用復位任務進行復位

時鐘為50Mhz,復位時間為20ns



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



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



裝完ROM和RAM的數據之后,按說就可以了進行波形仿真了,因為cpu是自動讀取數據的,下面我們先來做第一步仿真,我先把之后的代碼注釋掉,大家先看沒有被注釋掉的代碼



里面都是我們之前封裝好的函數,剛開始進行復位,然后進行第一步測試,之后停止

將其保存之后,小墨同學習慣將cpu_top.v文件用modelsim打開,并默認為用其打開,打開后見下圖



然后,file——new——library——ok即建好一個庫



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



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



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



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



由于只能上傳20張照片,請大家看下一篇文章,小墨同學會給大家繼續講解

以后小墨同學的文章將北京至芯科技官方技術論壇更新,至芯科技的官方技術論壇也有很多的資料供大家下載,里面也有小墨的專題板塊,希望廣大網友和愛好者的大力支持~
http://www.fpgaw.com/
小墨同學專版網址
http://www.fpgaw.com/thread-78527-1-1.html
下面是至芯科技官方網站,夏宇聞教授和那里的老師都超好的~有意愿接受FPGA培訓的可以找工作人員咨詢
http://www.zxopen.com/
       以后小墨同學的教程會跟這款開發板配套,想跟小墨同學一起學習,一起進步的的可以考慮一下購買一塊開發板,畢竟學習要舍得投資嘛,下面是開發板淘寶鏈接
http://item.taobao.com/item.htm? ... ;abbucket=13#detail
本文地址:http://www.qingdxww.cn/thread-144867-1-1.html     【打印本頁】

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

廠商推薦

  • Microchip視頻專區
  • PIC18-Q71系列MCU概述
  • 安靜高效的電機控制——這才是正確的方向!
  • 基于CEC1712實現的處理器SPI FLASH固件安全彈性方案培訓教程
  • 5分鐘詳解定時器/計數器E和波形擴展!
  • 貿澤電子(Mouser)專區

相關視頻

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 色老成人精品视频在线观看 | 国内精品一区二区在线观看 | 亚洲黄色影视 | 理论片 我不卡影院 | 91热久久免费频精品黑人99 | 国产精品久久久久尤物 | 国产高清一区二区 | 日韩欧美精品在线 | 国产一区二区在线看 | 国产一卡二卡三卡四卡 | 黄页免费在线观看 | 四虎影视在线永久免费观看 | 国产动漫在线 | 午夜黄色 | 天天干天天插 | 三级视频网站 | 一区二区三区国产 | 国产一区二区三区免费播放 | 隔壁老王国产精品福利 | 果冻传媒第一二专区天美传媒 | 在线性视频 | 日本高清在线精品一区二区三区 | 在线播放黄色片 | 免费一级大毛片a一观看不卡 | 日韩欧美一区二区三区中文精品 | 伊在人亚洲香蕉精品区麻豆 | 妈妈的朋友手机在线观看 | 日韩影音 | a毛片免费在线观看 | 免费无遮挡十八女禁污污网站 | 国产首页精品 | 国产精品密播放国产免费看 | 亚洲字幕久久 | 成人在线一区二区 | 看特级大黄一片 | 精品国产高清自在线一区二区三区 | 亚洲欧美国产精品第1页 | 久久青青草视频 | 九九视频免费看 | 日韩色吧 | 200款禁用软件永久无限大全 |