30《文成公主進藏》教學(xué)課件修改版_第1頁
30《文成公主進藏》教學(xué)課件修改版_第2頁
30《文成公主進藏》教學(xué)課件修改版_第3頁
30《文成公主進藏》教學(xué)課件修改版_第4頁
30《文成公主進藏》教學(xué)課件修改版_第5頁
已閱讀5頁,還剩41頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第8章基本邏輯電路設(shè)計實例重點知識點

組合電路的VHDL描述時序電路的VHDL描述常用實用電路模塊設(shè)計

組合電路的VHDL描述組合邏輯電路即任意時刻的輸出僅僅取決于該時

刻的輸入,與電路原來的狀態(tài)無關(guān)。但是在設(shè)計中,我們一般以時鐘的存在與否來區(qū)

分該電路的性質(zhì)。組合邏輯電路不需要時鐘,在

使用VHDL語言時,可以采用進程process語句省略了庫聲明和程序包說明ENTITYmux41aISPORT(a,b,c,d:INBIT;s:INBIT_vector(1downto0);y:OUTBIT);ENDENTITYmux41a;ARCHITECTUREoneOFmux41aISBEGINy<=aWHENs=“00〞ELSEbWHENs=“01〞ELSEcWHENs=“10〞ELSEd;ENDARCHITECTUREone;例11位數(shù)據(jù)寬度的4選1數(shù)據(jù)選擇器省略了庫聲明和程序包說明在結(jié)構(gòu)體中采用并行的WHEN_ELSE語句。ENTITYmux41aISPORT(a,b,c,d:INBIT_vector(7downto0);s:INBIT_vector(1downto0);y:OUTBIT_vector(7downto0));ENDENTITYmux41a;ARCHITECTUREoneOFmux41aISBEGINy<=aWHENs=“00〞ELSEbWHENs=“01〞ELSEcWHENs=“10〞ELSEd;ENDARCHITECTUREone;例28位數(shù)據(jù)寬度的4選1數(shù)據(jù)選擇器在進程中采用IF_THEN_ELSE語句LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYmux81aISPORT(a,b,c,d,e,f,g,h:INBIT_vector(7downto0);s:INBIT_vector(2downto0);y:OUTBIT_vector(7downto0));ENDENTITYmux81a;

接下頁

例38位數(shù)據(jù)寬度的8選1數(shù)據(jù)選擇器

程序包

------------------------------------------------庫ARCHITECTUREoneOFmux81aISBEGINPROCESS(a,b,c,d,e,f,g,h,s)BEGINIFs=“000〞THENy<=a;ELSIFs=“001〞THENy<=b;ELSIFs=“010〞THENy<=c;ELSIFs=“011〞THENy<=d;ELSIFs=“100〞THENy<=e;ELSIFs=“101〞THENy<=f;ELSIFs=“110〞THENy<=g;ELSEy<=h;ENDIF;ENDPROCESS;ENDARCHITECTUREone;進程接上頁XS0S1Y0Y2Y1Y31分4的數(shù)據(jù)分配器例41位數(shù)據(jù)寬度的1分4數(shù)據(jù)分配器數(shù)據(jù)分配器的功能與數(shù)據(jù)選擇器恰好相反,它根據(jù)控制信號S0與S1的不同取值,X端的數(shù)據(jù)將分配到不同的輸出端口輸出。LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYdemux41aISPORT(X:INBIT;

s0,s1:INBIT;y0,y1,y2,y3:OUTBIT);ENDENTITYdemux41a;程序包庫-------實體ARCHITECTUREoneOFdemux41aIS

SIGNALS:BIT_vector(1downto0);BEGIN

S<=S1&S0;Process(s,x)BeginY0<='0';Y1<='0';Y2<='0';Y3<='0';CasesisWHEN"00"=>Y0<=x;WHEN"01"=>Y1<=x;WHEN"10"=>Y2<=x;WHENothers=>Y3<=x;Endcase;Endprocess;ENDARCHITECTUREone;進程1分4的數(shù)據(jù)分配器的RTL圖1分4的數(shù)據(jù)分配器的時序仿真思考和操作題:如果此條語句去掉,RTL圖和仿真如何?ARCHITECTUREoneOFdemux41aISSIGNALS:BIT_vector(1downto0);BEGINS<=S1&S0;Process(s,x)Begin---Y0<='0';Y1<='0';Y2<='0';Y3<='0';CasesisWHEN"00"=>Y0<=x;WHEN"01"=>Y1<=x;WHEN"10"=>Y2<=x;WHENothers=>Y3<=x;Endcase;Endprocess;ENDARCHITECTUREone;數(shù)字系統(tǒng)中的數(shù)據(jù)處理和運算都是采用2進制,所以輸出結(jié)果表達都是16進制的,為了使輸出的16進制數(shù)據(jù)顯示的更加直觀,使人更容易閱讀和理解,需要采用譯碼器將抽象的16進制數(shù)據(jù)轉(zhuǎn)換為易于閱讀的十進制數(shù)據(jù),然后通過數(shù)碼管顯示。因此,本例子介紹7段數(shù)碼顯示譯碼器設(shè)計.7段數(shù)碼是純組合電路,它是將16進制數(shù)表示的BCD碼轉(zhuǎn)換為10進制數(shù),通過數(shù)碼管顯示為0,1,2,3,4,5,6,7,8,9例57段數(shù)碼顯示譯碼器設(shè)計例57段數(shù)碼顯示譯碼器設(shè)計共陰數(shù)碼管及其電路

LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYDECL7SIS

PORT(A:INSTD_LOGIC_VECTOR(3DOWNTO0);LED7S:OUTSTD_LOGIC_VECTOR(6DOWNTO0));END;ARCHITECTUREoneOFDECL7SISBEGINPROCESS(A)BEGINCASEAISWHEN"0000"=>LED7S<="0111111";----0WHEN"0001"=>LED7S<="0000110";----1WHEN"0010"=>LED7S<="1011011";----2WHEN"0011"=>LED7S<="1001111";----3WHEN"0100"=>LED7S<="1100110";----4WHEN"0101"=>LED7S<="1101101";----5WHEN"0110"=>LED7S<="1111101";----6WHEN"0111"=>LED7S<="0000111";----7WHEN"1000"=>LED7S<="1111111";----8WHEN"1001"=>LED7S<="1101111";----9WHENOTHERS=>NULL;ENDCASE;ENDPROCESS;END;例68-3優(yōu)先編碼器設(shè)計編碼器功能與譯碼器相反,是將較多位數(shù)的碼值編成較少位數(shù)的碼值。優(yōu)先編碼器的編碼原那么是按照由高位到低位的原那么,逐次判斷該位是否為有效數(shù)值0或1,假設(shè)為有效數(shù)值0或1,那么按照該位的位置進行編碼,而忽略后續(xù)各位的數(shù)值。8-3優(yōu)先編碼器的編碼原那么是:8個輸入端中的一個輸入如果有效,如本例為0,那么有一個3位二進編碼輸出;假設(shè)同時有多個輸入端輸入為0,那么輸出優(yōu)先級高的那個輸入端所對應(yīng)的編碼。

輸入 輸出din0din1din2din3din4din5din6din7 output0output1output2

xxxxxxx0000 xxxxxx01100 xxxxx011010 xxxx0111110 xxx01111001 xx011111101 x0111111011 01111111111 注:表中的“x”為任意,類似VHDL中的“-”值。8線-3線優(yōu)先編碼器真值表LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYcoderISPORT(din:INSTD_LOGIC_VECTOR(0TO7);output:OUTSTD_LOGIC_VECTOR(0TO2));ENDcoder;ARCHITECTUREbehavOFcoderISBEGINPROCESS(din)BEGIN

IF(din(7)='0')THENoutput<="000";ELSIF(din(6)='0')THENoutput<="100";ELSIF(din(5)='0')THENoutput<="010";ELSIF(din(4)='0')THENoutput<="110";ELSIF(din(3)='0')THENoutput<="001";ELSIF(din(2)='0')THENoutput<="101";ELSIF(din(1)='0')THENoutput<="011";ELSEoutput<="111";ENDIF;ENDPROCESS;ENDbehav;

時序邏輯電路的VHDL描述時序邏輯電路的輸出不但與輸入有關(guān),還和系統(tǒng)

上一個狀態(tài)有關(guān)。時序邏輯電路即電路需要時鐘,在使用VHDL語

言時,必須采用進程process語句。分頻器的設(shè)計分頻器的設(shè)計:有時候根據(jù)需求,需要將周期密的時鐘變?yōu)橹芷谑璧臅r鐘實際上,前面介紹的計數(shù)器在功能上實際也是分頻器,四位計數(shù)器的計數(shù)輸出的最高位信號就是輸入時鐘信號的16分頻,最低位為輸入時鐘的2分頻。對于一些非2的整數(shù)次冪的分頻,如5分頻、6分頻,還需要在根本計數(shù)器電路中加上復(fù)位控制電路entityfenpinisport(clk:instd_logic;--時鐘輸入

dout:outstd_logic);--分頻輸出endfenpin;architecturehavoffenpinissignalqout:std_logic_vector(3downto0);signalf:std_logic;beginprocess(clk)beginif(clk'eventandclk='1')thenif(qout="0011")thenqout<="0000";f<=notf;elseqout<=qout+1;endif;endif;endprocess;dout<=f;endhav;8分頻的程序設(shè)計語句1語句2----8分頻的仿真波形編一個16分頻的程序,并實驗仿真流水燈實驗所謂流水燈,就是讓LED燈的亮滅模擬流水,按照順序使LED燈依次點亮。8個燈依次點亮的流水燈實驗libraryieee;useieee.std_logic_1164.all;use;use;entitylledisport(clk:instd_logic;dout:outstd_logic_vector(7downto0));endlled;architecturehavoflledissignalq:std_logic_vector(7downto0);signald:std_logic_vector(2downto0);beginprocess(clk)beginifclk'eventandclk='1'thend<=d+1;endif;endprocess;withdselectq<="10000000"when"000","01000000"when"001","00100000"when"010","00010000"when"011","00001000"when"100","00000100"when"101","00000010"when"110","00000001"whenothers;dout<=q;endhav;語句1語句2語句3----流水燈仿真編寫一個16個燈依次點亮的流水燈實驗,并仿真數(shù)字鐘的設(shè)計設(shè)計一數(shù)字鐘,具有以下功能:1.具有小時、分鐘、秒計數(shù)顯示功能,以24小時循環(huán)計

時,SECOND模塊為60進制,實現(xiàn)秒計時;MINUTE模塊

為60進制,實現(xiàn)分計時功能;HOUR模塊為24進制,實

現(xiàn)小時計時,整個計數(shù)器具有清零、調(diào)分、調(diào)時功能,而且在接近整點時提供報時信號。2.有驅(qū)動8位七段共陰極數(shù)碼管的片選驅(qū)動信號輸出和七

段碼輸出。在圖中SELTIME模塊產(chǎn)生8位數(shù)碼管的掃描

驅(qū)動信號SEL[2..0]和時鐘顯示數(shù)據(jù)DAOUT[3..0],SEL[2..0]信號經(jīng)過譯碼器后作為數(shù)碼管的位選信號,DELED模塊為7段數(shù)碼管3.分位計數(shù)到59分時,即到整點時,LD1將開始閃爍,并

持續(xù)1分鐘。數(shù)字鐘的設(shè)計74393為雙四位二進制計數(shù)器最后一個74393的Q2B端將輸出時間周期為1秒的脈沖實驗室提供的脈沖信號頻率為4.07MHZ,即該信號的周期為0.0000002457秒16*clk16*16*clk秒脈沖產(chǎn)生模塊秒、分、時模塊Alert整點報時模塊Seltime為小時、分鐘、秒分配相應(yīng)的片選和數(shù)碼管模塊它后面需要接3-8譯碼器,作為8個數(shù)碼管的片選信號它后面需要接數(shù)碼顯示的7段譯碼電路小時分秒清0或復(fù)位DELED為驅(qū)動數(shù)碼管顯示的7段譯碼電路74138為3—8譯碼器ENTITYDFF1ISPORT(D :inBIT;clk:inBIT;Q:outBIT);ENDDFF1;ARCHITECTUREbhvOFDFF1ISSIGNALQ1:STD_LOGIC;BEGIN

PROCESS(CLK,Q1)BEGINIFCLK'EVENTANDCLK='1'THENQ1<=D;ENDIF;ENDPROCESS;Q<=Q1;ENDbhv;D觸發(fā)器的設(shè)計

LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYDFF3ISPORT(CLK,D1:INSTD_LOGIC;Q1:OUTSTD_LOGIC);END;ARCHITECTUREbhvOFDFF3ISSIGNALA:STD_LOGIC;BEGIN

PROCESS(CLK)BEGINIFCLK'EVENTANDCLK='1'THENA<=D1;Q1<=A;ENDIF;ENDPROCESS;END;同步時序電路設(shè)計ARCHITECTUREbhvOFMULTI_DFFISSIGNALQ1,Q2:STD_LOGIC;BEGINPRO1:PROCESS(CLK)BEGINIFCLK'EVENTANDCLK='1'THENQ1<=NOT(Q2ORA);ENDIF;ENDPROCESS;PRO2:PROCESS(Q1)BEGINIFQ1'EVENTANDQ1='1'THENQ2<=D;ENDIF;Q3<=Q2;ENDPROCESS;ENDMULTI_DFF;LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYMULTI_DFFIS

PORT(CLK:INSTD_LOGIC;D1:INSTD_LOGIC;A:INSTD_LOGIC;Q3:OUTSTD_LOGIC);

END;異步時序電路設(shè)計本卷須知一個進程只允許描述對應(yīng)于一個時鐘信號的同步時序邏輯;異步邏輯最好用多個時鐘進程語句來構(gòu)成。JK觸發(fā)器的設(shè)計JK觸發(fā)器是具有兩個輸入端J和K,且當前輸出結(jié)果與前一刻的輸出結(jié)果有關(guān)。libraryieee;useieee.std_logic_1164.all;use;entityJKisport(J,K,clk:instd_logic;Q:outstd_logic);endJK;architectureoneofJKissignalQ1:std_logic;beginprocess(clk)beginifclk'eventandclk='1'thenQ1<=(Jand(notQ1))or((notK)andQ1);endif;endprocess;Q<=Q1;endone;JK觸發(fā)器的VHDL程序JK觸發(fā)器的功能仿真圖含異步清0和同步時鐘使能的4位計數(shù)器設(shè)計一含計

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論