第四章vhdl(6)-組合邏輯電路_第1頁
第四章vhdl(6)-組合邏輯電路_第2頁
第四章vhdl(6)-組合邏輯電路_第3頁
第四章vhdl(6)-組合邏輯電路_第4頁
第四章vhdl(6)-組合邏輯電路_第5頁
已閱讀5頁,還剩44頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、 組合電路在任一時刻的輸出僅取組合電路在任一時刻的輸出僅取決于該時刻電路的輸入,與電路原來決于該時刻電路的輸入,與電路原來的狀態(tài)無關(guān),即無存儲部件。的狀態(tài)無關(guān),即無存儲部件。4.5 組合邏輯電路組合邏輯電路 基本邏輯:與、或、非、與非、或非、異或基本邏輯:與、或、非、與非、或非、異或 編譯碼器與選擇器編譯碼器與選擇器 加(減)法器、求補(bǔ)器加(減)法器、求補(bǔ)器 三態(tài)門及總線緩沖器三態(tài)門及總線緩沖器 奇偶校驗電路、多人表決器、比較器奇偶校驗電路、多人表決器、比較器4.5.1 基本邏輯基本邏輯4.5.2 譯碼器譯碼器/編碼器編碼器/選擇器選擇器4.5.3 加法器加法器/求補(bǔ)器求補(bǔ)器4.5.4 三態(tài)門

2、及總線緩沖器三態(tài)門及總線緩沖器4.5.5 奇偶校驗電路奇偶校驗電路/多人表決器多人表決器/比較器比較器4.5.1 基本邏輯基本邏輯l直接用邏輯運(yùn)算符實現(xiàn)直接用邏輯運(yùn)算符實現(xiàn)l用用if if 、casecase等語句描述等語句描述例:例: library ieee; use ieee.std_logic_1164.all; entity n_and is port(a,b:in std_logic; c:out std_logic); end n_and; architecture rtl of n_and is begin c=a nand b; end rtl;例:例: architectu

3、re rtl of exm is begin Process(a,b) begin tmpyyyyy=Z; end case; end process; end rtl; 分析實現(xiàn)的邏輯分析實現(xiàn)的邏輯4.5.2 譯碼器譯碼器/編碼器編碼器/選擇器選擇器n1.1.譯碼器譯碼器 3-8譯碼器譯碼器2-4譯碼器譯碼器七段顯示譯碼器七段顯示譯碼器地址譯碼器地址譯碼器特殊譯碼器:特殊譯碼器:一般譯碼器:一般譯碼器:七段顯示譯碼器:七段顯示譯碼器:七段顯示譯碼器是對七段顯示譯碼器是對一個一個4位二進(jìn)制數(shù)進(jìn)行譯碼,并在七段數(shù)位二進(jìn)制數(shù)進(jìn)行譯碼,并在七段數(shù)碼管上顯示出相應(yīng)的十進(jìn)制數(shù)或十六進(jìn)制碼管上顯示出相應(yīng)的

4、十進(jìn)制數(shù)或十六進(jìn)制數(shù)。數(shù)。地址譯碼器:地址譯碼器:在計算機(jī)和微處理器系在計算機(jī)和微處理器系統(tǒng)統(tǒng)是很重要的,是數(shù)字系統(tǒng)中最典型的是很重要的,是數(shù)字系統(tǒng)中最典型的CPLD應(yīng)用。應(yīng)用。 ARCHITECTURE ART3 OF DECODER IS BEGIN D_OUT(0)=1 WHEN D_IN =000 ELSE 0 ; D_OUT(1)=1 WHEN D_IN =001 ELSE 0 ; D_OUT(2)=1 WHEN D_IN =010 ELSE 0 ; D_OUT(3)=1 WHEN D_IN =011 ELSE 0 ; D_OUT(4)=1 WHEN D_IN =100 ELSE 0

5、 ; D_OUT(5)=1 WHEN D_IN =101 ELSE 0 ; D_OUT(6)=1 WHEN D_IN =110 ELSE 0 ; D_OUT(7)yyyyyyyyyyy=0000000; end case; end process ;七段譯碼如果譯碼功能由共陰轉(zhuǎn)為共陽只需對輸出做一個取反,不用重新譯碼七段譯碼如果譯碼功能由共陰轉(zhuǎn)為共陽只需對輸出做一個取反,不用重新譯碼 3)地址譯碼器地址譯碼器 例如:一個微處理器存儲空間例如:一個微處理器存儲空間0000H-FFFFH,分為分為5部分,它們的地址分配如下:部分,它們的地址分配如下: DRAM:0000HDFFFH; I/O: E

6、000HE7FFH; 備用:備用: E800H-EFFFH; ROM1 :F000HF7FFH; ROM2: F800HFFFFH; 輸入為輸入為16位地址,輸出位地址,輸出4個片選信號個片選信號 低電平有效低電平有效 PROCESS(address) Begin If address=x”dfff” then DRAM=0; IO=1; ROM1=1; ROM2=x”e000” and address=x”e7ff” then DRAM=1; IO=0; ROM1=1; ROM2=x”f000” and address=x”f7ff” then DRAM=1; IO=1; ROM1=0; R

7、OM2=x”f800” then DRAM=1; IO=1; ROM1=1; ROM2=0; End if; End process;A15 A14 A13 A12 A11 A10A0 0 0 0 0 0 00 DRAM:0000HDFFFH; 1 1 0 1 1 11 1 1 1 0 0 00 I/O: E000HE7FFH; 1 1 1 0 0 11 1 1 1 0 1 00 備用:備用: E800HEFFFH; 1 1 1 0 1 11 1 1 1 1 0 00 ROM1:F000HF7FFH; 1 1 1 1 0 11 1 1 1 1 1 00 ROM2:F800HFFFFH; 1 1

8、 1 1 1 11 A15A11可區(qū)別地址,用最少地址線譯碼描述可區(qū)別地址,用最少地址線譯碼描述 ,輸入僅為,輸入僅為 A15A11 PROCESS(A15,A14,A13,A12,A11) Begin If (A15 and A14 and A13)=0 then DRAM=0; IO=1; ROM1=1; ROM2=1; Elsif A13=1 and A12=0 and A11= 0 then DRAM=1; IO=0; ROM1=1; ROM2=1; Elsif A13=1 and A12=1 and A11= 0 then DRAM=1; IO=1; ROM1=0; ROM2=1;

9、Elsif A13=1 and A12=1 and A11= 1 then DRAM=1; IO=1; ROM1=1; ROM2=0; End if; End process;n2.編碼器編碼器l生活中常用十進(jìn)制數(shù)及文字、符號等表示生活中常用十進(jìn)制數(shù)及文字、符號等表示事物事物l數(shù)字電路只能以二進(jìn)制信號工作數(shù)字電路只能以二進(jìn)制信號工作l用二進(jìn)制代碼表示文字符號等特定對象的用二進(jìn)制代碼表示文字符號等特定對象的過程,稱為編碼過程,稱為編碼 普通編碼器普通編碼器: 任何時刻只允許輸入一個有效編碼請求信號,任何時刻只允許輸入一個有效編碼請求信號, 否則輸出將發(fā)生混亂否則輸出將發(fā)生混亂 優(yōu)先編碼器:優(yōu)先編

10、碼器: 允許同時輸入兩個以上的有效編碼請求信號,允許同時輸入兩個以上的有效編碼請求信號, 只對其中優(yōu)先權(quán)最高的一個進(jìn)行編碼只對其中優(yōu)先權(quán)最高的一個進(jìn)行編碼 優(yōu)先級別的高低由設(shè)計者根據(jù)輸入信號的輕重優(yōu)先級別的高低由設(shè)計者根據(jù)輸入信號的輕重 緩急情況而定。緩急情況而定。使用使用case語句沒有優(yōu)先級語句沒有優(yōu)先級使用使用if 、when_else語句帶有優(yōu)先級語句帶有優(yōu)先級1)8線線-3線普通編碼器(教材線普通編碼器(教材p83)2)用用if_then_elsif_else實現(xiàn)優(yōu)先權(quán)編碼器實現(xiàn)優(yōu)先權(quán)編碼器 library ieee; use ieee.std_logic_1164.all; ent

11、ity priority is port(d:in std_logic_vector(7 downto 0); q:out std_logic_vector(2 downto 0); end priority; architecture one of priority is begin process(d) begin if d(0)=0 then q=111; elsif d(1)=0 then q=110; elsif d(2)=0 then q=101; elsif d(3)=0 then q=100; elsif d(4)=0 then q=011; elsif d(5)=0 then

12、 q=010; elsif d(6)=0 then q=001; else q=000; end if; end process; end one;2)when_else實現(xiàn)優(yōu)先權(quán)編碼器實現(xiàn)優(yōu)先權(quán)編碼器.ARCHITECTURE ART1 OF ENCODER ISBEGIN y= 111 WHEN H=1 ELSE 110 WHEN G=1 ELSE 101 WHEN F=1 ELSE 100 WHEN E=1 ELSE 011 WHEN D=1 ELSE 010 WHEN C=1 ELSE 001 WHEN B=1 ELSE 000 WHEN A=1 ELSE XXX;END ART1;

13、3.選擇器選擇器 選擇器常用于信號的切換選擇器常用于信號的切換 四選一選擇器:四選一選擇器: 4 4個信號輸入端個信號輸入端 2 2個信號選擇端個信號選擇端 1 1個信號輸出端個信號輸出端 當(dāng)輸入不同的選擇信號時,就可以使當(dāng)輸入不同的選擇信號時,就可以使4 4個輸個輸入中某個相應(yīng)的輸入信號與輸出端接通。入中某個相應(yīng)的輸入信號與輸出端接通。2選選1 ENTITY mux21 IS PORT(d0, d1, sel: IN BIT; q: OUT BIT); END mux21; ARCHITECTURE connect OF mux21 IS SIGNAL tmp1,tmp2,tmp3: BIT

14、; BEGIN; tmp1 = d0 AND sel; tmp2 = d1 AND (NOT sel); tmp3 = tmp1 OR tmp2; q = tmp3; END connect; 4.5.3 加法器加法器/求補(bǔ)器求補(bǔ)器半加器半加器 全加器全加器 多位加法器多位加法器求補(bǔ)器:對二進(jìn)制數(shù)進(jìn)行求補(bǔ)碼求補(bǔ)器:對二進(jìn)制數(shù)進(jìn)行求補(bǔ)碼 運(yùn)算運(yùn)算 library ieee; use ieee.std_logic_1164.all; entity fadder is port(a,b,cin :in std_logic; sum,cout :out std_logic); end fadder;

15、architecture rtl of fadder is begin sum=a xor b xor cin; cout=(a and b)or(a and cin)or(b and cin); end rtl; 半加器(略)半加器(略) 一位全加器一位全加器Cout Sum b a Cin Cout Sum b a CinCout Sum b a CinCout Sum b a Cincout sum(3) sum(2) sum(1) sum(0) b(3) a(3) b(2) a(2) b(1) a(1) b(0) a(0) cin四位加法器:四位加法器: library ieee; u

16、se ieee.std_logic_1164.all; entity adder4 is port( a,b :in std_logic_vector(0 to 3); cin:in std_logic; cout :out std_logic; sum :out std_logic_vector(0 to 3); end adder4; architecture exm of adder4 is component fadder port(a,b,cin :in std_logic; sum,cout :out std_logic); end component; signal c:std_

17、logic_vector(0 to 4); begin c(0)=cin; gen:for i in 0 to 3 generate adderx:fadder port map(a(i),b(i),c(i),sum(i),c(i+1); end generate; cout=c(4); end exm; 求補(bǔ)器求補(bǔ)器 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity bu is port( a : in std_logic_vector(7 downto 0); b : out

18、 std_logic_vector (7 downto 0); end bu; architecture rtl of bu is begin process(a) begin if a(7)=1 then b=not a + 1; else b=a; end if; end process; end rtl;4.5.4 三態(tài)門及總線緩沖器三態(tài)門及總線緩沖器 三態(tài)門三態(tài)門 數(shù)據(jù)輸入數(shù)據(jù)輸入 控制輸入控制輸入 數(shù)據(jù)輸出數(shù)據(jù)輸出 din en dout X 0 Z 0 1 0 1 1 1 總線緩沖器由多個三態(tài)門組成,數(shù)據(jù)總總線緩沖器由多個三態(tài)門組成,數(shù)據(jù)總 線是幾位就有幾個三態(tài)門線是幾位就有幾個三

19、態(tài)門 緩沖器一般分為兩種緩沖器一般分為兩種:單向總線緩沖器:單向總線緩沖器 雙向總線緩沖器雙向總線緩沖器 三態(tài)門三態(tài)門 library ieee; use ieee.std_logic_1164.all; entity three is port( a,en:in std_logic; y:out std_logic); end three; architecture bhv of three is begin process(a,en) begin if en=1 then y=a ; else y=Z; end if; end process; end bhv; 8位雙向總線緩沖器位雙向總

20、線緩沖器 LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY tri_bigate IS PORT (a,b : INOUT std_logic_vector(7 downto 0); en ,dr : IN std_logic); END tri_bigate; ARCHITECTURE rtl OF tri_bigate IS Signal aout,bout:std_logic_vector(7 downto 0); BEGIN process(a,en,dr) begin if (en=1) and (dr=1)then bout=a;

21、else bout=ZZZZZZZZ; end if;b=bout; end process; process(b,en,dr) begin if (en=1) and (dr=0)then aout=b; else aout=ZZZZZZZZ; end if;a=aout; end process; end rtl; RTL 不用不用aout和和bout中間信號的中間信號的RTL 4.5.5 奇偶校驗電路奇偶校驗電路/多人表決器多人表決器 /比較器比較器 1.奇偶校驗電路奇偶校驗電路 具體程序見前面章節(jié)具體程序見前面章節(jié) 另一種實現(xiàn)方式:另一種實現(xiàn)方式:將輸入的將輸入的8位二進(jìn)制數(shù)用位二進(jìn)制

22、數(shù)用四位二進(jìn)制數(shù)進(jìn)行計數(shù),判斷最低位,若為四位二進(jìn)制數(shù)進(jìn)行計數(shù),判斷最低位,若為 1,則為奇數(shù);若為,則為奇數(shù);若為0,則為偶數(shù)。,則為偶數(shù)。 2.七人表決器七人表決器 library ieee; use ieee.std_logic_1164.all; entity vote7 is port(a:in std_logic_vector( 0 to 6); lg,lr:out std_logic); end; architecture bhv of vote7 is signal pass:integer range 0 to 10; begin process(a) variable tm

23、p1:integer range 0 to 10; begin tmp1:=0; for i in 0 to 6 loop if a(i)=1 then tmp1:=tmp1+1; else tmp1:=tmp1+0; end if; end loop; pass=tmp1; end process; lg=4 else 0; lr=1when pass4 else 0; end bhv; LIBRARY ieee; USE ieee.std_logic_1164.all; entity bj7 is port(a0,a1,a2,a3,a4,a5,a6:in std_logic; y:out

24、std_logic); end bj7; architecture a of bj7 is function sum(a,b,c:std_logic) return std_logic is begin return (a xor b xor c); end sum; function cout(a,b,c:std_logic) return std_logic is begin return (a and b) or (a and c) or (b and c); end cout; signal c:std_logic_vector(0 to 2); signal s:std_logic_

25、vector(0 to 2); begin - s(0)=sum(a0,a1,a2); - s(1)=sum(a3,a4,a5); - s(2)=sum(s(0),s(1),a6); - c(0)=cout(a0,a1,a2); - c(1)=cout(a3,a4,a5); - c(2)=cout(s(0),s(1),a6); - c(3)=cout(c(0),c(1),c(2); -y=c(3); s(0)=sum(a0,a1,a2); s(1)=sum(a3,a4,0); s(2)=sum(a5,a6,0); c(0)=cout(a0,a1,a2); c(1)=cout(a3,a4,0);

26、 c(2)=cout(a5,a6,0); y=cout(c(0),c(1),c(2)or(sum(c(0),c(1),c(2)and cout(s(0),s(1),s(2); end a;3.三人表決器(方法一三人表決器(方法一 行為描述方式行為描述方式) ENTITY maj IS PORT(a,b,c : IN BIT; m : OUT BIT); END maj; ARCHITECTURE bhv OF maj IS BEGIN PROCESS(a,b,c) CONSTANT lookuptable : BIT_VECTOR(0 TO 7) := “-; VARIABLE index : NATURAL range 0 to 7; BEGIN index := 0; IF a = 1 THEN index := index + 1; END IF; IF b = 1 THEN index := in

溫馨提示

  • 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

提交評論