日本a√视频在线,久久青青亚洲国产,亚洲一区欧美二区,免费g片在线观看网站

        <style id="k3y6c"><u id="k3y6c"></u></style>
        <s id="k3y6c"></s>
        <mark id="k3y6c"></mark>
          
          

          <mark id="k3y6c"></mark>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > Verilog HDL基礎(chǔ)知識(shí)7之模塊例化

          Verilog HDL基礎(chǔ)知識(shí)7之模塊例化

          作者: 時(shí)間:2024-02-21 來(lái)源:電子森林 收藏

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

          本文引用地址:http://yuyingmama.com.cn/article/202402/455550.htm

          在verilog中,模塊聲明由關(guān)鍵字module開(kāi)始,關(guān)鍵字endmodule則必須出現(xiàn)在模塊定義的結(jié)尾。每個(gè)模塊必須具有一個(gè)模塊名,由它唯一地標(biāo)識(shí)這個(gè)模塊。模塊的端口列表則描述這個(gè)模塊的輸入和輸出端口。

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

          使用Verilog既可以進(jìn)行行為描述,同時(shí)也可以進(jìn)行結(jié)構(gòu)描述。根據(jù)設(shè)計(jì)需要,設(shè)計(jì)者在每個(gè)模塊內(nèi)部可以在4個(gè)抽象層次中進(jìn)行描述,而模塊對(duì)外顯示的功能都是一樣的,僅與外部環(huán)境有關(guān),而與抽象層次無(wú)關(guān)。模塊的內(nèi)部結(jié)構(gòu)對(duì)于外部環(huán)境來(lái)講是透明的。因此,對(duì)模塊內(nèi)部抽象層次的改變不會(huì)影響外部環(huán)境。這些抽象層次的定義如下:

          1.行為或算法級(jí):Verilog所支持的最高抽象層次。設(shè)計(jì)者只注重其實(shí)現(xiàn)的算法,而不關(guān)心其具體的硬件實(shí)現(xiàn)細(xì)節(jié)。在這個(gè)層次上進(jìn)行的設(shè)計(jì)與C語(yǔ)言編程非常類似。

          2.數(shù)據(jù)流級(jí):通過(guò)說(shuō)明數(shù)據(jù)的流程對(duì)模塊進(jìn)行描述。設(shè)計(jì)者關(guān)心的是數(shù)據(jù)如何在各個(gè)寄存器之間流動(dòng),以及如何處理這些數(shù)據(jù)。

          3.門(mén)級(jí):從組成電路的邏輯門(mén)及其相互之間的互連關(guān)系的角度來(lái)設(shè)計(jì)模塊。這個(gè)層次的設(shè)計(jì)類似于使用門(mén)級(jí)邏輯簡(jiǎn)圖來(lái)完成設(shè)計(jì)。

          4.開(kāi)關(guān)級(jí):Verilog所支持的最低抽象層次。通過(guò)使用開(kāi)關(guān)、存儲(chǔ)節(jié)點(diǎn)及其互連關(guān)系來(lái)設(shè)計(jì)模塊。在這個(gè)層次進(jìn)行設(shè)計(jì)需要了解開(kāi)關(guān)級(jí)的實(shí)現(xiàn)細(xì)節(jié)。

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

          例化

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

          為了理解模塊的各個(gè)組成部分,我們以SR鎖存器為例進(jìn)行詳細(xì)說(shuō)明,如下。

          SR鎖存器構(gòu)成如下:

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

           // 調(diào)用(實(shí)例引用)較低層次的模塊
           // 本模塊中調(diào)用(實(shí)例引用)的是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   
           
           // 模塊語(yǔ)句結(jié)束
           endmodule


          關(guān)鍵詞: FPGA verilog HDL 模塊例化

          評(píng)論


          相關(guān)推薦

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

          關(guān)閉