新聞中心

        模組(module)的概念

        ——
        作者: 時(shí)間:2007-08-22 來源: 收藏

          Verilog中的基本單元是)。

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

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

          下面以一個(gè)自定的 AND2 模組來說明。

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

          宜礕從結(jié)構(gòu)式層次定義模組的例子

          //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

          一個(gè)Verilog模組包含了關(guān)鍵字(keywords)、名字(names)、文字(literals)、 注解(comments)以及標(biāo)點(diǎn)符號(hào)。Verilog語法中大小寫與C語言一樣,大小寫是不一樣的,而Verilog中所有的關(guān)鍵字均是使用小寫。空白、跳格(tab)及換行是用來增加程式的可讀性。注解的用法為 /*注解*/。

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

          模組名稱必須唯宜礎(chǔ)沒有重復(fù)。

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

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

        結(jié)構(gòu)式的描述∶又稱邏輯閘層次 -- Gate Level

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

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

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

        行為式的描述∶

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

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

          (例二)中的資料流程式模組有一個(gè)使用關(guān)鍵字assign的連續(xù)設(shè)定敘述。

          (例三)中的行為式模組有一個(gè)使用關(guān)鍵字always的行為式實(shí)例。

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

          output=in1&in2;

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

         

         

         



        評(píng)論


        相關(guān)推薦

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

        關(guān)閉
        主站蜘蛛池模板: 海口市| 峨眉山市| 嘉善县| 宾阳县| 英德市| 邯郸县| 闵行区| 余干县| 改则县| 长宁县| 迁西县| 绥德县| 黄龙县| 竹山县| 含山县| 竹北市| 阿坝县| 漳平市| 车险| 梁山县| 札达县| 安丘市| 肃北| 泗阳县| 惠安县| 布拖县| 静宁县| 台东市| 共和县| 宁城县| 偏关县| 晋州市| 门源| 乌鲁木齐县| 盘锦市| 木兰县| 二手房| 墨玉县| 封丘县| 五河县| 天水市|