国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

FPGA學習筆記(五)Testbench(測試平臺)文件編寫進行Modelsim仿真

這篇具有很好參考價值的文章主要介紹了FPGA學習筆記(五)Testbench(測試平臺)文件編寫進行Modelsim仿真。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

系列文章目錄

一、FPGA學習筆記(一)入門背景、軟件及時鐘約束

二、FPGA學習筆記(二)Verilog語法初步學習(語法篇1)

三、FPGA學習筆記(三) 流水燈入門FPGA設(shè)計流程

四、FPGA學習筆記(四)通過數(shù)碼管學習頂層模塊和例化的編寫

五、FPGA學習筆記(五)Testbench(測試平臺)文件編寫進行Modelsim仿真

六、FPGA學習筆記(六)Modelsim單獨仿真和Quartus聯(lián)合仿真

七、FPGA學習筆記(七)verilog的深入學習之任務與函數(shù)(語法篇3)


Testbench文件

編寫Testbench的目的是在Modsim中進行仿真驗證,查看仿真波形和打印信息驗證代碼邏輯。

例如下面代碼:

`timescale 1ns/1ns
module tb_led_dynamic();

//parameter define
parameter   T =20 ;

//reg define
reg sys_clk;
reg sys_rst_n;

//wire define
wire [7:0]seg_led;
wire [5:0]sel;
reg  key;
wire led;
//*****************************************************
//**                    main code
//*****************************************************

initial begin
    sys_clk              <=1'b0;
    sys_rst_n            <=1'b0;
	key					 <=1'b1;
    #50 sys_rst_n          <=1'b1;	
    #1200_000_000    key   <=1'b0;
    #50_000_000      key   <=1'b1; 
    #950_000_000     key   <=1'b0;
    #50_000_000      key   <=1'b1;
end
   
always # (T/2) sys_clk <= ~sys_clk;

top_seg_led  u0(

	.sys_clk    (sys_clk),
	.sys_rst_n  (sys_rst_n),
	.seg_sel        (sel),
	.seg_led        (seg_led),
	.key		(key),
	.led		(led)	

);

endmodule  

變量聲明

聲明信號或變量的關(guān)鍵字為reg和wire,在initial語句或者always語句(過程賦值語句)中使用的變量定義成reg類型,在assign(連續(xù)賦值語句)語句或者用于連接被例化模塊名的信號定義成wire類型。

關(guān)于為什么會出現(xiàn)reg和wire的區(qū)別:

鏈接: Verilog 中定義信號為什么要區(qū)分 wire 和 reg 兩種類型?

經(jīng)典解釋:wire表示直通,即輸入有變化,輸出馬上無條件地反映(如與、非門的簡單連接)。reg表示一定要有觸發(fā),輸出才會反映輸入的狀態(tài)。reg相當于存儲單元,wire相當于物理連線。

寄存器型數(shù)據(jù)保持最后一次的賦值,而線型數(shù)據(jù)需要持續(xù)的驅(qū)動。wire使用在連續(xù)賦值語句中,而reg使用在過程賦值語句(initial ,always)中。wire若無驅(qū)動器連接,其值為z,reg默認初始值為不定值 x 。

時間單位/精度

timescale

定義時間單位: `timescale 1ns/1ns 表示時間單位為1ns,時間精度為1ns。

通常由值 1、10、和 100 以及單位 s、ms、us、ns、ps 和 fs 組成。

定義的是仿真過程所有與時間相關(guān)量的單位(即1單位的時間)。
例如常用的延時函數(shù):#50,代表著延時50個單位時間。

define

`define clock_period 20

always #(`clock_period/2) clock = ~clock;

可以自己宏定義,后面調(diào)用的時候在名字前面加 `。

測試模塊

module tb_led_dynamic();
......
.....
...
endmodule  

這里是定義了測試模塊的名字為tb_led_dynamic,編寫的.v文件中的模塊叫功能模塊,那里也有名字的定義。

在測試模塊中,輸入信號一般定義為 reg 型信號,因為后面需要在always/initial語句塊中被賦值,輸出信號一般為 wire型即可。

輸入信號初始化

用initial 語句進行初始化,該語句中的代碼塊只執(zhí)行一次

always 語句實現(xiàn)信號變化

這里的意思是每隔10個時間單位,sys_clk時鐘信號反轉(zhuǎn)一次。實現(xiàn)了50Mhz的時鐘。

還有例如:

always #10 in <= {$random} % 8

表示每隔10個時間單位in的電平變化一次

{$random}%8 表示隨機選取[0,7]之間的數(shù)。

in <= {$random} % 8; 在賦值時會自動進行數(shù)據(jù)類型轉(zhuǎn)換

實例化

如何把自定義的信號以及模擬的信號和實際功能模塊掛鉤呢,所以采用的是實例化,即把模擬的輸入信號傳入到功能模塊中。

系統(tǒng)函數(shù)

例如:

        $timeformat(-9, 0, "ns", 6);
        $monitor("time:%t in:%b out:%b",$time,in,out);

$timeformat 設(shè)置顯示時間的格式
FPGA學習筆記(五)Testbench(測試平臺)文件編寫進行Modelsim仿真

常見的有:
FPGA學習筆記(五)Testbench(測試平臺)文件編寫進行Modelsim仿真

(1)$time

作用:返回所在模塊的仿真時間,可以查看信號的出現(xiàn)的時間,用來把握信號的時序。
如: d i s p l a y ( ′ ′ t h e t i m e i s display(''the time is %t'', display(thetimeistime) ;//顯示當時的時間

(2)$display

作用: 將需要顯示的內(nèi)容在命令欄顯示出來
如: $display(“the signal is %d”,ad); //將ad信號以十進制的方式顯示出來

(3)$monitor

作用:監(jiān)視變量的變化,一旦變量變化,則將變量顯示出
如:$ monitor (“at time is %t and the signal is %b\n”,$time , signal) ;

(3) 文件操作類

$fopen
作用:打開一個文件面,對文件的操作
$fdisplay
作用:在打開的文件里,寫入顯示的內(nèi)容
$fmonitor
作用:在打開的文件里,寫入監(jiān)視的變量變化時的內(nèi)容
$fclose
作用:關(guān)閉當前的內(nèi)容

FPGA學習筆記(五)Testbench(測試平臺)文件編寫進行Modelsim仿真文章來源地址http://www.zghlxwxcb.cn/news/detail-469884.html

到了這里,關(guān)于FPGA學習筆記(五)Testbench(測試平臺)文件編寫進行Modelsim仿真的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務器費用

相關(guān)文章

  • m基于FPGA的Hamming漢明編譯碼verilog實現(xiàn),包含testbench測試文件,不使用IP核

    m基于FPGA的Hamming漢明編譯碼verilog實現(xiàn),包含testbench測試文件,不使用IP核

    目錄 1.算法仿真效果 2.算法涉及理論知識概要 2.1 Hamming編碼過程 2.2 Hamming解碼與糾錯 2.3 FPGA實現(xiàn) 3.Verilog核心程序 4.完整算法代碼文件 本系統(tǒng)進行了Vivado2019.2平臺的開發(fā),測試結(jié)果如下: ? ? ? ?在現(xiàn)代數(shù)字通信和存儲系統(tǒng)中,錯誤檢測和糾正(Error Detection and Correction, EDC)機

    2024年01月23日
    瀏覽(25)
  • 基于FPGA的ECG心電信號峰值檢測和心率計算,包括testbench測試文件和ECG數(shù)據(jù)轉(zhuǎn)換為coe文件程序

    基于FPGA的ECG心電信號峰值檢測和心率計算,包括testbench測試文件和ECG數(shù)據(jù)轉(zhuǎn)換為coe文件程序

    目錄 1.算法運行效果圖預覽 2.算法運行軟件版本 3.部分核心程序 4.算法理論概述 5.算法完整程序工程 vivado2019.2 matlab2022a ? ? ? ? 心電圖(ECG)是一種廣泛應用于醫(yī)療診斷的技術(shù),用于監(jiān)測心臟的電活動。隨著醫(yī)療技術(shù)的發(fā)展,基于FPGA(現(xiàn)場可編程門陣列)的ECG信號處理系統(tǒng)

    2024年02月10日
    瀏覽(22)
  • m基于FPGA的RS+卷積級聯(lián)編譯碼實現(xiàn),RS用IP核實現(xiàn),卷積用verilog實現(xiàn),包含testbench測試文件

    m基于FPGA的RS+卷積級聯(lián)編譯碼實現(xiàn),RS用IP核實現(xiàn),卷積用verilog實現(xiàn),包含testbench測試文件

    目錄 1.算法仿真效果 2.算法涉及理論知識概要 2.1 卷積碼編碼 2.2 RS碼編碼 2.3 級聯(lián)編碼 2.4 解碼過程 3.Verilog核心程序 4.完整算法代碼文件獲得 Vivado2019.2仿真結(jié)果如下: ? ? ? ? 級聯(lián)碼是一種通過將兩種或多種糾錯碼結(jié)合使用來提高糾錯能力的編碼方案。在RS+卷積級聯(lián)編碼中,

    2024年02月22日
    瀏覽(18)
  • 【0基礎(chǔ)學會Verilog】003. 為Verilog模塊編寫測試模塊testbench

    完成了C語言函數(shù)( function )或Verilog功能模塊( module )的編寫,接下來我們需要對其進行測試、仿真等手段來驗證函數(shù)或模塊的正確性。本篇博文介紹為一個給定的Verilog模塊編寫仿真模塊,也就是所謂 testbench 的方法。 我們?yōu)樯弦黄┪摹?基礎(chǔ)學會Verilog】002. Verilog時序邏輯實現(xiàn)

    2024年04月17日
    瀏覽(24)
  • ASIC-WORLD Verilog(10)編寫測試腳本Testbench的藝術(shù)

    ASIC-WORLD Verilog(10)編寫測試腳本Testbench的藝術(shù)

    ????????在自己準備寫一些簡單的verilog教程之前,參考了許多資料----Asic-World網(wǎng)站的這套verilog教程即是其一。這套教程寫得極好,奈何沒有中文,在下只好斗膽翻譯過來(加了自己的理解)分享給大家。 ? ? ? ? 這是網(wǎng)站原文:Verilog Tutorial ????????這是系列導航:

    2024年02月07日
    瀏覽(18)
  • 基于FPGA的Lorenz混沌系統(tǒng)verilog開發(fā),含testbench和matlab輔助測試程序

    基于FPGA的Lorenz混沌系統(tǒng)verilog開發(fā),含testbench和matlab輔助測試程序

    目錄 1.算法運行效果圖預覽 2.算法運行軟件版本 3.部分核心程序 4.算法理論概述 5.算法完整程序工程 將vivado的仿真結(jié)果導入到matlab顯示三維混沌效果: ? ? vivado2019.2 matlab2022a testbench如下所示: ? ? ? ?洛倫茲混沌系統(tǒng)是一種非線性動力系統(tǒng),最初由愛德華·洛倫茲(Edward

    2024年02月11日
    瀏覽(23)
  • 學習如何獨立的使用Modelsim進行仿真驗證?——編寫verilog文件并查看仿真波形

    學習如何獨立的使用Modelsim進行仿真驗證?——編寫verilog文件并查看仿真波形

    本篇記錄如何獨立的使用Modelsim進行仿真,便于之后查看。 Modelsim獨立仿真的步驟: 創(chuàng)建工作文件夾——編譯設(shè)計文件——導入及運行仿真——調(diào)試結(jié)果 具體的: 1、新建一個工程 指定工程名稱、路徑和默認庫名稱。一般情況下,設(shè)定Default Library Name默認庫名稱為work。 指定的

    2023年04月08日
    瀏覽(27)
  • K8S學習筆記-01(yaml文件編寫)

    原創(chuàng)文檔編寫不易,未經(jīng)許可請勿轉(zhuǎn)載。文檔中有疑問的可以郵件聯(lián)系我。 郵箱:yinwanit@163.com 記錄k8s中yaml文件編寫相關(guān)內(nèi)容。 k8s官網(wǎng)文檔庫:https://kubernetes.io/docs/home/ kubelet 命令參考:https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands k8s中yaml文件結(jié)尾需以.yml或.yaml結(jié)

    2024年02月14日
    瀏覽(21)
  • 【軟件測試】學習筆記-統(tǒng)一測試數(shù)據(jù)平臺

    【軟件測試】學習筆記-統(tǒng)一測試數(shù)據(jù)平臺

    這篇文章主要探討全球大型電商企業(yè)中關(guān)于準備測試數(shù)據(jù)的最佳實踐,從全球大型電商企業(yè)早期的測試數(shù)據(jù)準備實踐談起,分析這些測試數(shù)據(jù)準備方法在落地時遇到的問題,以及如何在實踐中解決這些問題。其實,這種分析問題、解決問題的思路,也是推動著測試數(shù)據(jù)準備時

    2024年01月17日
    瀏覽(31)
  • k8s學習筆記-3(Pod yaml文件編寫)

    k8s學習筆記-3(Pod yaml文件編寫)

    原創(chuàng)文檔編寫不易,未經(jīng)許可請勿轉(zhuǎn)載。文檔中有疑問的可以郵件聯(lián)系我。 郵箱:yinwanit@163.com Pod在k8s中歸屬apiVersion版本為v1。在編寫yaml文件中apiVersion應該設(shè)置為v1。kind才能設(shè)置成Pod。 編寫Pod的yaml文件時可以參考? kubectl explain --api-version=v1? pod. 一級一級查看具體的配置項

    2024年02月14日
    瀏覽(30)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包