組合邏輯電路設(shè)計案例_第1頁
組合邏輯電路設(shè)計案例_第2頁
組合邏輯電路設(shè)計案例_第3頁
組合邏輯電路設(shè)計案例_第4頁
組合邏輯電路設(shè)計案例_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

PAGEPAGE19目錄目錄簡單門電路‥‥‥‥‥‥‥‥‥‥‥‥1三態(tài)門及總線緩沖器‥‥‥‥‥‥‥‥‥‥‥‥3轉(zhuǎn)換器‥‥‥‥‥‥‥‥‥‥‥‥6并置運算器‥‥‥‥‥‥‥‥‥‥‥‥8奇偶校驗器‥‥‥‥‥‥‥‥‥‥‥‥9加法器‥‥‥‥‥‥‥‥‥‥‥‥11選擇器‥‥‥‥‥‥‥‥‥‥‥‥12編譯碼器‥‥‥‥‥‥‥‥‥‥‥‥18二輸入與門★程序1:出處:4.1.1例4-1知識點:注意代入語句使用時與實際電路工作情況保持一致,延時是必須要考慮的因素。ENTITYand2IS

PORT(a,b:INBIT;

c:OUTBIT);

ENDENTITYand2;

ARCHITECTUREand2_behavOFand2IS

BEGIN出處:4.1.1例4-1知識點:注意代入語句使用時與實際電路工作情況保持一致,延時是必須要考慮的因素。★程序2:ENTITYand2IS

GENERIC(rise,fall:TIME);

PORT(a,b:INBIT;

c:OUTBIT)

ENDENTITYand2;

ARCHITECTUREbehavOFand2IS

SIGNALinternal:BIT;

BEGIN

internal<=aANDb;出處:4.1.4例4-4知識點:GENERIC語句常用于不同層次之間點的信息傳遞,該例中使用GENERIC語句分別對信號的上升時間和下降時間進(jìn)行了定義。c<=internalAFTER(rise)WHENinternal='1'ELSE

internalAFTER(出處:4.1.4例4-4知識點:GENERIC語句常用于不同層次之間點的信息傳遞,該例中使用GENERIC語句分別對信號的上升時間和下降時間進(jìn)行了定義?!锍绦?:LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYnand2IS

PORT(a,b:?INSTD_LOGIC;

y:?OUTSTD_LOGIC);

ENDENTITYnand2;

ARCHITECTUREnand2_2OFnand2IS

BEGIN

t1:PROCESS(a,b)IS出處:7.1.1例7-2知識點:采用RTL方式描述構(gòu)造體,使用CASE語句實現(xiàn)器件的邏輯功能。VARIABLEcomb:STD_LOGIC_VECTOR(1DOWNTO0);

BEGIN

comb:=a&b;

CASEcombIS

WHEN"00"=>y<='1';

WHEN"01"=>y<='1';

WHEN"10"=>y<='1';

WHEN"11"=>y<='0';

WHENOTHERS=>y<='X';

ENDCASE;

出處:7.1.1例7-2知識點:采用RTL方式描述構(gòu)造體,使用CASE語句實現(xiàn)器件的邏輯功能。三態(tài)門電路★程序1:出處:7.1.4例7-15知識點:利用IF語句的多選擇分支功能描述三態(tài)門,注意輸入、輸出間的控制關(guān)系。LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYtri_gateIS

PORT(din,en:?INSTD_LOGIC;

dout:?OUTSTD_LOGIC);

ENDENTITYtri_gate;

ARCHITECTUREzasOFtri_gateIS

出處:7.1.4例7-15知識點:利用IF語句的多選擇分支功能描述三態(tài)門,注意輸入、輸出間的控制關(guān)系。IF(en='1')THEN

dout<=din;

ELSE

dout<='Z';

ENDIF;

ENDPROCESS;

ENDARCHITECTUREzas;★程序2:出處:7.1.4例7-16知識點:使用衛(wèi)式BLOCK結(jié)構(gòu)描述,注意條件的設(shè)立。ARCHITECTUREblkOFtri_gateIS

BEGIN

tri_gate2:BLOCK(en='1')

BEGIN

出處:7.1.4例7-16知識點:使用衛(wèi)式BLOCK結(jié)構(gòu)描述,注意條件的設(shè)立。八位單向總線緩沖器★程序1:LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYtri_buf8IS

PORT(din:INSTD_LOGIC_VECTOR(7DOWNTO0);

dout:OUTSTD_LOGIC_VECTOR(7DOWNTO0);

en:INSTD_LOGIC);

ENDENTITYtri_buf8;

ARCHITECTUREzasOFtri_buf8IS

BEGIN出處:7.1.4例7-15知識點:采用進(jìn)程結(jié)構(gòu),使用IF語句描述器件邏輯功能。tri_buff:PROCESS(en,din)IS

BEGIN

IF(en='1')THEN

dout<=din;

ELSE

dout<="ZZZZZZZZ";

出處:7.1.4例7-15知識點:采用進(jìn)程結(jié)構(gòu),使用IF語句描述器件邏輯功能。雙向總線緩沖器★程序1:LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYtri_bigateIS

PORT(a,b:?INOUTSTD_LOGIC_VECTOR(7DOWNTO0);

en:?INSTD_LOGIC;

dr:?INSTD_LOGIC);

ENDENTITYtri_bigate;

ARCHITECTURErtlOFtri_bigate出處:7.1.4例7-23知識點:使用兩個進(jìn)程語句分別對兩個方向上的數(shù)據(jù)傳輸進(jìn)行描述。SIGNALaout,bout:STD_LOGIC_VECTOR(7DOWNTO0);

BEGIN

PROCESS(a,dr,en)IS

BEGIN

IF((en='0')AND(dr='1'))THEN

bout<=a;

ELSE

bout<="ZZZZZZZZ";

出處:7.1.4例7-23知識點:使用兩個進(jìn)程語句分別對兩個方向上的數(shù)據(jù)傳輸進(jìn)行描述。ENDPROCESS;

PROCESS(b,dr,en)IS

BEGIN

IF((en='0')AND(dr='0'))THEN

aout<=b;

ELSE

aout<="ZZZZZZZZ";

ENDIF;

a<=aout;

ENDPROCESS;

ENDARCHITECTURErtl;位矢量/整數(shù)轉(zhuǎn)換器z(i)z(i)x_flagq★程序1:出處:2.2.3例2-7知識點:構(gòu)造體采用子程序語句結(jié)構(gòu)的過程語句(PROCEDURE),掌握語句的書寫格式即使用方法。PROCEDUREvector_to_int

(z:INSTD_LOGIC_VECTOR;

x_f1ag:OUTBOOLEAN;

q:INOUTINTEGER)IS

BEGIN

q:=0;

x_f1ag:=FALSE;

出處:2.2.3例2-7知識點:構(gòu)造體采用子程序語句結(jié)構(gòu)的過程語句(PROCEDURE),掌握語句的書寫格式即使用方法。IF(z(i)=1)THEN

q:=q+1;

ELSIF(z(i)/=0)THEN

x_f1ag:=TRUE;

ENDIF

ENDLOOP;

ENDPROCEDUREvector_to_int;標(biāo)準(zhǔn)邏輯矢量/整數(shù)轉(zhuǎn)換器★程序1:出處:3.2.4例3-1知識點:程序中使用了轉(zhuǎn)換函數(shù),掌握VHDL語言中常用的轉(zhuǎn)換函數(shù)的使用方法和所在的包集合。LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYadd5IS

PORT(num:INSTD_LOGIC_VECTOR(2DOWNTO0);

…出處:3.2.4例3-1知識點:程序中使用了轉(zhuǎn)換函數(shù),掌握VHDL語言中常用的轉(zhuǎn)換函數(shù)的使用方法和所在的包集合。ARCHITECTURErtlOFadd5IS

SIGNALin_num:INTEGERRANGE0TO5;

BEGIN

in_num<=CONV_INTEGER(num);

ENDARCHITECTURErtl;并置運算器★程序1:出處出處:3.3.4知識點:注意位并置符的使用方法和使用時的注意事項?!璽mp_b<=bAND(en&en&en&en);

y<=a&tmp_b;…八位奇偶校驗電路a(a(4)a(0)a(1)a(2)a(3)a(5)a(6)a(7)y★程序1:LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYparity_checkIS

PORT(a:INSTD_LOGIC_VECTOR(7DOWNTO0);

?y:OUTSTD_LOGIC);

ENDENTITYparity_check;

ARCHITECTURErtlOFparity_checkIS

BEGIN

PROCESS(a)IS出處:5.1.7例5-13知識點:注意LOOP語句的書寫格式及使用。VARIABLEtmp:STD_LOGIC;

BEGIN

tmp:='0';

FORiIN0TO7LOOP

tmp:=tmpXORa(i);

ENDLOOP;

y<=tmp;

出處:5.1.7例5-13知識點:注意LOOP語句的書寫格式及使用?!锍绦?:LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYparity_checkIS

PORT(a:INSTD_LOGIC_VECTOR(7DOWNTO0);

?y:OUTSTD_LOGIC);

ENDENTITYparity_check;

ARCHITECTUREbehavOFparity_checkIS

BEGIN

PROCESS(a)ISVARIABLEtmp:STD_LOGIC;

BEGIN

tmp:='0';

i:=0;

WHILE(i<8)LOOP

tmp:=tmpXORa(i);

i:=i+1;

ENDLOOP;

y<=tmp;

ENDPROCESS;

ENDARCHITECTUREbehav;出處出處:5.1.7例5-14知識點:使用帶WHILE條件的LOOP語句描述八位奇偶校驗電路的邏輯功能。加法器★程序1:出處:7.1.3例7-15知識點:采用COMPONENT語句和PORTMAP語句調(diào)用已定義原件半加器half_adder描述全加器。LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYfull_adderIS

PORT(a,b,cin:?INSTD_LOGIC;

?s,co:?OUTSTD_LOGIC);

ENDENTITYfull_adder;

ARCHITECTUREfull1OFfull_adderIS

出處:7.1.3例7-15知識點:采用COMPONENT語句和PORTMAP語句調(diào)用已定義原件半加器half_adder描述全加器。s,co:?OUTSTD_LOGIC);

ENDCOMPONENT;

SIGNALu0_co,u0_s,u1_co:STD_LOGIC;

BEGIN

u0:half_adderPORTMAP(a,b,u0_s,u0_co);

u1:half_adderPORTMAP(u0_s,cin,s,u1_co);

co<=u0_coORu1_co;

ENDARCHITECTUREfull1;半加器LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYhalf_adderIS

PORT(a,b:?INSTD_LOGIC;

s,co:?OUTSTD_LOGIC);

ENDENTITYhalf_adder;

ARCHITECTUREhalf1OFhalf_adderIS

SIGNALc,d:STD_LOGIC;

BEGIN

c<=aORb;d<=aNANDb;

co<=NOTd;

s<=cANDd;

ENDARCHITECTUREhalf1;二選一選擇器★程序1:出處:1.2知識點:理解硬件描述語言能夠比電原理圖更有效的表示硬件電路的特性。ENTITYmuxIS出處:1.2知識點:理解硬件描述語言能夠比電原理圖更有效的表示硬件電路的特性。PORT(d0,?d1:INBIT;

??sel:INBIT;

??q:OUTBIT);

ENDENTITYmux;

ARCHITECTUREconnectOFmuxIS

BEGIN出處:2.1出處:2.1知識點:作為一個完整的VHDL程序出現(xiàn),掌握程序框架的結(jié)構(gòu);實體與構(gòu)造體的書寫格式;各項參數(shù)的含義。VARIBLEtemp1,temp2,temp3:BIT;BEGINtemp1:=d0ANDsel;temp2:=d1AND(NOTsel);temp3:=temp1ORtemp2;q<=temp3AFTERm;

ENDPROCESSENDARCHITECTUREconnect;★程序2(與程序1的描述方式一致,但對原件邏輯功能的描述更簡單):出處:2.1.2例2-3知識點:構(gòu)造體內(nèi)部語句采用并行處理方式,即介于BEGIN與END之間的語句將會被同時執(zhí)行。ENTITYmuxIS

PORT(d0,?d1:INBIT;

??sel:INBIT;

??q:OUTBIT);

ENDENTITYmux;

ARCHITECTUREdataflowOFmuxIS

出處:2.1.2例2-3知識點:構(gòu)造體內(nèi)部語句采用并行處理方式,即介于BEGIN與END之間的語句將會被同時執(zhí)行?!锍绦?:ENTITYmuxIS

PORT(d0,d1,sel:INBIT;

q:OUTBIT);

ENDENTITYmux;

ARCHITECTUREconnectOFmuxIS

SIGNALtmp1,tmp2,tmp3:BIT;

BEGIN

cale:BLOCK出處:2.2.1例2-4知識點:構(gòu)造體采用BLOCK結(jié)構(gòu),掌握塊語句結(jié)構(gòu)的書寫格式及使用方法。BEGIN

tmp1<=d0ANDsel;

出處:2.2.1例2-4知識點:構(gòu)造體采用BLOCK結(jié)構(gòu),掌握塊語句結(jié)構(gòu)的書寫格式及使用方法?!锍绦?:出處:2.2.2例2-6知識點:構(gòu)造體采用進(jìn)程語句結(jié)構(gòu),掌握進(jìn)程(PROCESS)語句結(jié)構(gòu)的書寫格式及使用方法。ENTITYmuxIS

PORT(d0,?d1,?sel:INBIT;

q:OUTBIT);

ENDENTITYmux;

ARCHITECTUREconnectOFmuxIS

BEGIN

cale:PROCESS(d0,?d1,出處:2.2.2例2-6知識點:構(gòu)造體采用進(jìn)程語句結(jié)構(gòu),掌握進(jìn)程(PROCESS)語句結(jié)構(gòu)的書寫格式及使用方法。tmp1:=d0ANDsel;

tmp2:=d1AND(NOTsel);

tmp3:=tmp1ORtmp2;

q<=tmp3;

ENDPROCESScale;

ENDARCHITECTUREconnect;★程序5:ENTITYmux2IS

PORT(d0,?d1,?sel:INBIT;

?q:OUTBIT);

ENDENTITYmux2;

ARCHITECTUREstructOFmux2IS

COMPONENTand2IS

PORT(a,?b:?INBIT;

c:?OUTBIT);

ENDCOMPONENT;出處:4.3.1例4-16知識點:二選一電路采用結(jié)構(gòu)化的方式描述構(gòu)造體,使用了COMPONENT語句和PORTMAP語句,屬于最底層的描述方式,與實際電路最貼近。COMPONENTor2IS

PORT(a,?b:INBIT;

c:OUTBIT);

ENDCOMPONENT;

COMPONENTinvIS

PORT(a:INBIT;

c:OUTBIT);

ENDCOMPONENT;

出處:4.3.1例4-16知識點:二選一電路采用結(jié)構(gòu)化的方式描述構(gòu)造體,使用了COMPONENT語句和PORTMAP語句,屬于最底層的描述方式,與實際電路最貼近。u2:and2PORTMAP(nsel,d1,ab);

u3:and2PORTMAP(d0,sel,aa);

u4:or2PORTMAP(aa,ab,q);

ENDARCHITECTUREstruct;★程序6:出處:出處:5.1.5例5-7知識點:利用IF語句的二選擇控制功能對二選一電路的邏輯控制進(jìn)行描述。BEGINPROCESS(a,b,sel)ISBEGINIF(sel='1')THENc<=a;ELSEc<=b;ENDIF;ENDPROCESS;ENDARCHITECTURErtl;四選一選擇器★程序1:LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYmux4IS

PORT(i0,i1,i2,i3,a,b:INSTD_LOGIC;

q:OUTSTD_LOGIC);

ENDENTITYmux4;

ARCHITECTUREbehavOFmux4IS

SIGNALsel:INTEGER;出處:5.2.4例5-18知識點:注意選擇信號代入語句的使用。條件并行執(zhí)行,不具有優(yōu)先級。出處:4.1.1例4-2知識點:注意條件代入語句的使用。BEGIN

WITHselSELECT

q<=i0AFTER10nsWHEN0,

i1AFTER10nsWHEN1,

i2AFTER10nsWHEN2,

i3AFTER10nsWHEN3,

'X'AFTER10nsWHENOTHERS;出處:5.2.4例5-18知識點:注意選擇信號代入語句的使用。條件并行執(zhí)行,不具有優(yōu)先級。出處:4.1.1例4-2知識點:注意條件代入語句的使用。3WHENa='1'ANDb='1'ELSE

4;

ENDARCHITECTUREbehav;★程序2:LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGEND.ALL;

ENTITYmux4IS

PORT(input:INSTD_LOGIC_VECTOR(3DOWNTO0);

sel:INSTD_LOGIC_VECTOR(1DOWNTO0);

y:OUTSTD_LOGIC);出處:4.2.1例4-6知識點:采用RTL描述方式描述四選一電路,注意構(gòu)造體的邏輯功能描述的方法,與上例進(jìn)行比較。ENDENTITYmux4;

ARCHITECTURErtlOFmux4IS

BEGIN

y<=input(0)WHENsel="00"ELSE

出處:4.2.1例4-6知識點:采用RTL描述方式描述四選一電路,注意構(gòu)造體的邏輯功能描述的方法,與上例進(jìn)行比較?!锍绦?:LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYmux4IS

PORT(input:INSTD_LOGIC_VECTOR(3DOWNTO0);

??sel:INSTD_LOGIC_VECTOR(1DOWNTO0);

y:OUTSTD_LOGIC);

ENDENTITYmux4;

ARCHITECTURErtlOFmux4IS

BEGIN出處:5.1.5例5-8知識點:利用IF語句的多選擇控制功能對四選一電路的邏輯功能進(jìn)行描述;選擇條件順序執(zhí)行,具有優(yōu)先級。注意語句自身為順序語句。PROCESS(input,sel)IS

BEGIN

IF(sel="00")THEN

y<=input(0);

ELSIF(sel="01")THEN

y<=input(1);

ELSIF(sel="10")THEN

出處:5.1.5例5-8知識點:利用IF語句的多選擇控制功能對四選一電路的邏輯功能進(jìn)行描述;選擇條件順序執(zhí)行,具有優(yōu)先級。注意語句自身為順序語句。ENDIF;

ENDPROCESS;

ENDARCHITECTURErtl;★程序4:LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYmux4IS

PORT(a,b,i0,i1,i2,i3:INSTD_LOGIC;

q:OUTSTD_LOGIC);

ENDENTITYmux4;

ARCHITECTUREmux4_behaveOFmux4IS

SIGNALsel:INTEGERRANGE0TO3;

BEGIN出處:5.1.6例5-9知識點:利用CASE語句的多選擇控制功能對四選一電路的邏輯功能進(jìn)行描述;選擇條件并行執(zhí)行,不具有優(yōu)先級。注意語句自身為順序語句。B:PROCESS(a,b,i0,i1,i2,i3)IS

BEGIN

sel<='0';

IF(a='1')THEN

sel<=sel+1;

ENDIF;

IF(b='1')THEN

sel<=sel+2;

出處:5.1.6例5-9知識點:利用CASE語句的多選擇控制功能對四選一電路的邏輯功能進(jìn)行描述;選擇條件并行執(zhí)行,不具有優(yōu)先級。注意語句自身為順序語句。WHEN0=>q<=i0;

WHEN1=>q<=i1;

WHEN2=>q<=i2;

WHEN3=>q<=i3;

ENDCASE;

ENDPROCESS;

ENDARCHITECTUREmux4_behave;★程序5:出處:5.2.3例5-17知識點:利用條件信號代入語句對四選一電路的邏輯功能進(jìn)行描述;條件順序執(zhí)行,具有優(yōu)先級。注意語句自身為并發(fā)語句。ENTITYmux4IS

PORT(i0,i1,i2,i3,a,b:INSTD_LOGIC;

q:OUTSTD_LOGIC);

ENDENTITYmux4;

ARCHITECTURErtlOFmux4IS

SIGNALsel:STD_LOGIC_VECTOR(1DOWNTO0);出處:5.2.3例5-17知識點:利用條件信號代入語句對四選一電路的邏輯功能進(jìn)行描述;條件順序執(zhí)行,具有優(yōu)先級。注意語句自身為并發(fā)語句。q<=i0WHENsel="00"ELSE

i1WHENsel="01"ELSE

i2WHENsel="10"ELSE

i3WHENsel="11"ELSE

'X';

ENDARCHITECTURErtl;三-八譯碼器★程序1:LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYdecode_3to8IS

PORT(a,b,c,G1,G2A,G2B:INSTD_LOGIC;

y:OUTSTD_LOGIC_VECTOR(7DOWNTO0));

ENDENTITYdecode_3to8;

ARCHITECTURErtlOFdecode_3to8IS

SIGNALindata:STD_LOGIC_VECTOR(2DOWNTO0);

BEGIN出處:5.1.6例5-10知識點:利用CASE語句對譯碼器的邏輯功能進(jìn)行描述,注意體會語句內(nèi)部的并行執(zhí)行過程與WHENOTHERS的使用。indata<=c&b&a;

PROCESS(indata,G1,G2A,G2B)IS

BEGIN

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論