數(shù)字系統(tǒng)設(shè)計:第三章 組合邏輯電路_第1頁
數(shù)字系統(tǒng)設(shè)計:第三章 組合邏輯電路_第2頁
數(shù)字系統(tǒng)設(shè)計:第三章 組合邏輯電路_第3頁
數(shù)字系統(tǒng)設(shè)計:第三章 組合邏輯電路_第4頁
數(shù)字系統(tǒng)設(shè)計:第三章 組合邏輯電路_第5頁
已閱讀5頁,還剩48頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第三章 組合邏輯電路本章目錄概述基本邏輯門電路的設(shè)計譯碼器的設(shè)計編碼器的設(shè)計加法器的設(shè)計其它組合模塊的設(shè)計組合邏輯電路概述數(shù)字電路按其完成邏輯功能的不同特點,劃分為組合邏輯電路和時序邏輯電路兩大類。組合邏輯電路在邏輯功能上的特點是任意時刻的輸出僅僅取決于該時刻的輸入,與電路原來的狀態(tài)無關(guān)而時序邏輯電路在邏輯功能上的特點是任意時刻的輸出不僅取決于當(dāng)時的輸入信號,而且還取決于電路原來的狀態(tài),或者說,還與以前的輸入有關(guān)。組合邏輯電路概述3-8譯碼器如右圖的3-8譯碼器,Y1到Y(jié)8的輸出值只與A1、A2、A3和片選信號S1、S2、S3的當(dāng)前輸入值有關(guān),而與A1、A2、A3、S1、S2和S3以前任一時刻

2、的任意輸入狀態(tài)無關(guān),因此是一個典型的組合邏輯電路,而并非時序邏輯電路組合邏輯電路概述從邏輯上講,組合電路在任一時刻的輸出狀態(tài)僅由該時刻的信號決定,而與電路原來的狀態(tài)無關(guān)。組合邏輯電路:電路無記憶功能從結(jié)構(gòu)上講,組合電路都是單純由邏輯門組成,且輸出不存在反饋路徑。(不含存儲單元)組合邏輯電路框圖常用的組合邏輯電路:簡單門電路、選擇器、譯碼器、三態(tài)門等組合邏輯電路X1X2XnY2YnY1輸入輸出組合邏輯電路概述傳統(tǒng)的設(shè)計方法:采用標(biāo)準(zhǔn)組件進(jìn)行設(shè)計(1)邏輯問題的描述。將設(shè)計問題轉(zhuǎn)化為一個邏輯問題(2)邏輯函數(shù)簡化。將第一步的函數(shù)化簡,求得描述設(shè)計 問題的最簡表達(dá)式(3)邏輯函數(shù)轉(zhuǎn)換。根據(jù)使用的門電

3、路類型,將表達(dá)式變 換為所需形式(4)畫邏輯圖,并考慮實際工程問題。組合邏輯電路的設(shè)計方法:組合邏輯電路概述現(xiàn)代EDA設(shè)計方法:使用可編程邏輯器件和硬件描述語言設(shè)計(1)邏輯問題的描述。將設(shè)計問題轉(zhuǎn)化為一個邏輯問題(2)根據(jù)邏輯問題,用硬件描述語言進(jìn)行描述(3)對描述進(jìn)行綜合,仿真測試(4)生成最終網(wǎng)表,下載到芯片組合邏輯電路的設(shè)計方法:組合邏輯電路概述傳統(tǒng)的設(shè)計方法EDA設(shè)計方法設(shè)計方式人工為主電腦輔助為主設(shè)計過程復(fù)雜簡單可讀性低高移植性低高錯誤修正麻煩容易正確性檢驗麻煩容易兩種設(shè)計方法的比較:組合邏輯電路門電路基本邏輯門電路組合邏輯電路門電路數(shù)字電路中的四種基本操作是與、或、非及觸發(fā)器操作

4、,前三種為組合電路,后一種為時序電路。與非 、或非和異或的操作仍然是與、或、非的基本操作。與、或、非、與非、或非和異或等基本邏輯門電路為常用的門電路。這一小節(jié)將以與非門和或非門為例,介紹如何使用VHDL語言描述進(jìn)行簡單的門電路設(shè)計組合邏輯電路門電路二輸入與非門是一種常用的簡單邏輯電路,它有兩個輸入端,一個輸出端。從輸入段輸入兩個信號,輸出段輸出這兩個信號的邏輯與非值。nand是邏輯操作符與非,把nand替換為nor即可得到二輸入或非門Library IEEE;Use IEEE.std_logic_1164.all;Entity nand2 is port ( a, b: in std_logi

5、c; y: out std_logic);End nand2;Architecture behav of nand2 isBegin y=a nand b;End behav;真值表組合邏輯電路譯碼器譯碼器的設(shè)計組合邏輯電路譯碼器譯碼器的功能對具有特定含義的輸入代碼進(jìn)行翻譯,將其轉(zhuǎn)換成相應(yīng)的輸出信號。 什么是譯碼器(Decoder) 實現(xiàn)譯碼的組合邏輯電路稱為譯碼器。它的輸入是一組二進(jìn)制代碼,輸出是一組高低電平信號。每輸入一組不同的代碼,只有一個輸出呈有效狀態(tài)。譯碼器和編碼器是數(shù)字系統(tǒng)中廣泛使用的多輸入多輸出組合邏輯部件。組合邏輯電路譯碼器 譯碼器的分類譯碼器可分為以下四類: 變量譯碼器: 把

6、輸入的二進(jìn)制代碼的各種組合狀態(tài)翻譯成對應(yīng)的輸出信號。 碼制變換譯碼器 :將一種代碼變換為另一種代碼的電路。 顯示譯碼器:如將數(shù)據(jù)顯示在七段數(shù)碼管上時的譯碼。 地址譯碼器:將譯碼器輸入端的輸入地址信號翻譯成相應(yīng)的輸出控制信號。 組合邏輯電路譯碼器常用譯碼器:常用的譯碼器有:雙2:4線譯碼器,3:8線譯碼器,4:16線譯碼器和4:10線譯碼器等,其中4:10線譯碼器用于BCD碼譯碼。下面就以38譯碼器為例子,介紹如何使用VHDL語言描述實現(xiàn)。組合邏輯電路譯碼器3-8譯碼器如圖所示,是個3-8譯碼器(74LS138)3個二進(jìn)制輸入端,對輸入a, b, c的值進(jìn)行譯碼,就可以確定哪一個輸出端變?yōu)橛行В?/p>

7、低電平) g1, g2a, g2b是選通信號,只有當(dāng)g1=1, g2a=0和g2b=0時,譯碼器才正常譯碼。組合邏輯電路譯碼器3-8譯碼器的描述Library IEEE;Use IEEE.std_logic_1164.all;Entity decoder_38 is Port ( a, b , c, g1, g2a, g2b: in std_logic; y: out std_logic_vector (7 downto 0) );End decoder_38;Architecture behav of decoder_38 isSignal indata : std_logic_vector

8、(2 downto 0);Begin indata y y y y y y y y y=“XXXXXXXX”; End case; Else y=“11111111”; End if; End process;End behav;注意:Case語句可用If語句進(jìn)行改寫組合邏輯電路譯碼器3-8譯碼器的描述(接上)改寫后的IF語句:If (g1=1and g2a=0 and g2b=0) then y=“11111111”;Elsif indata=“000” then y=“11111110”; Elsif indata=“001” then y=“11111101”;Elsif indata=

9、“010” then y=“11111011”;Elsif indata=“011” then y=“11110111”;Elsif indata=“100” then y=“11101111”;Elsif indata=“101” then y=“11011111”;Elsif indata=“110” then y=“10111111”;Elsif indata=“111” then y=“01111111”;End if;組合邏輯電路譯碼器小結(jié)本例設(shè)計的是一個38線譯碼器,有使能端,低電平有效。這個程序的一、二句是庫和程序包的語言。接下來是實體,主要是定義了一些輸入、輸出端口。需要注意的

10、是要幫實體命名,如“decoder_38”,并且工程名與實體名保持一致。還要有結(jié)束語,如“end decoder_38”。最后是結(jié)構(gòu)體部分,其中“=”是信號傳輸符號,“indata=c & b & a”表示把c、b、a進(jìn)行位合并并且賦值給信號indata。進(jìn)程語句是結(jié)構(gòu)體的一種子程序,括號內(nèi)的信號量是process的輸入信號,這些信號無論哪個發(fā)生變化,都將啟動process語句。組合邏輯電路編碼器編碼器的設(shè)計組合邏輯電路編碼器編碼器的功能將信號(如比特流)或數(shù)據(jù)進(jìn)行編制、轉(zhuǎn)換成用于通信,傳輸和存儲的信號形式。什么是編碼器(Encoder) 完成編碼工作的組合邏輯電路稱為譯碼器。它的輸入是一組高

11、低電平信號,輸出是一組二進(jìn)制代碼。每輸入一組高低電平信號,則輸出不同的二進(jìn)制代碼。與譯碼器類似,編碼器同樣是數(shù)字系統(tǒng)中廣泛使用的多輸入多輸出組合邏輯部件。組合邏輯電路編碼器優(yōu)先級編碼器如圖,74LS148是一個8輸入,3位二進(jìn)制碼輸出的優(yōu)先級編碼器。當(dāng)某一個輸入有效時(低電平),就可以輸出一個對應(yīng)的3位二進(jìn)制編碼。當(dāng)同時有幾個輸入有效時,將輸出優(yōu)先級最高的那個輸入對應(yīng)的二進(jìn)制編碼。組合邏輯電路編碼器優(yōu)先級編碼器實現(xiàn)Library IEEE;Use IEEE.std_logic_1164.all;Entity priorityencoder is Port ( input : in std_lo

12、gic_vector (7 downto 0 ); y: out std_logic_vector( 2 downto 0) );End priorityencoder;Architecture behav of priorityencoder isBegin Process(input) Begin組合邏輯電路編碼器優(yōu)先級編碼器的實現(xiàn)(接上)If ( input(0)=0) then y=“111”; elsif ( input(1)=0) then y=“110”; elsif ( input(2)=0) then y=“101”; elsif ( input(3)=0) then y=“

13、100”; elsif ( input(4)=0) then y=“011”; elsif ( input(5)=0) then y=“010”; elsif ( input(6)=0) then y=“001”; elsif ( input(7)=0) then y=“000”; else y=“XXX”; end if; End process;End behav;當(dāng)input=“01011111”時,編碼成?因為IF語句是一種流程控制語句,判斷條件有前后次序,所以應(yīng)編碼為“010”。組合邏輯電路加法器加法器的設(shè)計組合邏輯電路加法器加法器 在數(shù)字系統(tǒng)中,常需要進(jìn)行加、減、乘、除等運算,而乘

14、、除和減法運算均可變換為加法運算,故加法運算電路應(yīng)用十分廣泛,另外,加法器還可用于碼組變換,數(shù)值比較等,因此加法器是數(shù)字系統(tǒng)中最基本的運算單元。 加法在數(shù)字系統(tǒng)中分為全加和半加,所以加法器也分為全加器和半加器。組合邏輯電路加法器半加器不考慮由低位來的進(jìn)位,只有本位兩個數(shù)相加,稱為半加器。全加器除本位兩個數(shù)相加外,還要加上從低位來的進(jìn)位數(shù),稱為全加器半加器全加器輸入個數(shù)23輸出個數(shù)22是否考慮低位進(jìn)位不考慮考慮組合邏輯電路加法器半加器 半加器不考慮低位向高位的進(jìn)位,因此它只有兩個輸入端和兩個輸出端。Sum= X XOR Y;Carry= X AND Y;SumCarryXY LIBRARY ie

15、ee; USE ieee.std_logic_1164.all; ENTITY halfadder IS PORT( X,Y :in std_logic; Sum,Carry :out std_logic); END halfadder; ARCHITECTURE a OF halfadder IS BEGIN Sum=X xor Y; Carry=X and Y; END a;邏輯圖組合邏輯電路加法器邏輯圖 全加器考慮低位向高位的進(jìn)位,所以它有三個輸入端和兩個輸出端。 LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY full_add IS

16、PORT ( X,Y,Z:in bit; Sum,Carry:out bit); END full_add; ARCHITECTURE a OF full_add IS BEGIN Sum = X xor Y xor Z; Carry=(X and Y) or (Y and Z) or (Z and X); END a; 全加器組合邏輯電路加法器加法器的模塊化當(dāng)全加器設(shè)計完成后,采用模塊化設(shè)計方法,將全加器作為一個組件(component)定義,加入名為components的程序包中,以后可以統(tǒng)一將設(shè)計的組件放在這個程序包中。Library IEEE; Use IEEE.std_logic_1

17、164.all; PACKAGE components IS COMPONENTS fadd IS Port(a,b,ci:IN std_logic; co,sum:OUT std_logic); END fadd; End components;組合邏輯電路加法器四位串行進(jìn)位全加器的設(shè)計根據(jù)模塊化設(shè)計思想,多位的加法器可將全加器作為一個基本組件多個級聯(lián),如圖所示。在設(shè)計中,使用Component語句,與Port Map語句結(jié)合可以讓我們像堆積木一般搭建出較為復(fù)雜的電路組合邏輯電路加法器四位串行進(jìn)位全加器的實現(xiàn)Library IEEE;Use IEEE.std_logic_1164.all;U

18、se ponents.all ;Entity fadd4 is port ( a , b : in std_logic_vector(3 downto 0) ; ci: in std_logic; co: out std_logic; sum: out std_logic_vector ( 3 downto 0) );End fadd4 ;Architecture stru of fadd4 is signal ci_ns : std_logic_vector(2 downto 0);Begin U0: fadd port map ( a(0), b(0) , ci, ci_ns(0), su

19、m(0) ); U1: fadd port map ( a(1), b(1) , ci_ns(0), ci_ns(1), sum(1) ); U2: fadd port map ( a(2), b(2) , ci_ns(1), ci_ns(2), sum(2) ); U3: fadd port map ( a(3), b(3) , ci_ns(2), co, sum(3) );End stru;Architecture behav of 實體名稱 IS component 元件A port ( );end component;component 元件B port ( );end compone

20、nt; 組合邏輯電路加法器四位并行進(jìn)位全加器串行進(jìn)位加法器,在每一位的計算時,都在等待前一位的進(jìn)位,因此,位數(shù)越多,速度越慢。那是否能先考慮進(jìn)位的輸出?并行進(jìn)位的思想在于各級進(jìn)位信號同時產(chǎn)生,大大減少了進(jìn)位產(chǎn)生的時間。其進(jìn)位的邏輯表達(dá)式為:組合邏輯電路加法器四位并行進(jìn)位全加器的實現(xiàn)Library IEEE;Use IEEE.std_logic_1164.all;Use IEEE.std_logic_unsigned.all;Entity fadd4 is port ( a , b : in std_logic_vector(3 downto 0) ; ci: in std_logic; co:

21、 out std_logic; sum: out std_logic_vector ( 3 downto 0) );End fadd4 ;組合邏輯電路加法器四位并行進(jìn)位全加器(接上)Architecture behav of fadd4 is signal d,t : std_logic _vector ( 3 downto 0); signal c: std_logic_vector ( 4 downto 0);Begin as_add: for i in 0 to 3 generate d(i)=a(i) and b(i); t(i)=a(i) or b(i) s(i)=a(i) xor

22、b(i) xor c(i) end generate; c(0)=cin; c(1)=d(0) or (t(0) and c(0); c(2)=d(1) or (t(1) and d(0) or (t(1) and t(0) and c(0);組合邏輯電路加法器四位并行進(jìn)位全加器(接上) c(3)=d(2) or (t(2) and d(1) or (t(1) and t(2) and d(0) or (t(1) and t(2) and t(0) and c(0) ;c(4)=d(3) or (t(3) and d(2) or (t(3) and t(2) and d(1) or (t(1)

23、 and t(2) and t(3) and d(0) or (t(3) and t(2) and t(1) and t(0) and c(0); sum=c(3 downto 0); co=c(4);End behav;組合邏輯電路加法器串行進(jìn)位與并行進(jìn)位加法器性能比較串行進(jìn)位方式是將全加器級聯(lián)構(gòu)成多位加法器。并行進(jìn)位加法器設(shè)有并行進(jìn)位產(chǎn)生邏輯,運算速度較快。并行進(jìn)位加法器通常比串行級聯(lián)加法器占用更多的資源,隨著位數(shù)的增加,相同位數(shù)的并行加法器與串行加法器的資源占用差距快速增大。因此,在工程中使用加法器時,要在速度和占用資源間尋找平衡。實踐表明,4位并行加法器和串行級聯(lián)加法器占用幾乎相同的資

24、源,所以多位加法器(例如8位)可以由4位并行加法器級聯(lián)構(gòu)成。組合邏輯電路加法器8位加法器的實現(xiàn)Library IEEE;Use IEEE.std_logic_1164.all;Use IEEE.std_logic_unsigned.all;Entity fadd8 is port ( a , b : in std_logic_vector(7 downto 0) ; ci: in std_logic; co: out std_logic; sum: out std_logic_vector ( 7downto 0) );End fadd8 ;組合邏輯電路加法器8位加法器的實現(xiàn)Architect

25、ure stru of fadd8 is Component fadd4 port ( a , b : in std_logic_vector(3 downto 0) ; ci: in std_logic; co: out std_logic; sum: out std_logic_vector ( 3 downto 0) ); End component; -也可以放在程序包中定義 Signal carry_out : std_logic ; Begin U1: fadd4 port map( a( 3 downto 0), b(3 downto 0), ci, carry_out, sun

26、(3 downto 0) ); U2: fadd4 port map( a( 7 downto 4), b(7 downto 4), carry_out, co, sun(7 downto 4) );End stru; 組合邏輯電路其它組合邏輯模塊組合邏輯電路選擇器多路選擇器多路選擇器是數(shù)據(jù)選擇器的別稱。邏輯功能根據(jù)需要,在地址選擇信號的控制下,從多路輸入數(shù)據(jù)中選擇任意一路數(shù)據(jù)作為輸出端口的輸出數(shù)據(jù).常用的類型4選1數(shù)據(jù)選擇器、8選1數(shù)據(jù)選擇器(型號為74151、74LS151、74251、74LS151)、16選1數(shù)據(jù)選擇器(可以用兩片74151連接起來構(gòu)成)等組合邏輯電路選擇器4選1多路選

27、擇器的實現(xiàn)Library IEEE;Use IEEE.std_logic_1164.all;Entity mux4 is port ( input : in std_logic_vector (3 downto 0 ); a, b: in std_logic; y: out std_logic );End mux4;Architecture behav of mux4 is signal sel :std_logic_vector(1 downto 0);Begin sel=b & a; process(input , sel) begin注意:信號需在結(jié)構(gòu)體中說明,而變量則在進(jìn)程或子程序中說

28、明。組合邏輯電路選擇器4選1多路選擇器的實現(xiàn) if (sel=“00”) then y=input(0); elsif (sel=“01”) then y=input(1); elsif (sel=“10”) then y=input(2); elsif (sel=“11”) then y=input(3); else y=Z; end if; End process;End behav;組合邏輯電路求補(bǔ)器求補(bǔ)器:將輸入信號轉(zhuǎn)換成其補(bǔ)碼輸出若定點整數(shù)補(bǔ)碼形式為0 12n ,則補(bǔ)碼表示的定義是: 2n0 補(bǔ) 2n+1+2n+1| 02n (mod 2n1) 采用補(bǔ)碼表示法進(jìn)行減法運算就比原碼方便

29、多了。因為不論數(shù)是正還是負(fù),機(jī)器總是做加法,減法運算可變?yōu)榧臃ㄟ\算補(bǔ)碼可由原碼得到。正數(shù)的補(bǔ)碼與原碼一樣;負(fù)數(shù)的補(bǔ)碼是對它的原碼(除符號位外)各位取反,并在未位加1而得到的。組合邏輯電路求補(bǔ)器求補(bǔ)器的實現(xiàn)Library IEEE;Use IEEE.std_logic_1164.all;Use IEEE.std_logic_unsigned.all;Entity hosuu is port ( a : in std_logic_vector ( 4 downto 1 ) ; b : out std_logic_vector ( 4 downto 1) );End hosuu;Architectu

30、re rtl of hosuu isBegin b= not a +1; End rtl;簡單四位求補(bǔ)器邏輯圖四位輸入按位取反補(bǔ)碼輸出四位加法器加“1”組合邏輯電路三態(tài)門三態(tài)門: 三態(tài)門是一種重要的總線接口電路。這里的三態(tài),是指邏輯門的輸出除了有高、低電平兩種狀態(tài)外,還有第三種狀態(tài)高阻狀態(tài)的門電路。高阻態(tài)相當(dāng)于隔斷狀態(tài) 如果你的設(shè)備端口要掛在一個總線上, 必須通過三態(tài)緩沖器. 因為在一個總線上同時只能有一個端口作輸出, 這時其他端口必須在高阻態(tài), 同時可以輸入這個輸出端口的數(shù)據(jù). 所以你還需要有總線控制管理, 訪問到哪個端口, 那個端口的三態(tài)緩沖器才可以轉(zhuǎn)入輸出狀態(tài)。三態(tài)門都有一個EN控制使能

31、端,來控制門電路的通斷。三態(tài)門的應(yīng)用實例組合邏輯電路三態(tài)門三態(tài)門的實現(xiàn)Library IEEE;Use IEEE.std_logic_1164.all;Entity tri_gate is port ( din , en : in std_logic; dout : out std_logic );End tri_gate ;Architecture behav of tri_gate isBegin process ( din ,en) begin if (en=1) then dout=din; else dout=Z; end if ; end process; End behav;采用防護(hù)式塊語句來表示三態(tài)門:Architecture blk of tri_gate isBegin tri_gate2: block (en=1) begin dout=guarded din; end block; End blk;組合邏輯電路緩沖器什么是緩沖器緩沖器又稱緩沖寄存器,在總線傳輸中起數(shù)據(jù)暫存緩沖的作用緩沖器的分類緩沖器可分為輸入緩沖器和輸出緩沖器兩種,前者的作用是將外設(shè)送來的數(shù)據(jù)暫時存放,以便處理器將它取走;后者的作用是用來暫時存放

溫馨提示

  • 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

提交評論