




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
基本邏輯電路設(shè)計(jì)第1頁(yè),課件共195頁(yè),創(chuàng)作于2023年2月27.1組合邏輯電路設(shè)計(jì)7.1.1設(shè)計(jì)基礎(chǔ)
一、組合邏輯電路的設(shè)計(jì)步驟邏輯真值表邏輯函數(shù)式選定器件類型化簡(jiǎn)邏輯函數(shù)邏輯電路圖邏輯問題分析事件的因果關(guān)系,確定輸入端口和輸出端口及邏輯狀態(tài)的含意。將實(shí)際的邏輯問題抽象成邏輯函數(shù)。由EDA工具自動(dòng)完成。第2頁(yè),課件共195頁(yè),創(chuàng)作于2023年2月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è),創(chuàng)作于2023年2月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è),創(chuàng)作于2023年2月5此例按真值表(用“與或”結(jié)構(gòu)實(shí)現(xiàn))要求,用VHDL語言邏輯表達(dá)式方式描述四選一數(shù)據(jù)選擇器,將f=’1’的行用最小項(xiàng)表達(dá)式表達(dá)出來即可。這種描述方法和傳統(tǒng)的由真值表變?yōu)樽钚№?xiàng)表達(dá)式的設(shè)計(jì)方法是相同的,只是用VHDL語言進(jìn)行描述無須化簡(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è),創(chuàng)作于2023年2月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語言的邏輯符號(hào)置換布爾方程中相應(yīng)的邏輯符號(hào)即可。第6頁(yè),課件共195頁(yè),創(chuàng)作于2023年2月73、用算術(shù)表達(dá)式描述組合電路設(shè)計(jì)任務(wù):設(shè)計(jì)一位全加器。邏輯功能:考慮來自低位的進(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è),創(chuàng)作于2023年2月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)算是為了滿足代入符<=左、右兩側(cè)運(yùn)算對(duì)象的位數(shù)相同。算術(shù)表達(dá)式設(shè)計(jì)電路,只要用VHDL語言的算術(shù)符號(hào)置換算術(shù)表達(dá)式中相應(yīng)的算術(shù)符號(hào)即可,同時(shí)要考慮VHDL語言對(duì)運(yùn)算操作數(shù)的要求。第8頁(yè),課件共195頁(yè),創(chuàng)作于2023年2月9組合邏輯電路設(shè)計(jì)實(shí)例簡(jiǎn)單門電路譯碼器編碼器編碼轉(zhuǎn)換器數(shù)據(jù)選擇器運(yùn)算器三態(tài)門及總線緩沖器第9頁(yè),課件共195頁(yè),創(chuàng)作于2023年2月107.1.2簡(jiǎn)單門電路簡(jiǎn)單門電路表達(dá)簡(jiǎn)答邏輯關(guān)系,采用簡(jiǎn)單的信號(hào)代入語句就能夠方便地實(shí)現(xiàn);沒有必要采用復(fù)雜的結(jié)構(gòu)。例如,反向器y<=nota;2輸入與非門y<=anandb;2輸入或非門y<=anorb;2輸入異或門y<=axorb;與或非門y<=not((a1anda2)or(a3anda4));第10頁(yè),課件共195頁(yè),創(chuàng)作于2023年2月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á)式的二輸入與非門描述第11頁(yè),課件共195頁(yè),創(chuàng)作于2023年2月12RTL視圖仿真波形圖第12頁(yè),課件共195頁(yè),創(chuàng)作于2023年2月132.基于真值表的二輸入與非門描述libraryieee;useieee.std_logic_1164.all;entitynand2_72isport(a,b:instd_logic;y:outstd_logic);endentitynand2_72;architecturenand2_2ofnand2_72isbegin第13頁(yè),課件共195頁(yè),創(chuàng)作于2023年2月14process(a,b)isvariablecomb:std_logic_vector(1downto0);begincomb:=a&b;aby001011101110二輸入與非門真值表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è),創(chuàng)作于2023年2月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二輸入與非門真值表RTL視圖第15頁(yè),課件共195頁(yè),創(chuàng)作于2023年2月163.N輸入與門的描述entityand_nisgeneric(n:integer);port(a:inbit_vector((n-1)downto0);f:outbit);endentityand_n;architectureusing_loopofand_nisbeginendarchitectureusing_loop;構(gòu)造體怎樣編寫?使用什么語句?and_nnaf第16頁(yè),課件共195頁(yè),創(chuàng)作于2023年2月17process(a)isvariabletemp_f:bit;begintemp_f:='1';foriina'rangelooptemp_f:=temp_fanda(i);endloop;f<=temp_f;endprocess;作業(yè):請(qǐng)大家為“n輸入或門”編寫VHDL程序代碼。第17頁(yè),課件共195頁(yè),創(chuàng)作于2023年2月18怎樣調(diào)用可配置輸入端口數(shù)目的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輸入與門實(shí)體說明部分調(diào)用N輸入與門的元件說明語句第18頁(yè),課件共195頁(yè),創(chuàng)作于2023年2月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語句對(duì)and_n配置不同輸入端口數(shù)目u0&u2&u1&in0in1in2in3in4in5a2(0)a2(1)y第19頁(yè),課件共195頁(yè),創(chuàng)作于2023年2月207.1.3譯碼器譯碼器的功能根據(jù)特定的輸入數(shù)字狀態(tài),激活電路的一個(gè)或多個(gè)輸出。常用譯碼器二進(jìn)制譯碼器:也稱“最小項(xiàng)發(fā)生器”,其多位輸出分別表達(dá)輸入的不同最小項(xiàng),如3-8線譯碼器。BCD-七段顯示譯碼器。地址譯碼器。第20頁(yè),課件共195頁(yè),創(chuàng)作于2023年2月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è),創(chuàng)作于2023年2月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è),創(chuàng)作于2023年2月23
第23頁(yè),課件共195頁(yè),創(chuàng)作于2023年2月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è),創(chuàng)作于2023年2月25libraryieee;useieee.std_logic_1164.all;entitybcdseg7isport(data:instd_logic_vector(3downto0);y:outstd_logic_vector(6downto0));endentity
bcdseg7;第25頁(yè),課件共195頁(yè),創(chuàng)作于2023年2月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è),創(chuàng)作于2023年2月273.地址譯碼器使能端(en)地址(a19~a0)片選輸出(cs)000000H~01FFFHCS0=0,其余為1040000H~43FFFHCS1=0,其余為1008000H~0AFFFHCS2=0,其余為10E0000H~E01FFHCS3=0,其余為11XXXXXH全1地址譯碼器真值表第27頁(yè),課件共195頁(yè),創(chuàng)作于2023年2月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è),創(chuàng)作于2023年2月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è),創(chuàng)作于2023年2月30練習(xí):改用case語句或select語句完成地址譯碼器的描述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è),創(chuàng)作于2023年2月31case語句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è),創(chuàng)作于2023年2月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è),創(chuàng)作于2023年2月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è),創(chuàng)作于2023年2月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è),創(chuàng)作于2023年2月35編碼輸入使能輸入組信號(hào)輸出編碼輸出d7d6d5d4d3d2d1d0eingsneona2na1na0nXXXXXXXX111111XXXXXXX0001111XXXXXX01001110XXXXX011001101XXXX0111001100XXX01111001011XX011111001010X01111110010010111111100100011111111010111第35頁(yè),課件共195頁(yè),創(chuàng)作于2023年2月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è),創(chuàng)作于2023年2月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è),創(chuàng)作于2023年2月38仿真波形圖RTL視圖第38頁(yè),課件共195頁(yè),創(chuàng)作于2023年2月397.1.5碼制轉(zhuǎn)換電路該類電路為多路輸入/多路輸出,將輸入的編碼轉(zhuǎn)換為對(duì)應(yīng)的輸出的編碼;上述二進(jìn)制譯碼器、編碼器的數(shù)據(jù)流設(shè)計(jì)方式可以推廣到各類碼制轉(zhuǎn)換電路的設(shè)計(jì)中;我們將8421碼向余三碼轉(zhuǎn)換電路的VHDL描述留給同學(xué)們作為課后練習(xí)。第39頁(yè),課件共195頁(yè),創(chuàng)作于2023年2月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…語句,或其他任何可行方式endarchitecturertl;第40頁(yè),課件共195頁(yè),創(chuàng)作于2023年2月417.1.6數(shù)據(jù)選擇器數(shù)據(jù)選擇器又叫多路開關(guān),在選擇信號(hào)的控制下,數(shù)據(jù)選擇器從多個(gè)數(shù)據(jù)輸入通道中選擇1路或多路的數(shù)據(jù)傳輸至輸出端,常用于信號(hào)的切換。我們?cè)?.1.1節(jié),講述了利用真值表描述數(shù)據(jù)選擇器的方法,在第五章中講述if語句、case語句、選擇信號(hào)代入語句、條件信號(hào)代入語句的用法時(shí),都以四選一數(shù)據(jù)選擇器為例進(jìn)行說明,此處就不再重復(fù)。參看課本143頁(yè)的例7-13。第41頁(yè),課件共195頁(yè),創(chuàng)作于2023年2月42作業(yè):設(shè)計(jì)16-4數(shù)據(jù)選擇器,其引腳框圖及真值表如下所示。選擇輸入輸出s1s0x00a01b10c11d16-4數(shù)據(jù)選擇器真值表第42頁(yè),課件共195頁(yè),創(chuàng)作于2023年2月437.1.7運(yùn)算器運(yùn)算電路主要包括:比較器(comparator)加法器(adder)乘法器(multipliers)算術(shù)邏輯單元(ALU)求補(bǔ)器這里,我們主要講加法器。第43頁(yè),課件共195頁(yè),創(chuàng)作于2023年2月441.半加器加法器有全加器和半加器之分,半加器是組成全加器的基本部件,邏輯符號(hào)及真值表如下二進(jìn)制輸入和輸出進(jìn)位輸出basco0000011010101101第44頁(yè),課件共195頁(yè),創(chuàng)作于2023年2月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è),創(chuàng)作于2023年2月46
第46頁(yè),課件共195頁(yè),創(chuàng)作于2023年2月472.全加器輸入輸出端口輸入:a,b,ci(進(jìn)位)輸出:s(和位),co(進(jìn)位)
半加器僅能用于1bit加法,如果要設(shè)計(jì)較多位的加法器時(shí),僅靠多個(gè)半加器相連無法達(dá)成此愿望,因其無法處理進(jì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è),創(chuàng)作于2023年2月48輸入輸出abcisco0000000110010100110110010101011100111111全加器真值表邏輯表達(dá)式:第48頁(yè),課件共195頁(yè),創(chuàng)作于2023年2月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è),創(chuàng)作于2023年2月50基于邏輯表達(dá)式的RTL視圖基于算術(shù)表達(dá)式的RTL視圖第50頁(yè),課件共195頁(yè),創(chuàng)作于2023年2月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è),創(chuàng)作于2023年2月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è),創(chuàng)作于2023年2月534.N位串行進(jìn)位加法器第53頁(yè),課件共195頁(yè),創(chuàng)作于2023年2月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è),創(chuàng)作于2023年2月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)代入語句來寫嗎?第55頁(yè),課件共195頁(yè),創(chuàng)作于2023年2月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è),創(chuàng)作于2023年2月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è),創(chuàng)作于2023年2月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è),創(chuàng)作于2023年2月59第59頁(yè),課件共195頁(yè),創(chuàng)作于2023年2月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;此程序沒有考慮有符號(hào)數(shù)的求補(bǔ)第60頁(yè),課件共195頁(yè),創(chuàng)作于2023年2月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è),創(chuàng)作于2023年2月62Info:Longesttpdfromsourcepin"a[7]"todestinationpin"b[4]"is10.236nstotallogicelement8Info:Longesttpdfromsourcepin"a[0]"todestinationpin"b[6]"is10.553nstotallogicelement7無符號(hào)數(shù)的求補(bǔ)器有符號(hào)數(shù)的求補(bǔ)器有符號(hào)數(shù)的求補(bǔ)器的仿真波形圖第62頁(yè),課件共195頁(yè),創(chuàng)作于2023年2月63作業(yè):設(shè)計(jì)四位算術(shù)邏輯單元(ALU),它具有一個(gè)3位的功能選擇輸入端口sel;兩個(gè)四位的操作數(shù)輸入端口a、b;一個(gè)進(jìn)位輸入端口cin;一個(gè)四位的結(jié)果輸出端口y;一個(gè)進(jìn)位輸出端口cout;通過sel的選擇,可以對(duì)輸入的兩組數(shù)據(jù)及進(jìn)位進(jìn)行8種不同的算術(shù)運(yùn)算或邏輯運(yùn)算,對(duì)應(yīng)關(guān)系見真值表。第63頁(yè),課件共195頁(yè),創(chuàng)作于2023年2月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è)小程序塊,通過選擇語句中的控制變量選擇不同的程序塊進(jìn)行運(yùn)算。設(shè)計(jì)思想第64頁(yè),課件共195頁(yè),創(chuàng)作于2023年2月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è),創(chuàng)作于2023年2月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è),創(chuàng)作于2023年2月677.1.8三態(tài)門及總線緩沖器三態(tài)門電路數(shù)據(jù)輸入控制輸入數(shù)據(jù)輸出dinendoutX0Z010111三態(tài)門真值表
三態(tài)門和雙向緩沖器是接口電路和總線驅(qū)動(dòng)電路經(jīng)常用到的器件。利用高阻態(tài),可以使總線被多個(gè)設(shè)備所共享,并且可以方便地實(shí)現(xiàn)數(shù)據(jù)總線的雙向操作。第67頁(yè),課件共195頁(yè),創(chuàng)作于2023年2月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è),創(chuàng)作于2023年2月69衛(wèi)式塊結(jié)構(gòu)描述的三態(tài)門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語句描述的三態(tài)門第69頁(yè),課件共195頁(yè),創(chuàng)作于2023年2月702.單向總線緩沖器單向總線緩沖器通常由多個(gè)三態(tài)門組成,所有三態(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è),創(chuàng)作于2023年2月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è),創(chuàng)作于2023年2月72采用條件語句的仿真波形采用衛(wèi)式塊的仿真波形采用條件語句的RTL視圖第72頁(yè),課件共195頁(yè),創(chuàng)作于2023年2月733.雙向總線緩沖器gdir功能00a<=b01b<=a1X高阻雙向總線緩沖器真值表第73頁(yè),課件共195頁(yè),創(chuàng)作于2023年2月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è),創(chuàng)作于2023年2月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è),創(chuàng)作于2023年2月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è),創(chuàng)作于2023年2月777.2時(shí)序邏輯電路的VHDL設(shè)計(jì)
時(shí)序電路與組合電路的區(qū)別在于,時(shí)序邏輯電路多了存儲(chǔ)電路部分,需要記錄目前的輸出信號(hào)狀態(tài),用來與輸入信號(hào)一起,共同決定下一次輸出信號(hào)的狀態(tài)。本節(jié)內(nèi)容:時(shí)鐘信號(hào)和復(fù)位信號(hào)觸發(fā)器寄存器計(jì)數(shù)器第77頁(yè),課件共195頁(yè),創(chuàng)作于2023年2月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è),創(chuàng)作于2023年2月791)進(jìn)程的敏感信號(hào)是時(shí)鐘信號(hào)process(clock_signal)isbeginif(clock_edge_condition)thensignal_out<=signal_in;…
其他時(shí)序語句;
…endif;endprocess;時(shí)鐘信號(hào)發(fā)生變化時(shí)啟動(dòng)測(cè)試時(shí)鐘邊沿條件是否滿足,滿足則執(zhí)行時(shí)序電路所對(duì)應(yīng)的語句第79頁(yè),課件共195頁(yè),創(chuàng)作于2023年2月802)進(jìn)程中使用wait語句等待時(shí)鐘processbegin
waituntil(clock_signal)and(clock_edge_condition);signal_out<=signal_in;…
其他時(shí)序語句;…endprocess;等待時(shí)鐘邊沿在程序中要說明是使用時(shí)鐘上升沿還是下降沿;進(jìn)程中的敏感信號(hào)表,只能出現(xiàn)一個(gè)時(shí)鐘;wait語句只能放在進(jìn)程的最前面或最后面。第80頁(yè),課件共195頁(yè),創(chuàng)作于2023年2月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è),創(chuàng)作于2023年2月822.復(fù)位信號(hào)時(shí)序邏輯電路的初始狀態(tài)應(yīng)由復(fù)位信號(hào)來設(shè)置,根據(jù)復(fù)位信號(hào)對(duì)時(shí)序邏輯電路復(fù)位操作的不同,可分為同步復(fù)位和異步復(fù)位。同步復(fù)位:復(fù)位信號(hào)有效,并且在給定的時(shí)鐘邊沿到來時(shí),觸發(fā)器才被復(fù)位。異步復(fù)位:復(fù)位信號(hào)一旦有效,時(shí)序邏輯電路立即回到初始狀態(tài)。第82頁(yè),課件共195頁(yè),創(chuàng)作于2023年2月831)同步復(fù)位同步復(fù)位在以時(shí)鐘為敏感信號(hào)的進(jìn)程中定義,且用if語句來描述復(fù)位條件。形式A:
process(clock_signal)isbeginif(clock_edge_condition)then……endif;endprocess;if(reset_condition)thensignal_out<=reset_value;elsesignal_out<=signal_in;
其他時(shí)序語句;
endif;第83頁(yè),課件共195頁(yè),創(chuàng)作于2023年2月84形式B:processbegin
waituntil(clock_signal)and(clock_edge_condition);if(reset_condition)thensignal_out<=reset_value;elsesignal_out<=signal_in;…
其它時(shí)序語句;
…endif;endprocess;第84頁(yè),課件共195頁(yè),創(chuàng)作于2023年2月852)異步復(fù)位在描述上與同步方式的不同之處:進(jìn)程敏感信號(hào)表中應(yīng)有clk、reset同時(shí)存在;用if語句描述復(fù)位條件;在elsif段描述時(shí)鐘邊沿的條件,并加上event屬性。第85頁(yè),課件共195頁(yè),創(chuàng)作于2023年2月86process(clock_signal,reset_signal)isbegin
if(reset_condition)then
signal_out<=reset_value;
elsif(clock’eventandclock_edge_condition)thensignal_out<=signal_in;…
其他時(shí)序語句;
…endif;endprocess;第86頁(yè),課件共195頁(yè),創(chuàng)作于2023年2月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è),創(chuàng)作于2023年2月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è),創(chuàng)作于2023年2月89使用waituntil語句描述時(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語言描述D鎖存器,輸出受時(shí)鐘電平控制,在高電平期間其輸出跟隨輸入變化。(電平控制)
第89頁(yè),課件共195頁(yè),創(chuàng)作于2023年2月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è),創(chuàng)作于2023年2月913.異步置位/復(fù)位D觸發(fā)器libraryieee;useieee.std_logic_1164.all;entitydff3isport(clk,d,clr,pset
:instd_logic;q:outstd_logic);endentitydff3;architecturertlofdff3isbeginprocess(…)is……endrtl;第91頁(yè),課件共195頁(yè),創(chuàng)作于2023年2月92process(clk,clr,pset)isbeginif語句……endprocess;if(pset='0')thenq<='1';elsif
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 知識(shí)經(jīng)濟(jì)下的知識(shí)產(chǎn)權(quán)保護(hù)趨勢(shì)與挑戰(zhàn)
- 竹子廠合同范本
- 煤礦局部通風(fēng)機(jī)司機(jī)技能理論考試題庫(kù)150題(含答案)
- 招牌維修合同范本
- 2025至2030年中國(guó)腳踏吹風(fēng)式鋸床數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025至2030年中國(guó)肉桃苗數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025年度鮮魚品牌授權(quán)與銷售代理合同
- 二零二五年度智慧城市原始股權(quán)合作合同
- 二零二五年度賬戶變更補(bǔ)充綜合服務(wù)合同
- 二零二五年度健康養(yǎng)生街區(qū)店面房屋租賃及健康管理服務(wù)合同
- 浙教版(2023)六上 第15課 人機(jī)對(duì)話的實(shí)現(xiàn) 教案3
- 開票稅點(diǎn)自動(dòng)計(jì)算器
- 2024年江蘇農(nóng)牧科技職業(yè)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)及參考答案
- 醫(yī)療器械質(zhì)量安全風(fēng)險(xiǎn)會(huì)商管理制度
- 患者轉(zhuǎn)運(yùn)意外應(yīng)急預(yù)案
- 大學(xué)生國(guó)防教育教案第四章現(xiàn)代戰(zhàn)爭(zhēng)
- 人教版初中化學(xué)實(shí)驗(yàn)?zāi)夸?總表)
- AS9100航空航天質(zhì)量管理體系-要求培訓(xùn)教材
- 第2課+古代希臘羅馬【中職專用】《世界歷史》(高教版2023基礎(chǔ)模塊)
- Q-GDW 11711-2017 電網(wǎng)運(yùn)行風(fēng)險(xiǎn)預(yù)警管控工作規(guī)范
- 《桃樹下的小白兔》課件
評(píng)論
0/150
提交評(píng)論