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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 學習方法與實踐 > 模組(module)的概念

          模組(module)的概念

          ——
          作者: 時間:2007-08-22 來源: 收藏

            Verilog中的基本單元是)。

            代表一些可以用硬體實踐的邏輯實體。 例如,一個可以是一個邏輯閘、一個三十二位元計數(shù)器、一個記憶體子系統(tǒng)、一個機算機系統(tǒng)或是一個用網(wǎng)路相連的多部電腦。
          模組中與外界連接端(port)可以是一個位元或數(shù)個位元。連接端可以宣告為輸入端、輸出端或輸出入端。

            以下介紹Verilog語法,用三種不同層級(Level)來表示模組的方式。

            下面以一個自定的 AND2 模組來說明。

            它有三個單一位元稱為 in1、in2、及 out 的連接端。其中 in1及 in2 為輸入,而 out 為輸出。其實這個 AND2 模組能做的事和 and 閘是一樣的。

            宜礕從結構式層次定義模組的例子

            //structural

             AND2 (in1,in2,out);

            input in1;

            input in2;

            output out;

            wire in1,in2,out;

            and u1 (out,in1,in2);

            end  

          二∶從資料流層次程式定義模組的例子

            //data flow

            module AND2 (in1,in2,out);

            input in1;

            input in2;

            output out;

            wire in1,in2,out;

            assign out=in1&in2;

            endmodule

          三∶從行為式層次定義模組的例子

            //behavioral

            module AND2 (in1,in2,out); input in1; input in2; output out; wire in1,in2; reg out; always @(in1 or in2); out=in1 & in2;

            endmodule

            一個Verilog模組包含了關鍵字(keywords)、名字(names)、文字(literals)、 注解(comments)以及標點符號。Verilog語法中大小寫與C語言一樣,大小寫是不一樣的,而Verilog中所有的關鍵字均是使用小寫??瞻住⑻瘢╰ab)及換行是用來增加程式的可讀性。注解的用法為 /*注解*/。

            所有的模組均以關鍵字module開始,并緊跟著該模組的模組名稱、輸入輸出的串列。
          所有的模組均以關鍵字endmodule結束。

            模組名稱必須唯宜礎沒有重復。

            上述三個例子 的模組接著宣告輸出及輸入的型別為wire。例外的是在行為式模組的例子將其輸出宣告為 reg的型別。其實在Verilog中所有的輸出及輸入均預設為wire的型別,因此這些宣告(除了宣告為reg型別的輸出外)均可省略。

            以上三個模組分別說明三種不同的描述方式∶ 結構式(structural)、資料流程式(data-flow)及行為式(behavioral)。

          結構式的描述∶又稱邏輯閘層次 -- Gate Level

            在這層次中模組是由邏輯閘連接而成,在這層次的設計工作就好像以前用描繪邏輯閘來設計線路一樣。

          資料流程式的描述∶ 又稱暫存器傳送層次 -- Register Transation Level

            它是一種模擬組合函式(combinational-functions)的方法。使用這種描述方式,函式可視為一棵有方向性的樹(directed-tree)。輸入為其樹葉,輸出為其樹根。 當任何輸入有所改變時,輸出會被重新計算而跟著改變。資料流程式只能用來實踐組合函式。 在這個層次中,要說明資料如何在暫存器中儲存與傳送,如何處理資料。

          行為式的描述∶

            它是一種使用高階語言來描述硬體的方式。因Verilog提供很普遍及功能強大的描述方式。因此使用行為式所描述的模組其描述與真實的電路可能毫無關連。甚至某些行為式模組可能無費暈硬體實踐。這種特性是Verilog的優(yōu)點也是缺點。 在這個層次的設計工作就好像寫C語言一樣。

            (例宜礮中的結構式模組有一個AND閘的實例。在(例宜礮中的AND與其他如or、nand、nor、not等均為Verilog的基本元件(primitive)。這些是Verilog語言預先定義好的函式。例如,這個AND閘實例會不斷地觀測其輸入。如果輸入有任何變化,這個AND函式將會重新用新的輸入值計算出輸入值。

           ?。ɡ┲械馁Y料流程式模組有一個使用關鍵字assign的連續(xù)設定敘述。

           ?。ɡ┲械男袨槭侥=M有一個使用關鍵字always的行為式實例。

            @(in1or in2) 表示式告訴擬器等待 in1或 in2發(fā)生變化。 如果發(fā)生變化則下列設定 :

            output=in1&in2;

            將表示式 in1AND in2 的值放置於變數(shù)out中。同時,always這個關鍵字也意味著當這個設定完成時,模擬器將等待下一次 in1或 in2 的變化。也就是說,always區(qū)塊(block)很像傳統(tǒng)程 式語言的無窮回圈。

           

           

           



          評論


          相關推薦

          技術專區(qū)

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