基本邏輯電路設計_第1頁
基本邏輯電路設計_第2頁
基本邏輯電路設計_第3頁
基本邏輯電路設計_第4頁
基本邏輯電路設計_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第七章

基本邏輯電路設計

第七章基本邏輯電路設計主要內(nèi)容組合邏輯電路和時序邏輯的概念;組合邏輯電路設計實例;時序邏輯電路設計實例。主要內(nèi)容組合邏輯電路和時序邏輯的概念;基本概念數(shù)字邏輯電路主要分為組合邏輯電路與時序邏輯電路兩類;兩者都擁有一個或者多個輸入信號和輸出信號,但是組合邏輯電路的輸出只與當前的輸入相關,而時序邏輯電路的輸出不僅與現(xiàn)在的輸入信號相關,而且與過去的輸入信號相關;兩種邏輯電路都是數(shù)字電路系統(tǒng)的重要基本組成部分,是數(shù)字系統(tǒng)電路的基本元素?;靖拍顢?shù)字邏輯電路主要分為組合邏輯電路與時序邏輯電路兩類7.1組合邏輯電路設計7.7.1、譯碼器

譯碼器通常用來產(chǎn)生存儲器或者外設的片選信號,也就是說將二進制地址碼作為輸入,并產(chǎn)生多個選擇信號輸出。典型的譯碼器有3-8譯碼器和4-16譯碼器。

3-8譯碼器的核心代碼如下:

ENTITYdecoderIS

PORT(A,B,C,Enable:IN

STD_LOGIC;Y:OUTSTD_LOGIC_VECTOR(7DOWNTO0));ENDdecoder;ARCHITECTUREfunOFdecoderIS

SIGNALinput:STD_LOGIC_VECTOR(2DOWNTO0);BEGIN input<=C&B&A;

PROCESS(input,Enable)

BEGIN

IF(Enable='1')THEN--使能輸入高電平有效

7.1組合邏輯電路設計7.7.1、譯碼器7.7.1譯碼器(續(xù)1)3-8譯碼器的核心代碼:CASEinputIS

WHEN"000"=>Y<="11111110";

WHEN"001"=>Y<="11111101";

WHEN"010"=>Y<="11111011"; WHEN"011"=>Y<="11110111"; WHEN"100"=>Y<="11101111"; WHEN"101"=>Y<="11011111"; WHEN"110"=>Y<="10111111"; WHEN"111"=>Y<="01111111";

WHENOTHERS=>NULL;

ENDCASE; ELSE y<="11111111";

ENDIF;

ENDPROCESS;ENDfun;7.7.1譯碼器(續(xù)1)3-8譯碼器的核心代碼:7.7.1譯碼器(續(xù)2)3-8譯碼器的時序仿真波形如下:7.7.1譯碼器(續(xù)2)3-8譯碼器的時序仿真波形如下:7.1.2編碼器編碼器的邏輯功能是將輸入信號的高、低電平信號編成一個對應的二進制碼。在目前經(jīng)常使用的編碼器有普通編碼器和優(yōu)先編碼器兩種。在普通編碼器中,任何時候只允許一個編碼信號出現(xiàn),否則將出現(xiàn)混亂。但在優(yōu)先編碼器中,允許同時輸入兩個以上編碼信號。在設計優(yōu)先編碼器電路時,需要先將所有的輸入信號按優(yōu)先順序排好對,當幾個輸入信號同時出現(xiàn)時,只對優(yōu)先權最高的一個信號進行編碼。7.1.2編碼器編碼器的邏輯功能是將輸入信號的高、低電平7.1.2編碼器(續(xù)1)8-3線優(yōu)先編碼器的核心代碼如下:ENTITYencoderIS

PORT(I:INSTD_LOGIC_VECTOR(7DOWNTO0);Y:OUTSTD_LOGIC_VECTOR(2DOWNTO0);Enable:INSTD_LOGIC);ENDencoder;ARCHITECTUREfunOFencoderISBEGIN

PROCESS(I,Enable)

BEGINIFEnable='1'THEN

IFI(7)='1'THENY<="111";

ELSIFI(6)='1'THENY<="110";ELSIFI(5)='1'THENY<="101";ELSIFI(4)='1'THENY<="100";

ELSIFI(3)='1'THENY<="011";

ELSIFI(2)='1'THENY<="010";

ELSIFI(1)='1'THENY<="001";

ELSIFI(0)='1'THENY<="000";

ELSEY<="111";

ENDIF;

ELSEY<="111";

ENDIF;

ENDPROCESS;ENDfun;7.1.2編碼器(續(xù)1)8-3線優(yōu)先編碼器的核心代碼如下7.1.2編碼器(續(xù)2)8-3線優(yōu)先編碼器時序仿真波形圖如下:7.1.2編碼器(續(xù)2)8-3線優(yōu)先編碼器時序仿真波形圖7.1.3數(shù)據(jù)選擇器

在數(shù)字信號的傳輸中,有時候需要從一組數(shù)據(jù)中選出某一個數(shù)據(jù)來,這就需要用數(shù)據(jù)選擇器。常用的數(shù)據(jù)選擇器有4選1、8選1、16選1等類型。

8選1數(shù)據(jù)選擇器的核心代碼如下:

ENTITYmux4_1IS

PORT(A,B,C,D,E,F,G,H:INSTD_LOGIC_VECTOR(3DOWNTO0);s:INSTD_LOGIC_VECTOR(2DOWNTO0);Y:OUTSTD_LOGIC_VECTOR(3DOWNTO0));ENDmux8_1;ARCHITECTUREfunOFmux8_1ISBEGINY<=AWHENs="000"ELSEBWHENs="001"ELSECWHENs="010"ELSE

DWHENs="011"ELSEEWHENs="100"ELSEFWHENs="101"ELSEGWHENs="110"ELSEH;ENDfun;7.1.3數(shù)據(jù)選擇器在數(shù)字信號的傳輸中,有時7.1.3數(shù)據(jù)選擇器(續(xù))8選1數(shù)據(jù)選擇器的時序仿真波形圖如下:7.1.3數(shù)據(jù)選擇器(續(xù))8選1數(shù)據(jù)選擇器的時序仿真波形7.1.4數(shù)值比較器

在一些數(shù)字系統(tǒng)中,經(jīng)常需要比較兩個數(shù)字的大小,為完成這一功能所設計的各種邏輯電路統(tǒng)稱為數(shù)值比較器。數(shù)值比較器根據(jù)比較數(shù)據(jù)的位數(shù)不同,可以分為一位數(shù)值比較器和多位數(shù)值比較器。通用多位數(shù)值比較器的核心代碼如下:ENTITYcompIS

GENERIC(X:INTEGER:=4);

PORT(A,B:INSTD_LOGIC_VECTOR(X-1DOWNTO0);Y1,Y2,Y3:OUTSTD_LOGIC);ENDcomp;ARCHITECTUREfunOFcompISBEGINPROCESS(A,B)

BEGIN

IFA>BTHENY1<='1';

ELSEY1<='0';

ENDIF;IFA<BTHENY2<='1';

ELSEY2<='0';

ENDIF;

IFA=BTHEN

Y3<='1';

ELSEY3<='0';

ENDIF;

ENDPROCESS;ENDfun;7.1.4數(shù)值比較器在一些數(shù)字系統(tǒng)中,經(jīng)常需要比7.1.4數(shù)值比較器(續(xù))4位數(shù)值比較器的時序仿真波形圖

7.1.4數(shù)值比較器(續(xù))4位數(shù)值比較器的時序仿真波形圖7.1.5奇偶校驗器

奇偶校驗器經(jīng)常用在數(shù)字電路的檢測中,用來檢測一個二進制數(shù)據(jù)中的0或1的個數(shù)為奇數(shù)還是偶數(shù),然后輸出檢測結果。8位奇偶校驗器的核心代碼如下:ENTITYcheck_NISPORT(A:INSTD_LOGIC_VECTOR(7DOWNTO0);Y:OUTSTD_LOGIC);ENDcheck_N;ARCHITECTUREfunOFcheck_NISBEGINPROCESS(A)

VARIABLEtemp:STD_LOGIC;BEGINtemp:='1';

FORnIN0TO7LOOP

temp:=tempxorA(n);

ENDLOOP;Y<=temp;

ENDPROCESS;ENDfun;

8位奇偶校驗器的時序仿真波形圖如下:7.1.5奇偶校驗器奇偶校驗器經(jīng)常用在數(shù)字7.2時序邏輯電路設計7.2.1觸發(fā)器觸發(fā)器是能夠存儲二值信號的基本單元電路。觸發(fā)器的種類有很多,根據(jù)不同的功能可以分為D觸發(fā)器、T觸發(fā)器、JK觸發(fā)器已經(jīng)RS觸發(fā)器等。JK觸發(fā)器的核心代碼如下ENTITYjk_triggerIS

PORT(J,K,CLK:INSTD_LOGIC;Q:OUTSTD_LOGIC);ENDjk_trigger;ARCHITECTUREfunOFjk_triggerISSIGNALtemp:STD_LOGIC;BEGINPROCESS(J,K,CLK)

BEGINIF(CLK'EVENTANDCLK='1')THENtemp<=(JANDNOT(temp))OR((NOTK)ANDtemp);

ENDIF;ENDPROCESS;Q<=temp;ENDfun;7.2時序邏輯電路設計7.2.1觸發(fā)器ENTITY7.2.1觸發(fā)器(續(xù))同步JK觸發(fā)器的時序仿真波形圖如下:

7.2.1觸發(fā)器(續(xù))同步JK觸發(fā)器的時序仿真波形圖如下7.2.2寄存器寄存器用來存儲二進制數(shù)值,其種類有很多中,常用的鎖存器和移位寄存器等。本文中以一個通用寄存器來介紹寄存器的設計,包括清零、所存、左移和右移功能。通用寄存器的核心代碼如下:ENTITYregIS

GENERIC(n:Positive:=8);--寄存器寬度

PORT(CLK,shift_l,shift_r:INSTD_LOGIC;--時鐘信號和左移、右移輸入數(shù)值

mode:INSTD_LOGIC_VECTOR(1DOWNT0);--寄存器模式

datain:INSTD_LOGIC_VECTOR((n-1)DOWNTO0);--并行輸入

dataout:OUT

STD_LOGIC_VECTOR((n-1)DOWNTO0));--并行輸出ENDreg;ARCHITECTUREfunOFregISSIGNALtemp_reg:STD_LOGIC_VECTOR((n-1)DOWNTO0);--定義臨時變量BEGIN7.2.2寄存器寄存器用來存儲二進制數(shù)值,7.2.2寄存器(續(xù))PROCESSBEGIN

IF(CLK'EVENTANDCLK='1')THEN

CASEmodeIS

WHEN"00"=>int_reg<=(OTHERS=>'0');--寄存器清零

WHEN"01"=>int_reg<=datain;--鎖存器

WHEN"10"=>int_reg<=int_reg((n-2)DOWNTO0)&shift_l;--左移

WHEN"11"=>int_reg<=shift_r&int_reg((n-1)DOWNTO1);--右移

WHENOTHERS=>NULL;

ENDCASE;

ENDPROCESS;dataout<=int_reg;ENDfun;通用寄存器的時序仿真波形圖如下:7.2.2寄存器(續(xù))PROCESS7.2.3分頻器分頻電路是非常有用的一種電路,在具體的電路設計中可能需要不同的時鐘頻率,但在實際的電路中往往只有一種單一的外部時鐘輸入,這是可以采用分頻器對時鐘脈沖進行分頻。1、二分頻電路核心代碼如下:ENTITYfenp_2IS

PORT(CLK_IN:INSTD_LOGIC;CLK_OUT:OUTSTD_LOGIC);ENDfenp_2;ARCHITECTUREfunOFfenp_2IS

SIGNALtemp:STD_LOGIC:='0';

BEGIN

PROCESS(CLK_IN,temp)

BEGIN

IF(CLK_IN'EVENTANDCLK_IN='1')THENtemp<=nottemp;

ENDIF;CLK_OUT<=temp;ENDPROCESS;ENDfun;7.2.3分頻器分頻電路是非常有用的一種電7.2.3分頻器(續(xù)1)2、五分頻電路的核心代碼如下:ENTITYfenp_5IS

PORT(CLK_IN:INSTD_LOGIC;CLK_OUT:OUTSTD_LOGIC);ENDfenp_5;ARCHITECTUREfunOFfenp_5IS

SIGNALtemp_A,temp_B:INTEGERRANGE0TO7;BEGIN

PROCESS(CLK_IN,temp_A,temp_B)

BEGIN

IF(CLK_IN'EVENTANDCLK_IN='1')THEN

IFtemp_A=4THENtemp_A<=0;

ELSEtemp_A<=temp_A+1;--對上升沿計數(shù)

ENDIF;

ENDIF;7.2.3分頻器(續(xù)1)2、五分頻電路的核心代碼如下:E7.2.3分頻器(續(xù)2)二分頻電路的時序仿真波形圖如下五分頻電路的時序仿真波形圖如下:7.2.3分頻器(續(xù)2)7.2.4計數(shù)器計數(shù)器是數(shù)字電路中使用的最多的時序電路,它不僅能用于對時鐘脈沖的計數(shù),還可以用于分頻、定時、產(chǎn)生節(jié)拍脈沖和脈沖序列以及進行數(shù)字運算等。BCD碼60進制計數(shù)器的核心代碼如下:ENTITYcounterIS

PORT(CLK,Enable,clr:INSTD_LOGIC;--時鐘信號、計數(shù)使能、清零信號

Cout:OUTSTD_LOGIC;--進位信號

q0,q1:BUFFER

STD_LOGIC_VECTOR(3DOWNTO0));--計數(shù)輸出ENDcounter;7.2.4計數(shù)器計數(shù)器是數(shù)字電路中使用的最7.2.4計數(shù)器(續(xù)1)

BCD碼60進制計數(shù)器的核心代碼:ARCHITECTUREfunOFCOUNTERISSIGNALtemp:STD_LOGIC;--臨時變量,表示個位數(shù)p0的進位

BEGIN

PROCESS(CLK,Enable,clr,q0)--此進程描述個位計數(shù)器

BEGIN

IFclr='1'THEN

q0<="0000";--個位清零

ELSE

IF(CLK'EVENTANDCLK='1')THEN--對時鐘脈沖進行計數(shù)

IFEnable='1'THEN--使能信號搞電平有效

IFq0="1001"THENq0<="0000";temp<='1';--計數(shù)到9置0,輸出進位

ELSEq0<=q0+1;temp<='0';

ENDIF

溫馨提示

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

評論

0/150

提交評論