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

2020-12-12 電子產品世界

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

本文引用地址:http://www.eepw.com.cn/article/270154.htm

  下面我們開始吧~

  一、什麼是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 的仿真過程了

fpga相關文章:fpga是什麼


相關焦點

  • 基於Modelsim FLI接口的FPGA仿真技術
    Modelsim的 FLI接口(即 Foreign Language InteRFace)提供了C 語言動態連結程序與仿真器的接口,可以通過 C 語言編程對設計文件進行輔助仿真。  2、協同仿真系統結構及意義  協同仿真就是利用仿真工具提供的外部接口,用其他程序設計語言(非 HDL 語言,如C 語言等)編程,輔助仿真工具進行仿真。
  • 零基礎學FPGA(五)Verilog語法基基礎基礎(下)
    9、關於任務和函數的小結,挑幾點重要的說一下吧本文引用地址:http://www.eepw.com.cn/article/267553.htm  (1)任務具有多個輸入、輸入/輸出和輸出變量,在任務重可以使用延遲、事件和時序控制結構,在任務重可以調用其它任務和函數
  • 零基礎學FPGA(四)Verilog語法基基礎基礎(中)
    我們接著上篇文章繼續學習,上次提到了兩種賦值語句,讓我們接著往下學。   case語句要注意幾點,只挑幾點重要的,其他的不說了  (1)case語句分項後的表達式的值必須相同,否則就會出現問題,例如上面圖片上的result。
  • 簡談FPGA Verilog testbench
    該時間單位由timscale決定.一般在testbench的開頭定義時間單位和仿真 精度,比如`timescale 1ns/1ps,前面一個是代表時間單位,後面一個代表仿真時間精度。以上面的例子而言,一個時鐘周期是20個單位,也就是20ns。而仿真時間精度的概 念就是,你能看到1.001ns時對應的信號值,而假如timescale 1ns/1ns,1.001ns時候的值就無法看到。
  • FPGA中的testbench
    testbench就是對寫的FPGA文件進行測試的文件,可以是verilog也可以是VHDL。verilog和VHDL的國際標準裡面有很多不能被綜合實現的語句,比如initial,forever,repeat,延時語句#1等等,這些語句就是用來測試的時候使用的。運行環境一般是ise或者vivado或者quartus自帶的仿真工具,或者如modelsim一樣的第三方仿真工具。
  • FPGA開發分析一個testbench
    分析Xilinx提供的testbench可以為我們編寫自己的testbench提供很好的參考。FIFO的RTL代碼和testbench代碼放在ISEexamples\fifo_ver_131和fifo_vhd_131下。
  • 十天學會FPGA之三——testbench的寫法
    運行環境一般是ise或者vivado自帶的仿真工具,或者如modelsim一樣的第三方仿真工具。所以testbench的測試機制就是:用各種verilog或者VHDL語法,產生滿足條件的激勵信號(也就是對被模塊的輸入),同時對模塊的輸出進行捕捉,測試輸出是否滿足要求。如下圖,產生激勵輸出驗證模塊兩個模塊都屬於testbench,最好的輸出驗證模塊最終只需要給一個pass和fail的答案出來就可以了。
  • 零基礎學篆刻:秦印的十五年,是實用印章特別重要的十五年
    中國的印章史上,有兩個比較特別的十五年:第一個十五年,是秦代的十五年;第二個,是新莽的十五年,這兩個十五年對中國的印章史,都十分重要,今天先說第一個十五年,即秦代的十五年,自秦始皇公元前221年統一中國,到公元前207年劉邦攻入鹹陽,秦王朝只存在了十五年,這十五年雖然短暫,但對於印章史來說,卻十分重要。
  • 限前500名 | 零基礎學三菱PLC,從入門到精通
    如果是視頻學習那就不一樣了,在視頻老師的教學過程中能學到很多你看書學不到的的經驗。所以今天小編把這套零基礎學三菱PLC視頻教程分享給大家,PLC從入門到精通有這份資料就足夠了!!(1)GX軟體在SFC裡面的應用(9講1.03G)(2)三菱軟體GX WORKS2  仿真
  • 用matlab來實現fpga功能的設計
    使用System Generator for DSP可以簡化這一過程。設計人員先在matlab中對系統進行建模和算法驗證,經過仿真後便可以直接將系統映射為基於FPGA的底層硬體實現方案。可用simulink提供的圖形化環境對系統進行建模。
  • 基於FPGA的m序列信號發生器設計
    因此,深入學習研究m序列具有重要的實際意義。  1 m序列信號發生器的組成  基於FPGA的m序列信號發生器硬體結構極其簡單,僅需兩個獨立按鍵(一個是復位按鍵與另一個控制數據率切換按鍵)、一個48 MHz的用於提供系統時鐘有源晶振、系統電源、一塊配置晶片、幾個簡單的電阻與電容即可實現。
  • pytorch學習筆記(2):在 MNIST 上實現一個 cnn
    如果大家對一些 DL 的基礎相關知識不懂的話,推薦幾個資源去學習:所以我們在筆記中對於一些相關的知識就不做深入介紹了。接下來進入正文吧~gogogo這篇筆記的內容包含三個部分:讀取 pytorch 自帶的數據集並分割;實現一個 CNN 的網絡結構;完成訓練。這三個部分合起來完成了一個簡單的淺層卷積神經網絡,在 MNIST 上進行訓練和測試。1.
  • verilog常用語法二讓您的FPGA設計更輕鬆
    verilog常用語法一讓您的FPGA設計更輕鬆   一般情況下
  • 音頻總線I2S協議:I2S收發模塊FPGA的仿真設計
    音頻總線I2S協議:I2S收發模塊FPGA的仿真設計 FPGA開源工作室 發表於 2020-12-14 17:34:59 1 概述
  • 基於FPGA的任意分頻器設計
    以三分頻為例,相應的電路原理圖和時序仿真圖如圖1和圖2所示,相應代碼如下:  reg clk1;  reg[1:0]cnt1;  always@(posedge clk or posedge rst) begin  if(rst)begin //復位  cnt1<=0;  clk1<=0;
  • FPGA邏輯設計回顧(5)多比特信號的CDC處理方式之MUX同步器
    前言多比特信號跨時鐘域處理的場景與方案MUX同步器參考資料前言信號的跨時鐘傳輸的方法很多,在上篇專欄中,就說了兩種有關單比特脈衝信號的跨時鐘域傳輸問題,FPGA數據同步過程根據電路框圖,我們使用Verilog語言進行描述,然後仿真,看其效果:module mux_synchronizer
  • 零基礎學高考日語,這些坑不要踩哦!
    但是對於零基礎的學生來說還是一頭霧水,零基礎學高考日語要怎麼學?怎麼入門?避免哪些坑呢?看下第六時限怎麼說。 零基礎學高考日語怎麼學? 零基礎學高考日語,入門一定要打好基礎,一般建議找老師授課或者報高考日語班。
  • modelsim仿真學習筆記(精華篇)
    2、 仿真的分類:  a) 功能仿真:在RTL層進行的仿真,其特點是不考慮構成電路的邏輯和門的時間延遲,著重考慮電路在理想環境下的行為和設計構想的一致性;  b) 時序仿真:又稱為後仿真,是在電路已經映射到特定的工藝環境後,將電路的路徑延遲和門延遲考慮進對電路行為的影響後,來比較電路的行為是否還能夠在一定條件下滿足設計構想。
  • 高速公路宏觀動態交通流模型的FPGA仿真實現
    為方便說明自定義浮點數的運算過程,設有兩個浮點數是a和b,其數據格式如式(6)所示。2.1 自定義16位浮點數加法和減法運算浮點數加、減法的操作過程相似,流程圖如圖2所示。4)尾數操作:乘法運算,兩乘數尾數的小數部分的高位補1後相乘,得到乘積的20位初始尾數d;除法運算,被除數和除數尾數的小數部分的高位均補1,對1.Ma和1.Mb進行相除操作,令d=1.Ma÷1.Mb,採用移位相減,先比較1.Ma和1.Mb大小,若1.Ma≥1.Mb,則d為1,且令1.Ma=1.Ma-l.Mb;若1.Ma1.Mb,則d為0,且令1.Ma左移一位再次進行比較得到d,依次重複上述比較過程最終得到商的初始尾數
  • r語言中test - CSDN
    在學習R語言的過程中,經常會遇到前面學習過的函數但到後面再次看到忘記了用法,在kaggle實踐中也會遇到,我以前的做法是打開書本,評印象查找,但是效率極低,現在,我通過有道雲筆記 將《R語言實戰》中的所有函數按照書本出現的順序編輯成一篇文章,然後通過檢索一鍵定位。具體做法如下:1、複製下面的函數。