您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 市场营销 > CH5_结构模式描述法
第五章1第五章結構模式描述法5-1元件之宣告5-2元件之連接5.2.1名稱對映式5.2.2位置對映式5-3階層式設計第五章2結構模式描述法是VHDL程式三種架構描述法之最後一個,而前兩種方式我們已分別在第三章及第四章中討論之。結構模式描述法將整體數位電路視為一些相互連接的元件之集合,因此若要使用此方法描述一個數位電路,我們必須要清楚的宣告每一個元件,以及說明元件間如何連接。使用結構模式描述法之最大優點是可以使用階層式設計來簡化龐大電路的設計流程。該模式可將一個複雜的電路分解成若干個較為簡單之電路,在實現完成這些簡單之電路後,透過結構模式描述程式的整合,複雜電路也就設計完成。本章討論之重點為元件之宣告以及元件連接之敘述,以及使用結構模式描述法來完成階層式設計。在5.1節中我們說明了在架構描述中如何進行元件之宣告,在5.2節則詳細陳述元件連接之語法。最後,在5.3節裏我們討論階層式設計。第五章3元件之宣告使用結構模式描述法首先需要元件宣告,元件宣告可在架構或套件內進行,其宣告之方式為:component元件名稱port(埠信號名稱1:模式1資料型態1;埠信號名稱2:模式2資料型態2;……埠信號名稱n:模式n資料型態n);endcomponent;在上述宣告中定義了一個元件,其擁有n個輸出入埠(Port),而每一個埠有一個信號名稱,同時並給予該名稱其資料型態及模式。與單體宣告類似的是:假如有兩個或兩個以上的輸出入埠其物件擁有相同之模式及型態,則我們可在宣告時予以合併之。5-1第五章4在架構中元件宣告的位置為architecture架構名稱of單體名稱is元件宣告信號物件宣告begin架構描述程式end架構名稱;因此元件宣告的位置應位於架構中第一個begin的上面。至於在套件中執行元件宣告之程序我們將在第七章中討論之。元件宣告的主要目的之一是:將另外一個已經設計完成的VHDL程式之單體,當作一個元件,並將它宣告且使用在本程式中。因此,若我們擬使用某單體來作為我們的元件,則在執行元件宣告時之元件名稱必需要與該單體名稱相同。由於單體名稱與儲存有該單體之檔案名稱也一致,所以元件名稱也必需要與該檔案名稱相同。在執行元件宣告時,除了注意元件名稱與單體名稱需要相同外,元件與單體之輸出入埠之數目,以及每一個埠的信號之資料型態以及模式也需相同。雖然元件與單體每一個埠的信號名稱可以不同,但我們建議讓這些名稱也相同以增進程式之可讀性。第五章5•以下為一些元件宣告的實例,若我們擬在程式中使用一D型正反器及一多工器,其各自之單體宣告如下:----此單體應儲存於D_FF.vhd檔案中--entityD_FFisport(Qin,clk:inbit;Qout:outbit);endD_FF;----此單體應儲存於mux4.vhd檔案中--entitymux4isport(X:inbit_vector(3downto0);S:inbit_vector(1downto0);Y:outbit);endmux4;第五章6則我們在程式中應有兩個元件宣告,其分別為componentD_FFport(Qin,clk:inbit;Qout:outbit);endcomponent;componentmux4port(X:inbit_vector(3downto0);S:inbit_vector(1downto0);Y:outbit);endcomponent;這兩個宣告之元件名稱分別為D_FF及mux4,因此在執行電路模擬或合成時編輯器會自動尋找檔案D_FF.vhd及mux4.vhd,並將其單體以及相關之架構描述載入執行。第五章7元件之連接•元件在經過宣告後,若我們要使用此元件,則需執行元件啟動(ComponentInstan-tiation),其目的即為指明此元件與電路信號的連接狀況。執行元件啟動之敘述句應位於架構描述程式中。描述元件與電路信號的連接狀況可有兩種方式:名稱對映式及位置對映式。5-2第五章85-2-1名稱對映式使用名稱對映式來執行元件啟動之語法如下:元件標題:元件名稱portmap(埠信號名稱1=信號1,埠信號名稱2=信號2,...埠信號名稱n=信號n);在此語法中,元件標題可省略,而元件名稱需要為已宣告完成之元件的名稱。我們可將元件上的每一個埠信號名稱均視作元件之“接腳”名稱,因此埠信號名稱i=信號I之含義為將信號i連接至元件之“埠信號名稱i”。值得注意的是此種連接方式有一些限制:首先,信號i與埠信號名稱i需要有相同之資料型態。其次,信號i與埠信號名稱i之模式需要一致。若埠信號名稱i之模式為in,則信號i必須能提供信號;反之,若埠信號名稱i之模式為out,則信號i必須能輸出信號。在架構中宣告的信號可為各種模式,因此可滿足此一要求。然而若信號是在單體中宣告,其只能是一種模式,我們在連接上就必須小心。舉例來說,在這種情況下若埠信號名稱i之模式為in,信號i之模式也必須為in而不能為out或inout。第五章9此語法還有一個特點是只要名稱對應正確即可,而對應之次序並不重要,例如若欲使用此語法啟動D_FF元件,我們可用下列之敘述句:D_FFportmap(Qin=a,clk=b,Qout=c);我們也可調換其對應次序為D_FFportmap(clk=b,Qin=a,Qout=c);此兩種方式皆正確,且可獲得相同之結果。第五章105-2-2位置對映式使用位置對映式來執行元件啟動之語法如下:元件標題:元件名稱portmap(信號1,信號2,...信號n);此語法之含義為將信號1連接至元件之第一個輸出入埠,將信號2連接至元件之第二個輸出入埠,以此類推,最後將信號n連接至元件之最後一個輸出入埠。使用位置對映式來執行元件啟動之語法會比使用名稱對映式之語法簡單許多。然而當一個元件輸出入埠之數目很多時,使用此語法恐容易造成錯誤或混淆,應特別留意。第五章11•以下為使用結構模式描述法之VHDL語言的簡單實例,其目的為實現如圖5.1所示之電路。該電路包含了一個and邏輯閘、一個nor邏輯閘以及一個D型正反器,其輸出入關係如表5.1所示。圖5.1CONTROL_CKT.vhd所描述之電路DQBARCLOCKCLKQDINMRARDYCTRLAS1S2第五章12•表5.1圖5.1電路之輸出入關係clkMRADINRDYCTRLA上緣變化00010上緣變化00111上緣變化01000上緣變化01100上緣變化10000上緣變化10101上緣變化11000上緣變化11100第五章13----此單體應儲存於CONTROL_CKT.vhd檔案中--entityCONTROL_CKTisport(A,clk,MR,Din:inbit;RDY,CtrlA:outbit);endCONTROL_CKT;architectureSTRUCTUREofCONTROL_CKTiscomponentAND_2port(X,Y:inbit;Z:outbit);endcomponent;componentFFport(D,CLOCK:inbit;Q,Qbar:outbit);endcomponent;componentNOR_2port(X,Y:inbit;Z:outbit);endcomponent;signalS1,S2:bit;beginC1:FFportmap(A,clk,S1,S2);C2:AND_2portmap(S2,Din,CtrlA);C3:NOR_2portmap(S1,MR,RDY);endSTRUCTURE;第五章14此程式宣告了三個元件:AND_2、NOR_2及FF,其分別代表and邏輯閘、nor邏輯閘以及D型正反器。這三個元件再以位置對映方式連接之。值得注意的是這三個元件分別代表了位於不同VHDL程式之單體,且每一單體之架構描述程式不需要一定使用結構模式描述法。以下我們將每一單體之完整VHDL程式列出:元件AND_2所代表之單體之VHDL程式如下所示:----此單體應儲存於AND_2.vhd檔案中--entityAND_2isport(X,Y:inbit;Z:outbit);endAND2;architecturedataflowofAND2isbeginZ=XandY;enddataflow;第五章15元件FF所代表之單體之VHDL程式如下所示:----此單體應儲存於FF.vhd檔案中--entityFFisport(D,CLOCK:inbit;Q,Qbar:outbit);endFF;architecturebehaviorofFFisbeginprocess(D,CLOCK)beginif(CLOCK'EVENTandCLOCK='1')thenQ=D;Qbar=notD;endif;endprocess;endbehavior;第五章16元件NOR_2所代表之單體之VHDL程式如下所示:----此單體應儲存於NOR_2.vhd檔案中--entityNOR_2isport(X,Y:inbit;Z:outbit);endNOR_2;architecturedataflowofNOR_2isbeginZ=XnorY;enddataflow;第五章17•由這些程式我們可觀察得AND_2及NOR_2之架構描述使用了資料流模式描述法,而FF使用了行為描述模式描述法。不僅如此,將這三個元件依圖5.1之方式連接時,我們又用了結構描述法。這些自由的模式選擇彈性可以降低我們電路設計的困難度。圖5.2顯示了此一電路的模擬結果,此結果與表5.1一致。圖5.2CONTROL_CKT.vhd之模擬結果第五章18階層式設計•使用結構模式描述法之最大優點是可以使用階層式設計來簡化龐大電路的設計流程。一個電路的階層可透過元件的宣告及啟動來建構完成。以下為一個階層式設計的例子。我們假設一個電路A可分解成四個部份:B、C、F及G,當中電路B可再分解為D、E以及B的剩餘部份。電路C也可再分解為E以及C的剩餘部份。5-3ABCFDEEG第五章19•我們可透過以下的元件宣告及啟動來完成此一階層式設計:entityAisport(...)endA;architectureA_internalsofAiscomponentBport(...)endcomponent;componentCport(...)endcomponent;componentFport(...)endcomponent;componentGport(...)endcomponent;beginBportmap(...);Cportmap(...);Fportmap(...);Gportmap(...);endA_internals;entityFisport(...)endF;architectureF_internalsofFisbegin--BehaviorofF....endF_internals;續接下頁程式第五章20entityBisport(...)endB;architectureB_internalsofBiscomponentDport(...)endcomponent;componentEport(...)endcomponent;beginDportmap(...);Eportmap(...);--RemainingbehaviorofB....endB_internals;entityCisport(...)endC;architectureC_internalsofCiscomponentEport(...)endcomponent;beginEportmap(...);--RemainingbehaviorofC....endC_internals;entityDisport(...)endD;architectureD_internalsofDisbegin--BehaviorofD....endD_internals;續接下頁程式第五章21entityEispor
本文标题:CH5_结构模式描述法
链接地址:https://www.777doc.com/doc-3701463 .html