數(shù)字通信技術(shù)02-3_第1頁
數(shù)字通信技術(shù)02-3_第2頁
數(shù)字通信技術(shù)02-3_第3頁
數(shù)字通信技術(shù)02-3_第4頁
數(shù)字通信技術(shù)02-3_第5頁
已閱讀5頁,還剩35頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、主主 講講 人:徐向民人:徐向民 單單 位:電子與信息學(xué)院位:電子與信息學(xué)院 組合邏輯電路的概念組合邏輯電路的概念 1.任一時刻的輸出僅僅取決于當(dāng)時的輸入,與電任一時刻的輸出僅僅取決于當(dāng)時的輸入,與電 路原來的狀態(tài)無關(guān),這樣的數(shù)字電路叫做組合路原來的狀態(tài)無關(guān),這樣的數(shù)字電路叫做組合 邏輯電路。邏輯電路。 2.與時序電路最大的區(qū)別就是,與時序電路最大的區(qū)別就是,組合邏輯電路不組合邏輯電路不 含有存儲部件含有存儲部件。 3.常用的組合邏輯器件包括編碼器、譯碼器、數(shù)常用的組合邏輯器件包括編碼器、譯碼器、數(shù) 據(jù)選擇器、數(shù)值比較器、加法器等。據(jù)選擇器、數(shù)值比較器、加法器等。 3.1 基本邏輯門電路基本邏

2、輯門電路 基本邏輯門電路基本邏輯門電路 基本邏輯門電路是數(shù)字邏輯電路的基本電路。包基本邏輯門電路是數(shù)字邏輯電路的基本電路。包 括與門、或門、與非門、或非門、反相器、異或括與門、或門、與非門、或非門、反相器、異或 門等等。門等等。 下面用下面用VHDL語言來描述二輸入與非門。語言來描述二輸入與非門。 二輸入與非門是一種常用的簡單邏輯電路,它有兩個輸二輸入與非門是一種常用的簡單邏輯電路,它有兩個輸 入端,一個輸出端。從輸入段輸入兩個信號,輸出段輸出入端,一個輸出端。從輸入段輸入兩個信號,輸出段輸出 這兩個信號的邏輯與非值。這兩個信號的邏輯與非值。 二輸入與非門二輸入與非門 Library IEEE

3、; Use IEEE.std_logic_1164.all; Entity nand2 is port ( a, b: in std_logic; y: out std_logic); End nand2; Architecture behav of nand2 is Begin y=a nand b; End behav; nand是邏輯操作符是邏輯操作符 與非,把與非,把nand替換替換 為為nor即可得到二輸即可得到二輸 入或非門入或非門 P43 3.2 譯碼器與編碼器譯碼器與編碼器 譯碼器譯碼器(Decoder) l 譯碼器分為幾類:譯碼器分為幾類: 1.變量譯碼器變量譯碼器: 把輸入

4、的二進(jìn)制代碼的各種組合狀把輸入的二進(jìn)制代碼的各種組合狀 態(tài)翻譯成對應(yīng)的輸出信號。態(tài)翻譯成對應(yīng)的輸出信號。 2.碼制變換譯碼器碼制變換譯碼器 :將一種代碼變換為另一種代碼將一種代碼變換為另一種代碼 的電路。的電路。 3.顯示譯碼器顯示譯碼器:如將數(shù)據(jù)顯示在七段數(shù)碼管上時的譯如將數(shù)據(jù)顯示在七段數(shù)碼管上時的譯 碼。碼。 4.地址譯碼器地址譯碼器:將譯碼器輸入端的輸入地址信號翻譯將譯碼器輸入端的輸入地址信號翻譯 成相應(yīng)的輸出控制信號。成相應(yīng)的輸出控制信號。 譯碼器譯碼器和和編碼器編碼器是是數(shù)字系統(tǒng)中廣泛使用的數(shù)字系統(tǒng)中廣泛使用的 多輸入多輸出組合邏輯部件。多輸入多輸出組合邏輯部件。 編碼器編碼器的功能

5、是指定二進(jìn)制代碼代表特定的功能是指定二進(jìn)制代碼代表特定 的信號。的信號。 譯碼器譯碼器的功能是對具有特定含義的輸入代的功能是對具有特定含義的輸入代 碼進(jìn)行碼進(jìn)行翻譯翻譯,將其轉(zhuǎn)換成相應(yīng)的輸出信號。,將其轉(zhuǎn)換成相應(yīng)的輸出信號。 譯碼器譯碼器(Decoder) l 變量譯碼器又稱二進(jìn)制譯碼器,把輸入的二進(jìn)制變量譯碼器又稱二進(jìn)制譯碼器,把輸入的二進(jìn)制 代碼的各種組合狀態(tài)翻譯成對應(yīng)的輸出信號。如代碼的各種組合狀態(tài)翻譯成對應(yīng)的輸出信號。如 38譯碼器譯碼器74LS138。 l 下面就以下面就以38譯碼器為例子介紹譯碼器為例子介紹VHDL語言描述語言描述 的實現(xiàn)。的實現(xiàn)。 38譯碼器譯碼器 如圖所示,是一

6、個如圖所示,是一個3-8譯碼器譯碼器 (74LS138)。 3個二進(jìn)制輸入端,對輸入個二進(jìn)制輸入端,對輸入a, b, c 的值進(jìn)行譯碼,就可以確定哪一的值進(jìn)行譯碼,就可以確定哪一 個輸出端變?yōu)閭€輸出端變?yōu)橛行Вǖ碗娖剑?。有效(低電平)?g1, g2a, g2b是選通信號,只有當(dāng)是選通信號,只有當(dāng) g1=1, g2a=0和和g2b=0時,譯時,譯 碼器才正常譯碼。碼器才正常譯碼。 P44 38譯碼器譯碼器 Library IEEE; Use IEEE.std_logic_1164.all; Entity decoder_38 is Port ( a, b , c, g1, g2a, g2b:

7、in std_logic; y: out std_logic_vector (7 downto 0) ); End decoder_38; Architecture behav of decoder_38 is Signal indata : std_logic_vector(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)行改寫進(jìn)行改寫 38譯碼器譯碼器 改寫后的改寫后

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=“010” then y=“11111011”; Elsif indata=“011” then y=“11110111”; Elsif indata=“100” then y=“11101111”; Elsif indata=“101” then y=“11011111”; Elsif indata=“1

9、10” then y=“10111111”; Elsif indata=“111” then y=“01111111”; End if; 小結(jié)小結(jié) l 本例設(shè)計的是一個本例設(shè)計的是一個38線譯碼器,有使能端,低電平有線譯碼器,有使能端,低電平有 效。效。 l 這個程序的一、二句是庫和程序包的語言。接下來是實這個程序的一、二句是庫和程序包的語言。接下來是實 體,主要是定義了一些輸入、輸出端口。需要注意的是體,主要是定義了一些輸入、輸出端口。需要注意的是 要幫實體命名,如要幫實體命名,如“decoder_38”,并且工程名與實體,并且工程名與實體 名保持一致。還要有結(jié)束語,如名保持一致。還要有結(jié)束

10、語,如“end decoder_38”。 l 最后是結(jié)構(gòu)體部分,其中最后是結(jié)構(gòu)體部分,其中“=”是信號傳輸符號,是信號傳輸符號, “indata=c Use IEEE.std_logic_1164.all; Entity priorityencoder is Port ( input : in std_logic_vector (7 downto 0 ); y: out std_logic_vector( 2 downto 0) ); End priorityencoder; Architecture behav of priorityencoder is Begin Process(inpu

11、t) Begin P45 優(yōu)先級編碼器優(yōu)先級編碼器 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=“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

12、y=“XXX”; end if; End process; End behav; 當(dāng)當(dāng)input=“01011111” 時,編碼成?時,編碼成? 因為因為IF語句是一種語句是一種流流 程控制語句程控制語句,判斷條,判斷條 件有前后次序,所以件有前后次序,所以 應(yīng)編碼為應(yīng)編碼為“010”。 P45 3.3 加法器加法器 在數(shù)字系統(tǒng)中算術(shù)運算都是利用加法進(jìn)行的,因此加法在數(shù)字系統(tǒng)中算術(shù)運算都是利用加法進(jìn)行的,因此加法 器是數(shù)字系統(tǒng)中最基本的運算單元。器是數(shù)字系統(tǒng)中最基本的運算單元。 加法器是數(shù)字系統(tǒng)中最基本的邏輯器件,所以它的應(yīng)用加法器是數(shù)字系統(tǒng)中最基本的邏輯器件,所以它的應(yīng)用 很廣。它可用于二進(jìn)

13、制的減法運算、乘法運算,很廣。它可用于二進(jìn)制的減法運算、乘法運算,BCD碼的加碼的加 、減法,碼組變換,數(shù)碼比較等。、減法,碼組變換,數(shù)碼比較等。 加法在數(shù)字系統(tǒng)中分為加法在數(shù)字系統(tǒng)中分為全加全加和和半加半加,所以加法器也分為,所以加法器也分為 全加器全加器和和半加器半加器。 加法器加法器 半加器(半加器(Half Adder) LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY halfadder IS PORT( X,Y :in std_logic; Sum,Carry :out std_logic); END halfadder; ARCH

14、ITECTURE a OF halfadder IS BEGIN Sum=X xor Y; Carry=X and Y; END a; Sum= X XOR Y; Carry= X AND Y; Sum Carry X Y 半加器半加器不考慮低位向不考慮低位向 高位的進(jìn)位,因此它有高位的進(jìn)位,因此它有兩兩 個輸入端個輸入端和和兩個輸出端兩個輸出端。 全加器全加器 (Full Adder) LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY full_add IS PORT ( X,Y,Z:in bit; Sum,Carry:out bit); E

15、ND 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; Sum Carry XYZ sum = (X xorY) xor Z ; cout = (X and Y) or (Y and Z) or (Z and X); P48 全加器全加器考慮低位向高考慮低位向高 位的進(jìn)位,所以它有位的進(jìn)位,所以它有三個三個 輸入端輸入端和和兩個輸出端兩個輸出端。 全加器全加器 (Full Adder) 當(dāng)全加器設(shè)計完成后,采用模

16、塊化設(shè)計方法,將全加器作當(dāng)全加器設(shè)計完成后,采用模塊化設(shè)計方法,將全加器作 為一個組件為一個組件(component)定義,加入名為定義,加入名為component 的程序包中,以后可以統(tǒng)一將設(shè)計的組件放在這個程序包的程序包中,以后可以統(tǒng)一將設(shè)計的組件放在這個程序包 中。中。 Library IEEE; Use IEEE.std_logic_1164.all; PACKAGE components IS COMPONENTS fadd IS Port(a,b,ci:IN std_logic; co,sum:OUT std_logic); END components; End componen

17、ts; 4位串行進(jìn)位加法器位串行進(jìn)位加法器 l 根據(jù)模塊化設(shè)計思想,將全加器作為一個基本組根據(jù)模塊化設(shè)計思想,將全加器作為一個基本組 件,如圖所示。件,如圖所示。 l 本例使用本例使用Component語句,與語句,與Port Map語句結(jié)語句結(jié) 合合可以可以讓我們像堆積木讓我們像堆積木一般一般搭建出較為復(fù)雜的電搭建出較為復(fù)雜的電 路路。 P49 4位串行進(jìn)位加法器位串行進(jìn)位加法器 Library IEEE; Use IEEE.std_logic_1164.all; Use ponents.all ; Entity fadd4 is port ( a , b : in std_logic_ve

18、ctor(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), sum(0) ); U1: fadd port map ( a(1), b(1) , ci_ns(0), ci_ns(1)

19、, 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 component; P49 4位并行進(jìn)位加法器位并行進(jìn)位加法器 Library IEEE; Use IE

20、EE.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: out std_logic; sum: out std_logic_vector ( 3 downto 0) ); End fadd4 ; P50 4位并行進(jìn)位加法器位并行進(jìn)位加法器 Architecture behav of fadd4 is signal d,t : std_logic _vector ( 3

21、 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 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); 4位并行進(jìn)位加法器位并行進(jìn)位加法器 c(3)=d(2) or (

22、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) 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)位與并行進(jìn)位加法器性能比較 1.串行進(jìn)位方式是將全加

23、器級聯(lián)構(gòu)成多位加法器。串行進(jìn)位方式是將全加器級聯(lián)構(gòu)成多位加法器。 2.并行進(jìn)位加法器設(shè)有并行進(jìn)位產(chǎn)生邏輯,運算速度較快。并行進(jìn)位加法器設(shè)有并行進(jìn)位產(chǎn)生邏輯,運算速度較快。 3.并行進(jìn)位加法器通常比串行級聯(lián)加法器占用更多的資源,并行進(jìn)位加法器通常比串行級聯(lián)加法器占用更多的資源, 隨著位數(shù)的增加,相同位數(shù)的并行加法器與串行加法器隨著位數(shù)的增加,相同位數(shù)的并行加法器與串行加法器 的資源占用差距快速增大。因此,在工程中使用加法器的資源占用差距快速增大。因此,在工程中使用加法器 時,要在速度和占用資源間尋找平衡。時,要在速度和占用資源間尋找平衡。 4.實踐表明,實踐表明,4位并行加法器和串行級聯(lián)加法器占

24、用幾乎位并行加法器和串行級聯(lián)加法器占用幾乎 相同的資源,所以多位加法器(例如相同的資源,所以多位加法器(例如8位)可以由位)可以由4位并位并 行加法器級聯(lián)構(gòu)成。行加法器級聯(lián)構(gòu)成。 8位加法器位加法器 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_vec

25、tor ( 7downto 0) ); End fadd8 ; P51 8位加法器位加法器 Architecture 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:

26、 fadd4 port map( a( 3 downto 0), b(3 downto 0), ci, carry_out, sun(3 downto 0); U2: fadd4 port map( a( 7 downto 4), b(7 downto 4), carry_out, co, sun(7 downto 4); End stru; 3.4 其它組合邏輯模塊其它組合邏輯模塊 多路選擇器多路選擇器 多路選擇器的邏輯功能是在地址選擇信號的控制多路選擇器的邏輯功能是在地址選擇信號的控制 下,從多路輸入數(shù)據(jù)中選擇一路數(shù)據(jù)作為輸出端下,從多路輸入數(shù)據(jù)中選擇一路數(shù)據(jù)作為輸出端 口的輸出數(shù)據(jù)口的輸

27、出數(shù)據(jù). 4選選1多路選擇器多路選擇器 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 process(input , sel) begin 信號需在結(jié)構(gòu)信號需在結(jié)

28、構(gòu) 體中說明,而體中說明,而 變量可在進(jìn)程變量可在進(jìn)程 中說明。中說明。 P48 4選選1多路選擇器多路選擇器 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; P48 求補(bǔ)器求補(bǔ)器 Library IEEE; Use IEEE.std_logic_1164.all; Use IEEE.std_lo

29、gic_unsigned.all; Entity hosuu is port ( a : in std_logic_vector ( 7 downto 0 ) ; b : out std_logic_vector ( 7 downto 0) ); End hosuu; Architecture rtl of hosuu is Begin b= not a +1; End rtl; P46 求補(bǔ)器求補(bǔ)器是作用是將輸入信號轉(zhuǎn)換成其是作用是將輸入信號轉(zhuǎn)換成其 補(bǔ)碼輸出。補(bǔ)碼輸出。 三態(tài)門三態(tài)門 Library IEEE; Use IEEE.std_logic_1164.all; Entity tri

30、_gate is port ( din , en : in std_logic; dout : out std_logic ); End tri_gate ; Architecture behav of tri_gate is Begin process ( din ,en) begin if (en=1) then dout=din; else dout=Z; end if ; end process; End behav; 采用防護(hù)式塊語句來表示三態(tài)門:采用防護(hù)式塊語句來表示三態(tài)門: Architecture blk of tri_gate is Begin tri_gate2: bloc

31、k (en=1) begin dout=guarded din; end block; End blk; P46 三態(tài)門 三態(tài)門,是指邏輯門的輸出除有高、低,是指邏輯門的輸出除有高、低 電平兩種狀態(tài)外,還有第三種狀態(tài)電平兩種狀態(tài)外,還有第三種狀態(tài)高高 阻狀態(tài)阻狀態(tài)的門電路。高阻態(tài)相當(dāng)于隔斷狀態(tài)。的門電路。高阻態(tài)相當(dāng)于隔斷狀態(tài)。 三態(tài)門都有一個三態(tài)門都有一個EN控制使能端控制使能端,來控制門,來控制門 電路的通斷。電路的通斷。 單向總線緩沖器單向總線緩沖器 Library IEEE; Use IEEE.std_logic_1164.all; Entity tri_buf8 is port ( din : in std_l

溫馨提示

  • 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

提交評論