<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > Verilog HDL 設(shè)計(jì)模擬

          Verilog HDL 設(shè)計(jì)模擬

          作者: 時(shí)間:2017-06-06 來源:網(wǎng)絡(luò) 收藏

          Verilog|3"> 不僅提供描述設(shè)計(jì)的能力,而且提供對(duì)激勵(lì)、控制、存儲(chǔ)響應(yīng)和設(shè)計(jì)驗(yàn)證的建模能力。激勵(lì)和控制可用初始化語句產(chǎn)生。驗(yàn)證運(yùn)行過程中的響應(yīng)可以作為 “ 變化時(shí)保存 ” 或作為選通的數(shù)據(jù)存儲(chǔ)。最后,設(shè)計(jì)驗(yàn)證可以通過在初始化語句中寫入相應(yīng)的語句自動(dòng)與期望的響應(yīng)值比較完成。
          下面是測試模塊 Top 的例子。該例子測試上面講到的 FA_Seq 模塊。

          ‘timescale 1ns/1ns
          module Top; // 一個(gè)模塊可以有一個(gè)空的端口列表。
          reg PA, PB, PCi;
          wire PCo, PSum;

          // 正在測試的實(shí)例化模塊:
          FA_Seq F1(PA, PB, PCi, PSum, PCo); // 定位。

          initial
          begin: ONLY_ONCE
          reg [3:0] Pal;
          // 需要 4 位 , Pal 才能取值 8 。

          for (Pal = 0; Pal 8; Pal = Pal + 1)
          begin
          {PA, PB, PCi} = Pal;
          #5 $display (“PA, PB, PCi = %b%b%b”, PA, PB, PCi,
          “ : : : PCo, PSum=%b%b”, PCo, PSum);
          end
          end
          endmodule

          在測試模塊描述中使用位置關(guān)聯(lián)方式將模塊實(shí)例語句中的信號(hào)與模塊中的端口相連接。也就是說, PA 連接到模塊 FA_Seq 的端口 A , PB 連接到模塊 FA_Seq 的端口 B ,依此類推。注意初始化語句中使用了一個(gè) for 循環(huán)語句,在 PA 、 PB 和 PCi 上產(chǎn)生波形。 for 循環(huán)中的第一條賦值語句用于表示合并的目標(biāo)。自右向左,右端各相應(yīng)的位賦給左端的參數(shù)。初始化語句還包含有一個(gè)預(yù)先定義好的系統(tǒng)任務(wù)。系統(tǒng)任務(wù) $display 將輸入以特定的格式打印輸出。
          系統(tǒng)任務(wù) $display 調(diào)用中的時(shí)延控制規(guī)定 $display 任務(wù)在 5 個(gè)時(shí)間單位后執(zhí)行。這 5 個(gè)時(shí)間單位基本上代表了邏輯處理時(shí)間。即是輸入向量的加載至觀察到模塊在測試條件下輸出之間的延遲時(shí)間。
          這一模型中還有另外一個(gè)細(xì)微差別。 Pal 在初始化語句內(nèi)被局部定義。為完成這一功能,初始化語句中的順序過程( begin-end )必須標(biāo)記。在這種情況下 , ONLY_ONCE 是順序過程標(biāo)記。如果在順序過程內(nèi)沒有局部聲明的變量,就不需要該標(biāo)記。下面是測試模塊產(chǎn)生的輸出。

          PA, PB, PCi = 000 ::: PCo, PSum = 00
          PA, PB, PCi = 001 ::: PCo, PSum = 01
          PA, PB, PCi = 010 ::: PCo, PSum = 01
          PA, PB, PCi = 011 ::: PCo, PSum = 10
          PA, PB, PCi = 100 ::: PCo, PSum = 01
          PA, PB, PCi = 101 ::: PCo, PSum = 10
          PA, PB, PCi = 110 ::: PCo, PSum = 10
          PA, PB, PCi = 111 ::: PCo, PSum = 11

          驗(yàn)證與非門交叉連接構(gòu)成的 RS_FF 模塊的測試模塊如下例所示。

          `timescale 10ns/1ns
          module RS_FF (Q, Qbar, R, S);
          output Q, Qbar;
          input R, S;

          nand #1 (Q, R, Qbar);
          nand #1 (Qbar, S, Q,);
          // 在門實(shí)例語句中,實(shí)例名稱是可選的。
          endmodule

          module Test;
          reg TS, TR;
          wire TQ, TQb;

          // 測試模塊的實(shí)例語句:
          RS_FF NSTA (.Q(TQ), .S(TS), .R(TR), .Qbar(TQb));
          // 采用端口名相關(guān)聯(lián)的連接方式。

          // 加載激勵(lì):
          initial
          begin:
          TR = 0;
          TS = 0;
          #5 TS = 1;
          #5 TS = 0;
          TR = 1;
          #5 TS = 1;
          TR = 0;
          #5 TS = 0;
          #5 TR = 1;
          end
          // 輸出顯示:
          initial
          $monitor (At time %t , , $time,
          TR = %b, TS=%b, TQ=%b, TQb= %b, TR, TS, TQ, TQb);
          endmodule

          RS_FF 模塊描述了設(shè)計(jì)的結(jié)構(gòu)。在門實(shí)例語句中使用門時(shí)延;例如,第一個(gè)實(shí)例語句中的門時(shí)延為 1 個(gè)時(shí)間單位。該門時(shí)延意味著如果 R 或 Qbar 假定在 T 時(shí)刻變化, Q 將在 T+1 時(shí)刻獲得計(jì)算結(jié)果值。
             模塊 Test 是一個(gè)測試模塊。測試模塊中的 RS_FF 用實(shí)例語句說明其端口用端口名關(guān)聯(lián)方式連接。在這一模塊中有兩條初始化語句。第一個(gè)初始化語句只簡單地產(chǎn)生 TS 和 TR 上的波形。這一初始化語句包含帶有語句間時(shí)延的程序塊過程賦值語句。
             第二條初始化語句調(diào)用系統(tǒng)任務(wù) $monitor 。這一系統(tǒng)任務(wù)調(diào)用的功能是只要參數(shù)表中指定的變量值發(fā)生變化就打印指定的字符串。下面是測試模塊產(chǎn)生的輸出。請(qǐng)注意 `timescale 指令在時(shí)延上的影響。

          At time 0, TR=0, TS=0, TQ=x, TQb= x
          At time 10, TR=0, TS=0, TQ=1, TQb= 1
          At time 50, TR=0, TS=1, TQ=1, TQb= 1
          At time 60, TR=0, TS=1, TQ=1, TQb= 0
          At time 100, TR=1, TS=0, TQ=1, TQb= 0
          At time 110, TR=1, TS=0, TQ=1, TQb= 1
          At time 120, TR=1, TS=0, TQ=0, TQb= 1
          At time 150, TR=0, TS=1, TQ=0, TQb= 1
          At time 160, TR=0, TS=1, TQ=1, TQb= 1
          At time 170, TR=0, TS=1, TQ=1, TQb= 0
          At time 200, TR=0, TS=0, TQ=1, TQb= 0
          At time 210, TR=0, TS=0, TQ=1, TQb= 1
          At time 250, TR=1, TS=0, TQ=1, TQb= 1
          At time 260, TR=1, TS=0, TQ=0, TQb= 1

          本文引用地址:http://www.ex-cimer.com/article/201706/349488.htm


          關(guān)鍵詞: Verilog HDL 設(shè)計(jì)模擬

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();