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

          新聞中心

          EEPW首頁 > 嵌入式系統 > 設計應用 > Verilog HDL基礎知識7之模塊例化

          Verilog HDL基礎知識7之模塊例化

          作者:時間:2024-02-21來源:電子森林收藏

          Verilog使用模塊(module)的概念來代表一個基本的功能塊。一個模塊可以是一個元件,也可以是低層次模塊的組合。常用的設計方法是使用元件構建在設計中多個地方使用的功能塊,以便進行代碼重用。模塊通過接口(輸入和輸出)被高層的模塊調用,但隱藏了內部的實現細節。這樣就使得設計者可以方便地對某個模塊進行修改,而不影響設計的其他部分。

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

          在verilog中,模塊聲明由關鍵字module開始,關鍵字endmodule則必須出現在模塊定義的結尾。每個模塊必須具有一個模塊名,由它唯一地標識這個模塊。模塊的端口列表則描述這個模塊的輸入和輸出端口。

          module <模塊名>(<模塊端口列表>);
          ...
          <模塊的內容>
          ...
          ...
          endmodule

          使用Verilog既可以進行行為描述,同時也可以進行結構描述。根據設計需要,設計者在每個模塊內部可以在4個抽象層次中進行描述,而模塊對外顯示的功能都是一樣的,僅與外部環境有關,而與抽象層次無關。模塊的內部結構對于外部環境來講是透明的。因此,對模塊內部抽象層次的改變不會影響外部環境。這些抽象層次的定義如下:

          1.行為或算法級:Verilog所支持的最高抽象層次。設計者只注重其實現的算法,而不關心其具體的硬件實現細節。在這個層次上進行的設計與C語言編程非常類似。

          2.數據流級:通過說明數據的流程對模塊進行描述。設計者關心的是數據如何在各個寄存器之間流動,以及如何處理這些數據。

          3.門級:從組成電路的邏輯門及其相互之間的互連關系的角度來設計模塊。這個層次的設計類似于使用門級邏輯簡圖來完成設計。

          4.開關級:Verilog所支持的最低抽象層次。通過使用開關、存儲節點及其互連關系來設計模塊。在這個層次進行設計需要了解開關級的實現細節。

          Verilog允許設計者在一個模塊中混合使用多個抽象層次。在數字電路設計中,術語寄存器傳輸級(RTL)描述在很多情況下是指能夠被邏輯綜合工具接受的行為級和數據流級的混合描述。

          例化

          端口是模塊與外部環境交互的通道,只有在模塊有端口的情況下才需要有端口列表和端口聲明。模塊內部的5個組成部分是:變量聲明、數據流語句、低層模塊實例、行為語句塊以及任務與函數。這些部分可以在模塊中的任意位置,以任意順序出現。在模塊的所有組成部分中,只有module、模塊名和endmodule必須出現,其他部分都是可選的,用戶可以根據設計的需要隨意選用。在一個Verilog源文件中可以定義多個模塊,Verilog對模塊的排列順序沒有要求。

          為了理解模塊的各個組成部分,我們以SR鎖存器為例進行詳細說明,如下。

          SR鎖存器構成如下:

            // 本例說明模塊的構成部件   
           
            // 模塊名和端口列表
           // SR鎖存器模塊   
           
           module SR_latch(Q, Qbar, Sbar, Rbar);   
           
           // 端口聲明
           output Q, Qbar;
           input Sbar, Rbar;   
           
           // 調用(實例引用)較低層次的模塊
           // 本例中調用(實例引用)的是Verilog原語部件nand,即與非門
           // 注意它們之間互相交叉連接的情況
           nand n1(Q, Sbar, Qbar);
           nand n2(Qbar, Rbar, Q);
           // 模塊語句結束
           endmodule   
           
           // 模塊名和端口列表
           // 測試激勵信號模塊
           module Top;   
           
           // 聲明wire, reg和其他類型的變量
           wire q, qbar;
           reg set, reset;   

           // 調用(實例引用)較低層次的模塊
           // 本模塊中調用(實例引用)的是SR_latch
           SR_latch m1(q, qbar, ~set, ~reset);   
           
           // 行為模塊, 初始化
           initial
           begin
            $monitor($time, " set = %b, reset= %b, q= %bn",set,reset,q);
            set = 0; reset = 0;
            #5 reset = 1;
            #5 reset = 0;
            #5set = 1;
           end   
           
           // 模塊語句結束
           endmodule


          評論


          相關推薦

          技術專區

          關閉
          看屁屁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); })();