资源描述:
《CH10_阶层式设计.pptx》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、1階層式設計第十章儒林圖書公司TB061VHDL數位電路設計實務教本使用QuartusII方塊(Block)敘述2Block主要是將同一電路中某一功能的電路以方塊敘述劃分起來,形成一個獨立的電路模組,最後將這些獨立模組組合起來構成我們的電路,模組化的設計方式可以使得系統的維護性和偵錯性大為提高。方塊名稱:Block資料物件宣告區Begin方塊內容程式ENDBlock方塊名稱;Block方塊敘述的語法如下:keywords內部訊號方塊(Block)敘述Example:全加器設計3LIBRARYieee;USEieee.std_logic
2、_1164.all;ENTITYSUM_bISPORT(X,Y,Z:INSTD_LOGIC;sum,carry:OUTSTD_LOGIC);ENDSUM_b;ARCHITECTUREaOFSUM_bISSIGNALS1,S2,S3:STD_LOGIC;BEGINBlk_halfadder1:BLOCK--第一個半加器電路模組BEGINS1<=XXorY;S3<=XAndY;ENDBLOCKBlk_halfadder1;Blk_halfadder2:BLOCK--第二個半加器電路模組BEGINsum<=S1XorZ;S2<=S1AndZ
3、;ENDBLOCKBlk_halfadder2;Blk_or2:BLOCK--OR閘電路模組BEGINcarry<=S2orS3;ENDBLOCKBlk_or2;ENDa;方塊(Block)敘述Example:八對一多工器設計4libraryIEEE;useIEEE.STD_LOGIC_1164.all;entityMUX8_1bisport(S:INSTD_LOGIC_VECTOR(2downto0);D0,D1,D2,D3,D4,D5,D6,D7:INSTD_LOGIC;Y:OUTSTD_LOGIC);endMUX8_1b;arc
4、hitectureaofMUX8_1bisSIGNALY1,Y2:STD_LOGIC;beginMUX4TO1_1:BLOCKBEGINY1<=(D0AND(NOTS(1))AND(NOTS(0)))OR(D1AND(NOTS(1))ANDS(0))OR(D2ANDS(1)AND(NOTS(0)))OR(D3ANDS(1)ANDS(0));ENDBLOCKMUX4TO1_1;MUX4TO1_2:BLOCKBEGINY2<=(D4AND(NOTS(1))AND(NOTS(0)))OR(D5AND(NOTS(1))ANDS(0))OR(D
5、6ANDS(1)AND(NOTS(0)))OR(D7ANDS(1)ANDS(0));ENDBLOCKMUX4TO1_2;MUX2TO1:BLOCKBEGINY<=(Y1ANDnotS(2))OR(Y2ANDS(2));ENDBLOCKMUX2TO1;enda;Hierarchicaldesign:Component與PortMap5Component的功能能夠協助我們作元件資料庫的設計,它與PortMap結合可以讓我們利用現有的component像堆積木一般累積出複雜的電路。FA1:full_adderPORTMAP(Cin,a0,b
6、0,S0,t1);位置對應表示式(mustmatchtheportorder)FA1:full_adderPORTMAP(Cin=>x,a0=>y,b0=>z,S0=>Sum,t1=>Carry);名稱對應表示式:signal=>port_namePortMap腳位設定的方式如下:Component與PortMap6signalX1,X2,X3,X4:std_logic;beginU1:NAND3_OPportmap(A,B,C,X1);U2:NAND3_OPportmap(A,B,D,X2);U3:NAND3_OPportmap(A
7、,C,D,X3);U4:NAND3_OPportmap(B,C,D,X4);U5:NAND4_OPportmap(X1,X2,X3,X4,F);NAND3:是一個三輸入NAND的component利用component宣告與呼叫,再透過portmap腳位設定敘述構成更複雜的電路模組Component與PortMap:Example:四對一多工器描述(component)7libraryIEEE;useIEEE.STD_LOGIC_1164.all;ENTITYmux4_1ISPORT(D0,D1,D2,D3,S1,S0:INSTD_L
8、OGIC;Y:OUTSTD_LOGIC);ENDmux4_1;ARCHITECTUREaOFmux4_1ISBEGINY<=(D0and(notS1)and(notS0))or(D1and(notS1)andS0)or(