




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
基本邏輯電路設(shè)計(jì)第1頁(yè),共195頁(yè),2023年,2月20日,星期四27.1組合邏輯電路設(shè)計(jì)7.1.1設(shè)計(jì)基礎(chǔ)
一、組合邏輯電路的設(shè)計(jì)步驟邏輯真值表邏輯函數(shù)式選定器件類(lèi)型化簡(jiǎn)邏輯函數(shù)邏輯電路圖邏輯問(wèn)題分析事件的因果關(guān)系,確定輸入端口和輸出端口及邏輯狀態(tài)的含意。將實(shí)際的邏輯問(wèn)題抽象成邏輯函數(shù)。由EDA工具自動(dòng)完成。第2頁(yè),共195頁(yè),2023年,2月20日,星期四3二、用VHDL建立組合邏輯電路的方法1、借助真值表設(shè)計(jì)組合電路設(shè)計(jì)任務(wù):設(shè)計(jì)一個(gè)四選一數(shù)據(jù)選擇器。邏輯功能:從四個(gè)輸入數(shù)據(jù)中選出某一數(shù)據(jù)輸出。輸入輸出端口:四個(gè)數(shù)據(jù)輸入端;兩個(gè)選擇控制輸入端;一個(gè)數(shù)據(jù)輸出端。mux4fin0in1in2in3x0x1引腳框圖entitymux4isport(in0,in1,in2,in3:inbit;x0,x1:inbit;f:outbit);endentitymux4;第3頁(yè),共195頁(yè),2023年,2月20日,星期四4真值表:in0in1in2in3x1x0fin0---00in0-in1--01in1--in2-10in2---in311in3architecturertlofmux4isbeginf<=(in0and((notx1)and(notx0)))or(in1and((notx1)and(x0)))or(in2and((x1)and(notx0)))or(in3and((x1)and(x0)));endarchitecturertl;第4頁(yè),共195頁(yè),2023年,2月20日,星期四5此例按真值表(用“與或”結(jié)構(gòu)實(shí)現(xiàn))要求,用VHDL語(yǔ)言邏輯表達(dá)式方式描述四選一數(shù)據(jù)選擇器,將f=’1’的行用最小項(xiàng)表達(dá)式表達(dá)出來(lái)即可。這種描述方法和傳統(tǒng)的由真值表變?yōu)樽钚№?xiàng)表達(dá)式的設(shè)計(jì)方法是相同的,只是用VHDL語(yǔ)言進(jìn)行描述無(wú)須化簡(jiǎn)(由計(jì)算機(jī)進(jìn)行化簡(jiǎn));而用傳統(tǒng)設(shè)計(jì)方法描述時(shí),常常要對(duì)最小項(xiàng)表達(dá)式進(jìn)行化簡(jiǎn),以使設(shè)計(jì)電路簡(jiǎn)化。第5頁(yè),共195頁(yè),2023年,2月20日,星期四62、用邏輯表達(dá)式描述組合電路設(shè)計(jì)任務(wù):設(shè)計(jì)一個(gè)函數(shù)電路y=abc+de。輸入輸出端口:五個(gè)函數(shù)自變量輸入端;一個(gè)函數(shù)值輸出端。functionyabcde引腳框圖entityfunctisport(a,b,c,d,e:inbit;y:outbit);endentityfunct;architecturertloffunctisbeginy<=(aandbandc)or(dande);endarchitecturertl;邏輯表達(dá)式設(shè)計(jì)函數(shù)電路非常方便,只要用VHDL語(yǔ)言的邏輯符號(hào)置換布爾方程中相應(yīng)的邏輯符號(hào)即可。第6頁(yè),共195頁(yè),2023年,2月20日,星期四73、用算術(shù)表達(dá)式描述組合電路設(shè)計(jì)任務(wù):設(shè)計(jì)一位全加器。邏輯功能:考慮來(lái)自低位的進(jìn)位,將兩個(gè)一位的二進(jìn)制數(shù)相加,得到一個(gè)和位、一個(gè)進(jìn)位位。輸入輸出端口:兩個(gè)加數(shù)輸入端;一個(gè)低位進(jìn)位輸入端;一個(gè)和輸出端;一個(gè)進(jìn)位輸出端。libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityfulladderisport(a,b,cin:instd_logic;sum,cout:outstd_logic);endentityfulladder;fulladdercoutabcin引腳框圖sum第7頁(yè),共195頁(yè),2023年,2月20日,星期四8算術(shù)表達(dá)式:(cout,sum)=a+b+cin;architecturertloffulladderissignala1,b1,cin1,sum1:std_logic_vector(1downto0);begina1<='0'&a;b1<='0'&b;cin1<='0'&cin;sum1<=a1+b1+cin1;sum<=sum1(0);cout<=sum1(1);endarchitecturertl;并位運(yùn)算是為了滿(mǎn)足代入符<=左、右兩側(cè)運(yùn)算對(duì)象的位數(shù)相同。算術(shù)表達(dá)式設(shè)計(jì)電路,只要用VHDL語(yǔ)言的算術(shù)符號(hào)置換算術(shù)表達(dá)式中相應(yīng)的算術(shù)符號(hào)即可,同時(shí)要考慮VHDL語(yǔ)言對(duì)運(yùn)算操作數(shù)的要求。第8頁(yè),共195頁(yè),2023年,2月20日,星期四9組合邏輯電路設(shè)計(jì)實(shí)例簡(jiǎn)單門(mén)電路譯碼器編碼器編碼轉(zhuǎn)換器數(shù)據(jù)選擇器運(yùn)算器三態(tài)門(mén)及總線緩沖器第9頁(yè),共195頁(yè),2023年,2月20日,星期四107.1.2簡(jiǎn)單門(mén)電路簡(jiǎn)單門(mén)電路表達(dá)簡(jiǎn)答邏輯關(guān)系,采用簡(jiǎn)單的信號(hào)代入語(yǔ)句就能夠方便地實(shí)現(xiàn);沒(méi)有必要采用復(fù)雜的結(jié)構(gòu)。例如,反向器y<=nota;2輸入與非門(mén)y<=anandb;2輸入或非門(mén)y<=anorb;2輸入異或門(mén)y<=axorb;與或非門(mén)y<=not((a1anda2)or(a3anda4));第10頁(yè),共195頁(yè),2023年,2月20日,星期四11libraryieee;useieee.std_logic_1164.all;entitynand2_71isport(a,b:instd_logic;y:outstd_logic);endentitynand2_71;architecturenand2_1ofnand2_71isbegin
y<=anandb;endarchitecturenand2_1;1.基于邏輯表達(dá)式的二輸入與非門(mén)描述第11頁(yè),共195頁(yè),2023年,2月20日,星期四12RTL視圖仿真波形圖第12頁(yè),共195頁(yè),2023年,2月20日,星期四132.基于真值表的二輸入與非門(mén)描述libraryieee;useieee.std_logic_1164.all;entitynand2_72isport(a,b:instd_logic;y:outstd_logic);endentitynand2_72;architecturenand2_2ofnand2_72isbegin第13頁(yè),共195頁(yè),2023年,2月20日,星期四14process(a,b)isvariablecomb:std_logic_vector(1downto0);begincomb:=a&b;aby001011101110二輸入與非門(mén)真值表casecombiswhen"00"=>y<='1';when"01"=>y<='1';when"10"=>y<='1';when"11"=>y<='0';whenothers=>y<='X';endcase;endprocess;endarchitecturenand2_2;RTL視圖第14頁(yè),共195頁(yè),2023年,2月20日,星期四15基于真值表的另一種描述形式libraryieee;useieee.std_logic_1164.all;entitynand2_73isport(a,b:instd_logic;y:outstd_logic);endentitynand2_73;architecturenand2_3ofnand2_73isbeginy<=(notaandnotb)or(notaandb)or(aandnotb);endarchitecturenand2_3;aby001011101110二輸入與非門(mén)真值表RTL視圖第15頁(yè),共195頁(yè),2023年,2月20日,星期四163.N輸入與門(mén)的描述entityand_nisgeneric(n:integer);port(a:inbit_vector((n-1)downto0);f:outbit);endentityand_n;architectureusing_loopofand_nisbeginendarchitectureusing_loop;構(gòu)造體怎樣編寫(xiě)?使用什么語(yǔ)句?and_nnaf第16頁(yè),共195頁(yè),2023年,2月20日,星期四17process(a)isvariabletemp_f:bit;begintemp_f:='1';foriina'rangelooptemp_f:=temp_fanda(i);endloop;f<=temp_f;endprocess;作業(yè):請(qǐng)大家為“n輸入或門(mén)”編寫(xiě)VHDL程序代碼。第17頁(yè),共195頁(yè),2023年,2月20日,星期四18怎樣調(diào)用可配置輸入端口數(shù)目的N輸入與門(mén)entityand_nisgeneric(n:integer);port(a:inbit_vector((n-1)downto0);f:outbit);endentityand_n;componentand_nisgeneric(n:integer);port(a:inbit_vector((n-1)downto0);f:outbit);
endcomponentand_n;N輸入與門(mén)實(shí)體說(shuō)明部分調(diào)用N輸入與門(mén)的元件說(shuō)明語(yǔ)句第18頁(yè),共195頁(yè),2023年,2月20日,星期四19architecturestrofandgeniscomponent…endcomponent…;signala0,a1:bit_vector(2downto0);signala2:bit_vector(1downto0);begina0<=in0&in1&in2;a1<=in3&in4&in5;u0:and_ngenericmap(3)portmap(a0,a2(0));u1:and_ngenericmap(3)portmap(a1,a2(1));u2:and_ngenericmap(2)portmap(a2,y);endarchitecturestr;利用genericmap語(yǔ)句對(duì)and_n配置不同輸入端口數(shù)目u0&u2&u1&in0in1in2in3in4in5a2(0)a2(1)y第19頁(yè),共195頁(yè),2023年,2月20日,星期四207.1.3譯碼器譯碼器的功能根據(jù)特定的輸入數(shù)字狀態(tài),激活電路的一個(gè)或多個(gè)輸出。常用譯碼器二進(jìn)制譯碼器:也稱(chēng)“最小項(xiàng)發(fā)生器”,其多位輸出分別表達(dá)輸入的不同最小項(xiàng),如3-8線譯碼器。BCD-七段顯示譯碼器。地址譯碼器。第20頁(yè),共195頁(yè),2023年,2月20日,星期四21輸入輸出端口:一個(gè)三位的待譯碼二進(jìn)制數(shù)據(jù)輸入端;八個(gè)譯碼輸出端,反函數(shù)輸出;三個(gè)選通輸入控制端g1、g2a、g2b。libraryieee;useieee.std_logic_1164.all;entitykdecoder38isport(g1,g2a,g2b:instd_logic;a:instd_logic_vector(2downto0);y:outstd_logic_vector(7downto0));endentitykdecoder38;1.3-8線譯碼器第21頁(yè),共195頁(yè),2023年,2月20日,星期四22architecturertlofkdecoder38issignalyl:std_logic_vector(7downto0);beginwithaselectyl<=
"11111110"when"000","11111101"when"001",……“01111111"when"111","11111111"whenothers;y<=ylwhen(g1andnotg2aandnotg2b)='1'else"11111111";endarchitecturertl;選通輸入二進(jìn)制輸入譯碼輸出g1g2ag2ba[2:0]y[7:0]X1XXXX11111111XX1XXX111111110XXXXX111111111000001111111010000111111101100010111110111000111111011110010011101111100101110111111001101011111110011101111111第22頁(yè),共195頁(yè),2023年,2月20日,星期四23
第23頁(yè),共195頁(yè),2023年,2月20日,星期四242.BCD-七段顯示譯碼器輸入BCD碼(8421碼,用四位二進(jìn)制數(shù)碼表示的一位十進(jìn)制數(shù)),產(chǎn)生7個(gè)輸出,分別驅(qū)動(dòng)相應(yīng)顯示器件(二極管或液晶顯示單元),可顯示十進(jìn)制數(shù)。7段輸出與BCD碼的對(duì)應(yīng)關(guān)系:data(3downto0):abcdefg0000:11111100001:01100000010:11011010011:11110010100:01100110101:10110110110:00111110111:11100001000:11111111001:1110011第24頁(yè),共195頁(yè),2023年,2月20日,星期四25libraryieee;useieee.std_logic_1164.all;entitybcdseg7isport(data:instd_logic_vector(3downto0);y:outstd_logic_vector(6downto0));endentity
bcdseg7;第25頁(yè),共195頁(yè),2023年,2月20日,星期四26architecturedofbcdseg7isbeginy<="1111110"whendata="0000"else"0110000"whendata="0001"else"1101101"whendata="0010"else"1111001"whendata="0011"else"0110011"whendata="0100"else"1011011"whendata="0101"else"0011111"whendata="0110"else"1110000"whendata="0111"else"1111111"whendata="1000"else"1110011"whendata="1001"else
"0000000";endarchitectured;data(3downto0):abcdefg0000:11111100001:01100000010:11011010011:11110010100:01100110101:10110110110:00111110111:11100001000:11111111001:1110011第26頁(yè),共195頁(yè),2023年,2月20日,星期四273.地址譯碼器使能端(en)地址(a19~a0)片選輸出(cs)000000H~01FFFHCS0=0,其余為1040000H~43FFFHCS1=0,其余為1008000H~0AFFFHCS2=0,其余為10E0000H~E01FFHCS3=0,其余為11XXXXXH全1地址譯碼器真值表第27頁(yè),共195頁(yè),2023年,2月20日,星期四28libraryieee;useieee.std_logic_1164.all;entityaddrdecisport(en:instd_logic;address:instd_logic_vector(19downto0);cs:outstd_logic_vector(3downto0));endentityaddrdec;第28頁(yè),共195頁(yè),2023年,2月20日,星期四29--enmustbe'0'toenableanyoutput--cs(0):X"00000"toX"01FFF"--cs(1):X"40000"toX"43FFF"--cs(2):X"08000"toX"0AFFF"--cs(3):X"E0000"toX"E01FF"architecturev1ofaddrdecisbegincs(0)<='0'when((en='0')and((address>=X"00000")and(address<=X"01FFF")))else'1';cs(1)<='0'when((en='0')and((address>=X"40000")and(address<=X"43FFF")))else'1';cs(2)<='0'when((en='0')and((address>=X"08000")and(address<=X"0AFFF")))else'1';cs(3)<='0'when((en='0')and((address>=X"E0000")and(address<=X"E01FF")))else'1';endarchitecturev1;第29頁(yè),共195頁(yè),2023年,2月20日,星期四30練習(xí):改用case語(yǔ)句或select語(yǔ)句完成地址譯碼器的描述architecturev2ofaddrdecissignalcstemp:std_logic_vector(3downto0);beginwithaddressselectcstemp<="1110"whenX"00000"toX"01FFF","1101"whenX"40000"toX"43FFF","1011"whenX"08000"toX"0AFFF","0111"whenX"E0000"toX"E01FF","1111"whenothers;cs<=cstempwhenen='0'else"1111";endarchitecturev2;是否正確?**Error:E:/modelsimwork/addrdec/addrdec.vhd(24):Rangetypestd_logic_vectorisnotascalartype.第30頁(yè),共195頁(yè),2023年,2月20日,星期四31case語(yǔ)句architecturev3ofaddrdecwithissignalcstemp:std_logic_vector(3downto0);beginprocess(address)isbegincaseaddressiswhenX"00000"toX"01FFF"=>cstemp<="1110";whenX"40000"toX"43FFF"=>cstemp<="1101";whenX"08000"toX"0AFFF"=>cstemp<="1011";whenX"E0000"toX"E01FF"=>cstemp<="0111";whenothers=>cstemp<="1111";endcase;endprocess;cs<=cstempwhenen='0'else"1111";endarchitecturev3;第31頁(yè),共195頁(yè),2023年,2月20日,星期四32……useieee.std_logic_unsigned.all;……architecturev2ofaddrdecissignalcstemp:std_logic_vector(3downto0);signaladdrtemp:integerrange0to1048575;begin
addrtemp<=conv_integer(address);withaddrtempselectcstemp<="1110"when0to8191,"1101"when262144to278527,"1011"when32768to45055,"0111"when917504to918015,"1111"whenothers;cs<=cstempwhenen='0'else"1111";endarchitecturev2;修改后程序如下第32頁(yè),共195頁(yè),2023年,2月20日,星期四334.作業(yè):二-十進(jìn)制BCD譯碼器設(shè)計(jì)任務(wù):設(shè)計(jì)一個(gè)二-十進(jìn)制BCD譯碼器。譯碼器輸入din為4位二進(jìn)制數(shù),輸出b為十進(jìn)制數(shù)的高位,a為十進(jìn)制數(shù)的低位,a、b是二進(jìn)制編碼的十進(jìn)制數(shù)。端口圖如下:第33頁(yè),共195頁(yè),2023年,2月20日,星期四347.1.4編碼器編碼器是與譯碼器邏輯功能相反的數(shù)字部件,它將特定意義的輸入數(shù)字信號(hào)變成相應(yīng)的若干位二進(jìn)制代碼。優(yōu)先級(jí)編碼器常用于中斷的優(yōu)先級(jí)控制。比如8線-3線優(yōu)先編碼器,輸入8個(gè)數(shù)據(jù)信號(hào),編碼成3位二進(jìn)制代碼表示的數(shù)據(jù),并進(jìn)行輸出;低位0優(yōu)先,反函數(shù)輸出。本節(jié)講述該編碼器的編程,真值表如下第34頁(yè),共195頁(yè),2023年,2月20日,星期四35編碼輸入使能輸入組信號(hào)輸出編碼輸出d7d6d5d4d3d2d1d0eingsneona2na1na0nXXXXXXXX111111XXXXXXX0001111XXXXXX01001110XXXXX011001101XXXX0111001100XXX01111001011XX011111001010X01111110010010111111100100011111111010111第35頁(yè),共195頁(yè),2023年,2月20日,星期四36libraryieee;useieee.std_logic_1164.all;entityencoder8_3isport(d:instd_logic_vector(7downto0);ein:instd_logic;a0n,a1n,a2n,gsn,eon:outstd_logic);endentityencoder8_3;引腳框圖第36頁(yè),共195頁(yè),2023年,2月20日,星期四37architectureaofencoder8_3issignalq:std_logic_vector(2downto0);begina0n<=q(0);a1n<=q(1);a2n<=q(2);process(d)isbeginifein='1'thenq<="111";gsn<='1';eon<='1';elsifd(0)='0'thenq<="111";gsn<='0';eon<='1';elsifd(1)='0'thenq<="110";gsn<='0';eon<='1';……elsifd(7)='0'thenq<="000";gsn<='0';eon<='1';elseq<="111";gsn<='1';eon<='0';endif;endprocess;endarchitecturea;優(yōu)先級(jí)由高到低第37頁(yè),共195頁(yè),2023年,2月20日,星期四38仿真波形圖RTL視圖第38頁(yè),共195頁(yè),2023年,2月20日,星期四397.1.5碼制轉(zhuǎn)換電路該類(lèi)電路為多路輸入/多路輸出,將輸入的編碼轉(zhuǎn)換為對(duì)應(yīng)的輸出的編碼;上述二進(jìn)制譯碼器、編碼器的數(shù)據(jù)流設(shè)計(jì)方式可以推廣到各類(lèi)碼制轉(zhuǎn)換電路的設(shè)計(jì)中;我們將8421碼向余三碼轉(zhuǎn)換電路的VHDL描述留給同學(xué)們作為課后練習(xí)。第39頁(yè),共195頁(yè),2023年,2月20日,星期四40作業(yè):BCDExcess-3(余3碼)的轉(zhuǎn)換libraryieee;useieee.std_logic_1164.all;
entitykbcd_ex3isport(a:instd_logic_vector(3downto0);y:outstd_logic_vector(3downto0));endentitykbcd_ex3;architecturertlofkbcd_ex3isbegin………使用with…select…語(yǔ)句,或其他任何可行方式endarchitecturertl;第40頁(yè),共195頁(yè),2023年,2月20日,星期四417.1.6數(shù)據(jù)選擇器數(shù)據(jù)選擇器又叫多路開(kāi)關(guān),在選擇信號(hào)的控制下,數(shù)據(jù)選擇器從多個(gè)數(shù)據(jù)輸入通道中選擇1路或多路的數(shù)據(jù)傳輸至輸出端,常用于信號(hào)的切換。我們?cè)?.1.1節(jié),講述了利用真值表描述數(shù)據(jù)選擇器的方法,在第五章中講述if語(yǔ)句、case語(yǔ)句、選擇信號(hào)代入語(yǔ)句、條件信號(hào)代入語(yǔ)句的用法時(shí),都以四選一數(shù)據(jù)選擇器為例進(jìn)行說(shuō)明,此處就不再重復(fù)。參看課本143頁(yè)的例7-13。第41頁(yè),共195頁(yè),2023年,2月20日,星期四42作業(yè):設(shè)計(jì)16-4數(shù)據(jù)選擇器,其引腳框圖及真值表如下所示。選擇輸入輸出s1s0x00a01b10c11d16-4數(shù)據(jù)選擇器真值表第42頁(yè),共195頁(yè),2023年,2月20日,星期四437.1.7運(yùn)算器運(yùn)算電路主要包括:比較器(comparator)加法器(adder)乘法器(multipliers)算術(shù)邏輯單元(ALU)求補(bǔ)器這里,我們主要講加法器。第43頁(yè),共195頁(yè),2023年,2月20日,星期四441.半加器加法器有全加器和半加器之分,半加器是組成全加器的基本部件,邏輯符號(hào)及真值表如下二進(jìn)制輸入和輸出進(jìn)位輸出basco0000011010101101第44頁(yè),共195頁(yè),2023年,2月20日,星期四45libraryieee;useieee.std_logic_1164.all;entityhalf_adderisport(a,b:instd_logic;s,co:outstd_logic);endentityhalf_adder;architecturehalf1ofhalf_adderisbeginco<=aandb;s<=axorb;endarchitecturehalf1;c<=aorb;d<=anandb;co<=notd;s<=candd;signalc,d:std_logic;第45頁(yè),共195頁(yè),2023年,2月20日,星期四46
第46頁(yè),共195頁(yè),2023年,2月20日,星期四472.全加器輸入輸出端口輸入:a,b,ci(進(jìn)位)輸出:s(和位),co(進(jìn)位)
半加器僅能用于1bit加法,如果要設(shè)計(jì)較多位的加法器時(shí),僅靠多個(gè)半加器相連無(wú)法達(dá)成此愿望,因其無(wú)法處理進(jìn)位問(wèn)題,故須使用全加器。當(dāng)兩個(gè)二進(jìn)制數(shù)相加時(shí),較高的高位相加時(shí)必須加入較低的進(jìn)位項(xiàng),以得到輸出為和(s)及進(jìn)位(co),因此有三個(gè)輸入項(xiàng),而輸出同樣為兩項(xiàng)。第47頁(yè),共195頁(yè),2023年,2月20日,星期四48輸入輸出abcisco0000000110010100110110010101011100111111全加器真值表邏輯表達(dá)式:第48頁(yè),共195頁(yè),2023年,2月20日,星期四49libraryieee;useieee.std_logic_1164.all;entityfulladderisport(a:instd_logic;b:instd_logic;
ci:instd_logic;s:outstd_logic;co:outstd_logic);endentityfulladder;architecturertloffulladderisbegins<=(axorb)xorci;co<=(aandb)or(cianda)or(ciandb);endarchitecturertl;第49頁(yè),共195頁(yè),2023年,2月20日,星期四50基于邏輯表達(dá)式的RTL視圖基于算術(shù)表達(dá)式的RTL視圖第50頁(yè),共195頁(yè),2023年,2月20日,星期四513.由兩個(gè)半加器構(gòu)成一位全加器libraryieee;useieee.std_logic_1164.all;entityfull_adderis
port(a,b,cin:instd_logic;s,co:outstd_logic);end
entity
full_adder;半加器邏輯表達(dá)式全加器邏輯表達(dá)式第51頁(yè),共195頁(yè),2023年,2月20日,星期四52architecturefulloffull_adderiscomponenthalf_adderis
port(a,b:instd_logic;s,co:outstd_logic);endcomponenthalf_adder;signalu0_co,u0_s,u1_co:std_logic;beginu0:half_adderportmap(a,b,u0_s,u0_co);u1:half_adderportmap(u0_s,cin,s,u1_co);co<=u0_cooru1_co;end
architecture
full;第52頁(yè),共195頁(yè),2023年,2月20日,星期四534.N位串行進(jìn)位加法器第53頁(yè),共195頁(yè),2023年,2月20日,星期四54libraryieee;useieee.std_logic_1164.all;entityaddernisgeneric(n:integer:=16);port(a:instd_logic_vector(ndownto1);b:instd_logic_vector(ndownto1);cin:instd_logic;sum:outstd_logic_vector(ndownto1);cout:outstd_logic);end
entityaddern;architecturestructuralofaddernis
componentfulladderisport(a:instd_logic;b:instd_logic;ci:instd_logic;s:outstd_logic;co:outstd_logic);
endcomponentfulladder;第54頁(yè),共195頁(yè),2023年,2月20日,星期四55signalcarry:std_logic_vector(0ton);begincarry(0)<=cin;cout<=carry(n);--instantiateasingle_bitadderntimesgen:foriin1tongenerate
add:
fulladderportmap(a=>a(i),b=>b(i),ci=>carry(i-1),s=>sum(i),co=>carry(i));endgenerate;end
architecturestructural;思考:我們可以用信號(hào)代入語(yǔ)句來(lái)寫(xiě)嗎?第55頁(yè),共195頁(yè),2023年,2月20日,星期四56練習(xí):改錯(cuò)并判斷以下程序所描述電路的功能libraryieee;useieee.std_logic_1164.all;entitykparity9isport(i:instd_logic_vector;even,odd:outstd_logic);endentitykparity9;architecturertlofkparity9isvariabley1,y2,y3:std_logic;beginy1:=i(1)xori(2)xori(3);y2:=i(4)xori(5)xori(6);y3:=i(7)xori(8)xori(9);even<=notodd;odd<=y1xory2xory3;endarchitecturertl;9位奇偶校驗(yàn)電路,若輸入數(shù)據(jù)中包含偶數(shù)個(gè)1則,even為1,odd為0;否則,even為0,odd為1。第56頁(yè),共195頁(yè),2023年,2月20日,星期四57練習(xí):設(shè)計(jì)一個(gè)四位比較器,它有兩個(gè)四位輸入端口in1和in2,是需要比較的兩個(gè)操作數(shù);一個(gè)一位的輸出端口pout,當(dāng)in1<in2時(shí),輸出高電平,否則輸出低電平。libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitycompisport(in1,in2:instd_logic_vector(3downto0);pout:outstd_logic);endentitycomp;architecturertlofcompisbegincompin1in2pout第57頁(yè),共195頁(yè),2023年,2月20日,星期四58process(in1,in2)isvariablet1,t2:integerrange0to15;begint1:=conv_integer(in1);t2:=conv_integer(in2);ift1<t2thenpout<='1';elsepout<='0';endif;endprocess;endarchitecturertl;compin1in2poutuseieee.std_logic_unsigned.all;第58頁(yè),共195頁(yè),2023年,2月20日,星期四59第59頁(yè),共195頁(yè),2023年,2月20日,星期四60練習(xí)二進(jìn)制值運(yùn)算經(jīng)常用到求補(bǔ)操作,設(shè)計(jì)一個(gè)8位的求補(bǔ)器。libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityhosuuisport(a:instd_logic_vector(7downto0);b:outstd_logic_vector(7downto0));endentityhosuu;architecturertlofhosuuisbeginb<=nota+‘1’;endarchitecturertl;此程序沒(méi)有考慮有符號(hào)數(shù)的求補(bǔ)第60頁(yè),共195頁(yè),2023年,2月20日,星期四61libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityhosisport(a:instd_logic_vector(7downto0);b:outstd_logic_vector(7downto0));endentityhos;architecturertlofhosisbegin……endarchitecturertl;process(a)isvariablet:std_logic_vector(6downto0);beginifa(7)='1'thent:=nota(6downto0)+1;b<=a(7)&t;elseb<=a;endif;endprocess;有符號(hào)數(shù)的求補(bǔ)描述第61頁(yè),共195頁(yè),2023年,2月20日,星期四62Info:Longesttpdfromsourcepin"a[7]"todestinationpin"b[4]"is10.236nstotallogicelement8Info:Longesttpdfromsourcepin"a[0]"todestinationpin"b[6]"is10.553nstotallogicelement7無(wú)符號(hào)數(shù)的求補(bǔ)器有符號(hào)數(shù)的求補(bǔ)器有符號(hào)數(shù)的求補(bǔ)器的仿真波形圖第62頁(yè),共195頁(yè),2023年,2月20日,星期四63作業(yè):設(shè)計(jì)四位算術(shù)邏輯單元(ALU),它具有一個(gè)3位的功能選擇輸入端口sel;兩個(gè)四位的操作數(shù)輸入端口a、b;一個(gè)進(jìn)位輸入端口cin;一個(gè)四位的結(jié)果輸出端口y;一個(gè)進(jìn)位輸出端口cout;通過(guò)sel的選擇,可以對(duì)輸入的兩組數(shù)據(jù)及進(jìn)位進(jìn)行8種不同的算術(shù)運(yùn)算或邏輯運(yùn)算,對(duì)應(yīng)關(guān)系見(jiàn)真值表。第63頁(yè),共195頁(yè),2023年,2月20日,星期四64功能選擇sel[2:0]對(duì)應(yīng)的算術(shù)邏輯運(yùn)算000y=a+b+cin001y=a-b-cin010y=a+cin011y=a-cin100y=aandb101y=aorb110y=axorb111y=nota算術(shù)邏輯單元真值表將每一種運(yùn)算設(shè)計(jì)成一個(gè)小程序塊,通過(guò)選擇語(yǔ)句中的控制變量選擇不同的程序塊進(jìn)行運(yùn)算。設(shè)計(jì)思想第64頁(yè),共195頁(yè),2023年,2月20日,星期四65libraryieee;useieee.std_logic_1164.all;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;
entityalu1isport(a,b:instd_logic_vector(3downto0);cin:instd_logic;sel:instd_logic_vector(2downto0);y:outstd_logic_vector(3downto0);cout:outstd_logic);endentityalu1;第65頁(yè),共195頁(yè),2023年,2月20日,星期四66architecturebehofalu1issignalc:std_logic_vector(3downto0);beginprocess(a,b,cin,sel)isbegincaseseliswhen“000”=>--實(shí)現(xiàn)a+b+cin;
when"001"=>--實(shí)現(xiàn)a-b-cin;when“010”=>--實(shí)現(xiàn)a+cin;
when"011"=>--實(shí)現(xiàn)a-cin;when“100”=>--實(shí)現(xiàn)y=aandb;when“101”=>--實(shí)現(xiàn)y=aorb;when“110”=>--實(shí)現(xiàn)y=axorb;when“111”=>--實(shí)現(xiàn)y=nota;whenothers=>y<="0000”;cout<='0';
endcase;endprocess;endarchitecturebeh;第66頁(yè),共195頁(yè),2023年,2月20日,星期四677.1.8三態(tài)門(mén)及總線緩沖器三態(tài)門(mén)電路數(shù)據(jù)輸入控制輸入數(shù)據(jù)輸出dinendoutX0Z010111三態(tài)門(mén)真值表
三態(tài)門(mén)和雙向緩沖器是接口電路和總線驅(qū)動(dòng)電路經(jīng)常用到的器件。利用高阻態(tài),可以使總線被多個(gè)設(shè)備所共享,并且可以方便地實(shí)現(xiàn)數(shù)據(jù)總線的雙向操作。第67頁(yè),共195頁(yè),2023年,2月20日,星期四68libraryieee;useieee.std_logic_1164.all;entitytrigateisport(din,en:instd_logic;dout:outstd_logic);endentitytrigate;architecturertloftrigateisbeginprocess(din,en)isbeginif(en='1')thendout<=din;elsedout<='Z';endif;endprocess;endarchitecturertl;第68頁(yè),共195頁(yè),2023年,2月20日,星期四69衛(wèi)式塊結(jié)構(gòu)描述的三態(tài)門(mén)architecturertloftri_gateisbegintri_gate2:block(en='1')begindout<=guardeddin;endblocktri_gate2;endarchitecturertl;architecturertloftri_gateisbeginprocess(din,en)isbegincaseeniswhen‘1’=>dout=>din;whenothers=>dout<=‘Z’;endcase;endprocess;endarchitecturertl;case語(yǔ)句描述的三態(tài)門(mén)第69頁(yè),共195頁(yè),2023年,2月20日,星期四702.單向總線緩沖器單向總線緩沖器通常由多個(gè)三態(tài)門(mén)組成,所有三態(tài)緩沖器的控制端連在一起。八位單向總線驅(qū)動(dòng)器din(0)din(1)din(2)din(3)din(4)din(5)din(6)din(7)dout(0)dout(1)dout(2)dout(3)dout(4)dout(5)dout(6)dout(7)enendin(0)din(1)din(2)din(3)din(4)din(5)din(6)din(7)dout(0)dout(1)dout(2)dout(3)dout(4)dout(5)dout(6)dout(7)en第70頁(yè),共195頁(yè),2023年,2月20日,星期四71libraryieee;useieee.std_logic_1164.all;entitytribuf8isport(din:instd_logic_vector(7downto0);dout:outstd_logic_vector(7downto0);en:instd_logic);endentitytribuf8;architecturertloftribuf8isbeginprocess(en,din)isbeginif(en=‘1’)thendout<=din;elsedout<=“ZZZZZZZZ”;endif;endprocess;endarchitecturertl;Tri_buff:block(en=‘1’)begindout<=guardeddin;endblockTri_buff;tri_buf:process(en,din)isbegincaseeniswhen‘1’=>dout<=din;whenothers=>dout<="ZZZZZZZZ";endcase;endprocesstri_buf;dout<=dinwhenen='1'else"ZZZZZZZZ";第71頁(yè),共195頁(yè),2023年,2月20日,星期四72采用條件語(yǔ)句的仿真波形采用衛(wèi)式塊的仿真波形采用條件語(yǔ)句的RTL視圖第72頁(yè),共195頁(yè),2023年,2月20日,星期四733.雙向總線緩沖器gdir功能00a<=b01b<=a1X高阻雙向總線緩沖器真值表第73頁(yè),共195頁(yè),2023年,2月20日,星期四74libraryieee;useieee.std_logic_1164.all;entitytribigateis
port(a,b:inoutstd_logic_vector(7downto0);g,dir:instd_logic);endentitytribigate;architecturertloftribigateissignalaout,bout:std_logic_vector(7downto0);begin引腳框圖第74頁(yè),共195頁(yè),2023年,2月20日,星期四75process(a,dir,g)isbeginif((g='0')and(dir='1'))thenbout<=a;elsebout<="ZZZZZZZZ";endif;b<=bout;endprocess;process(b,dir,g)isbeginif(g='0'anddir='0')thenaout<=b;elseaout<="ZZZZZZZZ";endif;a<=aout;endprocess;endarchitecturertl;b<=awhen(g='0')and(dir='0')else"ZZZZZZZZ";a<=bwhen(g='0')and(dir='1')else“ZZZZZZZZ”;gdir功能00a<=b01b<=a1X高阻真值表第75頁(yè),共195頁(yè),2023年,2月20日,星期四76注意雙向總線緩沖器在功能仿真時(shí)的輸入波形設(shè)置a和b的輸入不要同時(shí)存在;設(shè)置a的輸入,應(yīng)將b的輸入設(shè)置為“ZZZZZZZZ”(高阻);轉(zhuǎn)換傳輸方向時(shí),應(yīng)該以雙向阻塞作為間隔。b<=awhen(g='0')and(dir='0')else"ZZZZZZZZ";a<=bwhen(g='0')and(dir='1')else“ZZZZZZZZ”;第76頁(yè),共195頁(yè),2023年,2月20日,星期四777.2時(shí)序邏輯電路的VHDL設(shè)計(jì)
時(shí)序電路與組合電路的區(qū)別在于,時(shí)序邏輯電路多了存儲(chǔ)電路部分,需要記錄目前的輸出信號(hào)狀態(tài),用來(lái)與輸入信號(hào)一起,共同決定下一次輸出信號(hào)的狀態(tài)。本節(jié)內(nèi)容:時(shí)鐘信號(hào)和復(fù)位信號(hào)觸發(fā)器寄存器計(jì)數(shù)器第77頁(yè),共195頁(yè),2023年,2月20日,星期四787.2.1時(shí)鐘信號(hào)和復(fù)位信號(hào)1.時(shí)鐘信號(hào)的描述時(shí)序邏輯電路的信號(hào)變化特點(diǎn):任何時(shí)序邏輯電路以時(shí)鐘信號(hào)為驅(qū)動(dòng);電路內(nèi)部信號(hào)的變化(或輸出信號(hào)的變化)只發(fā)生在特定的時(shí)鐘邊沿;其他時(shí)刻輸入信號(hào)的變化對(duì)電路不產(chǎn)生影響;所以,時(shí)鐘信號(hào)通常是描述時(shí)序邏輯電路程序的執(zhí)行條件;時(shí)序邏輯電路總是以時(shí)鐘進(jìn)程的形式進(jìn)行描述,一般有兩種形式。第78頁(yè),共195頁(yè),2023年,2月20日,星期四791)進(jìn)程的敏感信號(hào)是時(shí)鐘信號(hào)process(clock_signal)isbeginif(clock_edge_condition)thensignal_out<=signal_in;…
其他時(shí)序語(yǔ)句;
…endif;endprocess;時(shí)鐘信號(hào)發(fā)生變化時(shí)啟動(dòng)測(cè)試時(shí)鐘邊沿條件是否滿(mǎn)足,滿(mǎn)足則執(zhí)行時(shí)序電路所對(duì)應(yīng)的語(yǔ)句第79頁(yè),共195頁(yè),2023年,2月20日,星期四802)進(jìn)程中使用wait語(yǔ)句等待時(shí)鐘processbegin
waituntil(clock_signal)and(clock_edge_condition);signal_out<=signal_in;…
其他時(shí)序語(yǔ)句;…endprocess;等待時(shí)鐘邊沿在程序中要說(shuō)明是使用時(shí)鐘上升沿還是下降沿;進(jìn)程中的敏感信號(hào)表,只能出現(xiàn)一個(gè)時(shí)鐘;wait語(yǔ)句只能放在進(jìn)程的最前面或最后面。第80頁(yè),共195頁(yè),2023年,2月20日,星期四813)時(shí)鐘邊沿的描述A.上升沿ifclk=‘1’andclk’last_value=‘0’andclk’eventB.下降沿ifclk=‘0’andclk’last_value=‘1’andclk’event時(shí)鐘邊沿屬性描述的一般形式:
clock_siganl=current_valueandclock_signal’last_valueandclock_signal’event第81頁(yè),共195頁(yè),2023年,2月20日,星期四822.復(fù)位信號(hào)時(shí)序邏輯電路的初始狀態(tài)應(yīng)由復(fù)位信號(hào)來(lái)設(shè)置,根據(jù)復(fù)位信號(hào)對(duì)時(shí)序邏輯電路復(fù)位操作的不同,可分為同步復(fù)位和異步復(fù)位。同步復(fù)位:復(fù)位信號(hào)有效,并且在給定的時(shí)鐘邊沿到來(lái)時(shí),觸發(fā)器才被復(fù)位。異步復(fù)位:復(fù)位信號(hào)一旦有效,時(shí)序邏輯電路立即回到初始狀態(tài)。第82頁(yè),共195頁(yè),2023年,2月20日,星期四831)同步復(fù)位同步復(fù)位在以時(shí)鐘為敏感信號(hào)的進(jìn)程中定義,且用if語(yǔ)句來(lái)描述復(fù)位條件。形式A:
process(clock_signal)isbeginif(clock_edge_condition)then……endif;endprocess;if(reset_condition)thensignal_out<=reset_value;elsesignal_out<=signal_in;
其他時(shí)序語(yǔ)句;
endif;第83頁(yè),共195頁(yè),2023年,2月20日,星期四84形式B:processbegin
waituntil(clock_signal)and(clock_edge_condition);if(reset_condition)thensignal_out<=reset_value;elsesignal_out<=signal_in;…
其它時(shí)序語(yǔ)句;
…endif;endprocess;第84頁(yè),共195頁(yè),2023年,2月20日,星期四852)異步復(fù)位在描述上與同步方式的不同之處:進(jìn)程敏感信號(hào)表中應(yīng)有clk、reset同時(shí)存在;用if語(yǔ)句描述復(fù)位條件;在elsif段描述時(shí)鐘邊沿的條件,并加上event屬性。第85頁(yè),共195頁(yè),2023年,2月20日,星期四86process(clock_signal,reset_signal)isbegin
if(reset_condition)then
signal_out<=reset_value;
elsif(clock’eventandclock_edge_condition)thensignal_out<=signal_in;…
其他時(shí)序語(yǔ)句;
…endif;endprocess;第86頁(yè),共195頁(yè),2023年,2月20日,星期四877.2.2觸發(fā)器1.D觸發(fā)器數(shù)據(jù)輸入端時(shí)鐘輸入端數(shù)據(jù)輸出端dclkqn+1X0qnX1qn0上升沿01上升沿1
輸出只在時(shí)鐘邊沿時(shí)刻發(fā)生變化,輸入信號(hào)變化不能直接導(dǎo)致輸出變化。(邊沿控制)第87頁(yè),共195頁(yè),2023年,2月20日,星期四88libraryieee;useieee.std_logic_1164.all;entitydff1isport(clk,d:instd_logic;q:outstd_logic);endentitydff1;architecturertlofdff1isbeginprocess(clk)isbeginif(clk'eventandclk='1')thenq<=d;endif;endprocess;endarchitecturertl;第88頁(yè),共195頁(yè),2023年,2月20日,星期四89使用waituntil語(yǔ)句描述時(shí)鐘邊沿觸發(fā)條件libraryieee;useieee.std_logic_1164.all;entitydff11isport(clk,d:instd_logic;q:outstd_logic);endentitydff11;architecturertlofdff11isbeginprocessbegin
waituntilclk'eventandclk='1';
q<=d;endprocess;endarchitecturertl;作業(yè):請(qǐng)大家用VHDL語(yǔ)言描述D鎖存器,輸出受時(shí)鐘電平控制,在高電平期間其輸出跟隨輸入變化。(電平控制)
第89頁(yè),共195頁(yè),2023年,2月20日,星期四90libraryieee;useieee.std_logic_1164.all;entitydff2isport(clk,d,clr:instd_logic;q:outstd_logic);endentitydff2;architecturertlofdff2isbeginprocess(clk,clr)isbeginif(clr=‘0’)thenq<='0';elsif(clk'eventandclk='1')thenq<=d;endif;endprocess;endarchitecturertl;2.異步復(fù)位D觸發(fā)器第90頁(yè),共195頁(yè),2023年,2月20日,星期四913.異步置位/復(fù)位D觸發(fā)器libraryieee;useieee.std_logic_1164.all;entitydff3isport(clk,d,clr,ps
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 重慶科技學(xué)院《度假區(qū)經(jīng)營(yíng)管理》2023-2024學(xué)年第二學(xué)期期末試卷
- 寧夏藝術(shù)職業(yè)學(xué)院《沉積盆地與資源》2023-2024學(xué)年第二學(xué)期期末試卷
- 南京財(cái)經(jīng)大學(xué)《空間信息可視化》2023-2024學(xué)年第二學(xué)期期末試卷
- 山東大學(xué)《機(jī)械原理及課程設(shè)計(jì)》2023-2024學(xué)年第二學(xué)期期末試卷
- 廣東第二師范學(xué)院《計(jì)算機(jī)系統(tǒng)》2023-2024學(xué)年第二學(xué)期期末試卷
- 鄭州大學(xué)《食品理化分析》2023-2024學(xué)年第二學(xué)期期末試卷
- 上海工藝美術(shù)職業(yè)學(xué)院《機(jī)械設(shè)計(jì)Ⅱ》2023-2024學(xué)年第二學(xué)期期末試卷
- 寧德硅pu籃球場(chǎng)施工方案
- 湖南水利水電職業(yè)技術(shù)學(xué)院《鋼結(jié)構(gòu)設(shè)計(jì)A》2023-2024學(xué)年第二學(xué)期期末試卷
- 浙江同濟(jì)科技職業(yè)學(xué)院《地理信息系統(tǒng)概論》2023-2024學(xué)年第二學(xué)期期末試卷
- 砥礪前行決心譜寫(xiě)華章
- 2025年開(kāi)學(xué)教導(dǎo)處發(fā)言稿(5篇)
- 機(jī)電設(shè)備安裝旁站監(jiān)理方案
- 2025年度民政局離婚協(xié)議書(shū)范本模板官方修訂2篇
- 《百達(dá)翡麗名表介紹》課件
- 《集裝箱標(biāo)識(shí)辨識(shí)》課件
- 2024年臨床輸血管理委員會(huì)年終的工作總結(jié)
- 2025版《VOCs廢氣處理設(shè)施安全檢查表》(全)
- 整形醫(yī)院客戶(hù)管理培訓(xùn)
- 七年級(jí)語(yǔ)文下冊(cè)全冊(cè)完整課件(部編版)
- (投資管理)對(duì)外投資合作國(guó)別(地區(qū))指南
評(píng)論
0/150
提交評(píng)論