最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

HDLBits (176) — 與門

2022-06-25 19:36 作者:僚機Wingplane  | 我要投稿

本題鏈接:

https://hdlbits.01xz.net/wiki/Tb/and

你將獲得以下要測試的與門:

通過生成的以下時序圖,編寫一個 testbench 使其實例化此 AND 門并測試所有 4 個輸入組合:

題目

答案

輸出波形

testbench 一般結(jié)構如下:

其實 testbench 最基本的結(jié)構包括信號聲明、激勵和模塊例化。

根據(jù)設計的復雜度,需要引入時鐘和復位部分。當然更為復雜的設計,激勵部分也會更加復雜。根據(jù)自己的驗證需求,選擇是否需要自校驗和停止仿真部分。

當然,復位和時鐘產(chǎn)生部分,也可以看做激勵,所以它們都可以在一個語句塊中實現(xiàn)。也可以拿自校驗的結(jié)果,作為結(jié)束仿真的條件。

1)信號聲明

testbench 模塊聲明時,一般不需要聲明端口。因為激勵信號一般都在 testbench 模塊內(nèi)部,沒有外部信號。

聲明的變量應該能全部對應被測試模塊的端口。當然,變量不一定要與被測試模塊端口名字一樣。但是被測試模塊輸入端對應的變量應該聲明為 reg 型,如 clk,rstn 等,輸出端對應的變量應該聲明為 wire 型,如 dout,dout_en。

2)時鐘生成

利用取反方法產(chǎn)生時鐘時,一定要給 clk 寄存器賦初值。

利用參數(shù)的方法去指定時間延遲時,如果延時參數(shù)為浮點數(shù),該參數(shù)不要聲明為 parameter 類型。

3)復位生成

復位邏輯比較簡單,一般賦初值為 0,再經(jīng)過一段小延遲后,復位為 1 即可。

4)激勵部分

激勵部分該產(chǎn)生怎樣的輸入信號,是根據(jù)被測模塊的需要來設計的。

當數(shù)據(jù)量相對較少時,可以利用 Verilog 中的系統(tǒng)任務 $readmemh 來按行直接讀取 16 進制數(shù)據(jù)

5)模塊例化

利用 testbench 開始聲明的信號變量,對被測試模塊進行例化連接。

6)自校驗

如果設計比較簡單,完全可以通過輸入、輸出信號的波形來確定設計是否正確,此部分完全可以刪除。如果數(shù)據(jù)很多,有時候拿肉眼觀察并不能對設計的正確性進行一個有效判定。此時加入一個自校驗模塊,會大大增加仿真的效率。

實例中,我們會在數(shù)據(jù)輸出使能 dout_en 有效時,對輸出數(shù)據(jù) dout 與參考數(shù)據(jù) read_temp(激勵部分產(chǎn)生)做一個對比,并將對比結(jié)果置于信號 err_cnt 中。最后就可以通過觀察 err_cnt 信號是否為 0 來直觀的對設計的正確性進行判斷。

7)結(jié)束仿真

如果我們不加入結(jié)束仿真部分,仿真就會無限制的運行下去,波形太長有時候并不方便分析。Verilog 中提供了系統(tǒng)任務 $finish 來停止仿真。

停止仿真之前,可以將自校驗的結(jié)果,通過系統(tǒng)任務 $display 在終端進行顯示。

參考內(nèi)容:

6.6 Verilog 仿真激勵 | 菜鳥教程 (runoob.com):

https://www.runoob.com/w3cnote/verilog-testbench.html


HDLBits (176) — 與門的評論 (共 條)

分享到微博請遵守國家法律
清新县| 洪洞县| 临漳县| 万安县| 云浮市| 米林县| 闻喜县| 潢川县| 海安县| 寿光市| 乌审旗| 灵宝市| 布尔津县| 闻喜县| 会东县| 沙坪坝区| 桃源县| 台江县| 松潘县| 潞城市| 禹州市| 黄浦区| 岳池县| 洱源县| 仁寿县| 东乌珠穆沁旗| 弥勒县| 大港区| 武城县| 阿城市| 阜新市| 三门县| 清涧县| 上杭县| 巴林右旗| 光山县| 巴南区| 区。| 扎囊县| 龙海市| 翁源县|