VHDL语言语言组合逻辑电路设计课件.ppt
*VHDL語言語言組合邏輯電路設計一、邏輯門電路設計例1:用數據流描述方式設計一個4輸入“與或非”邏輯門LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYyhf4IS PORT(A,B,C,D: INSTD_LOGIC; Y: OUTSTD_LOGIC);ENDyhf4;ARCHITECTUREdata_flowOFyhf4ISBEGIN Y=NOT((AANDB)OR(CANDD));ENDdata_flow;請畫出電路圖例2:設計一雙向8位匯流排驅動器LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYqd8IS PORT( A,B: INOUTSTD_LOGIC_VECTOR(7DOWNTO0); EN,DIR:INSTD_LOGIC);ENDqd8;ARCHITECTUREbehaviorOFqd8ISSIGNALAOUT,BOUT:STD_LOGIC_VECTOR(7DOWNTO0);BEGINAB:PROCESS(A,EN,DIR) IF((EN=‘0’)AND(DIR=‘1’)THEN BOUT=A; ELSE BOUT=“ZZZZZZZZ”; ENDIF;B=BOUT;ENDPROCESSAB;為什麼定義信號?BA:PROCESS(B,EN,DIR) IF((EN=‘0’)AND(DIR=‘0’)THEN AOUT=B; ELSE AOUT=“ZZZZZZZZ”; ENDIF;ENDPROCESSBA;A=AOUTENDbehavior;例2:設計一雙向8位匯流排驅動器二編碼器設計例1:設計8-3優先權編碼器LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYbmq83IS PORT(D: INSTD_LOGIC_VECOR(7DOWNTO0); Y: OUTSTD_LOGIC_VECTOR(2DOWNTO0));ENDbmq83;ARCHITECTUREbehaviorOFbmq83ISBEGINPROCESS(D) BEGIN IFD(7)=‘0’THENY=“000”; ELSIFD(6)=‘0’THENY=“001”; ELSIFD(5)=‘0’THENY=“010”; ELSIFD(4)=‘0’THENY=“011”; ELSIFD(3)=‘0’THENY=“100”; ELSIFD(2)=‘0’THENY=“101”; ELSIFD(1)=‘0’THENY=“110”; ELSIFD(0)=‘0’THENY=“111”; ELSY=“XXX”;ENDPROCESS;ENDbehavior;該描述具有優先順序三解碼器設計例1:設計3-8線解碼器LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYymq83IS PORT(A,B,C: INSTD_LOGIC; Y:OUTSTD_LOGIC_VECTOR(7DOWNTO0));ENDymq83;請注意數據類型的聲明ARCHITECTUREbehaviorOFymq83ISSIGNALINDATA:STD_LOGIC_VECTOR(2DOWNTO0);BEGININDATA=CBA; PROCESS(INDATA) BEGIN CASEINDATAIS WHEN“000”=Y=; WHEN“001”=Y=; WHEN“010”=Y=; WHEN“011”=Y=; WHEN“100”=Y=; WHEN“101”=Y=; WHEN“110”=Y=; WHEN“111”=Y=; WHENOTHERS=Y=“XXXXXXXX”; ENDCASE;ENDPROCESS;ENDbehavior;該描述不具有優先順序例1:設計3-8線解碼器解碼器設計四、運算器設計例1:設計4位二進位加法器數據類