數(shù)字邏輯電路實驗報告_第1頁
數(shù)字邏輯電路實驗報告_第2頁
數(shù)字邏輯電路實驗報告_第3頁
數(shù)字邏輯電路實驗報告_第4頁
數(shù)字邏輯電路實驗報告_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

-.z.--.--總結(jié)數(shù)字邏輯電路設(shè)計--多功能數(shù)字鐘學(xué)院:計算機(jī)科學(xué)與通信工程專業(yè)::**:指導(dǎo)教師:多功能數(shù)字鐘設(shè)計任務(wù)及要求擁有正常的時、分、秒計時功能。能利用實驗板上的按鍵實現(xiàn)校時、校分及清零功能。能利用實驗板上的揚聲器做整點報時。鬧鐘功能在MA*PLUSII中采用層次化設(shè)計方法進(jìn)展設(shè)計。在完成全部電路設(shè)計后在實驗板上下載,驗證設(shè)計課題的正確性。多功能數(shù)字鐘的總體設(shè)計和頂層原理圖作為根據(jù)總體設(shè)計框圖,可以將整個系統(tǒng)分為六個模塊來實現(xiàn),分別是計時模塊、校時模塊、整點報時模塊、分頻模塊、動態(tài)顯示模塊及鬧鐘模塊。〔1〕計時模塊該模塊使用74LS160構(gòu)成的一個二十四進(jìn)制和兩個六十進(jìn)制計數(shù)器級聯(lián),構(gòu)成數(shù)字鐘的根本框架。二十四進(jìn)制計數(shù)器用于計時,六十進(jìn)制計數(shù)器用于計分和秒。只要給秒計數(shù)器一個1HZ的時鐘脈沖,則可以進(jìn)展正常計時。分計數(shù)器以秒計數(shù)器的進(jìn)位作為計數(shù)脈沖。用兩個74160連成24進(jìn)制的計數(shù)器,原圖及生成的器件如下:注:利用使能端,時鐘信號,清零以及預(yù)置數(shù)功能連成24進(jìn)制。生成的二十四進(jìn)制計數(shù)器注:利用使能端,時鐘信號,清零以及預(yù)置數(shù)功能連成24進(jìn)制。生成的二十四進(jìn)制計數(shù)器用兩個74160連成的60進(jìn)制計數(shù)器,原圖及生成的器件如下:生成的六十進(jìn)制計數(shù)器生成的六十進(jìn)制計數(shù)器〔2〕校時模塊校時模塊設(shè)計要求實現(xiàn)校時,校分以及清零功能。*按下校時鍵,小時計數(shù)器迅速遞增以調(diào)至所需要的小時位。*按下校分鍵,分計數(shù)器迅速遞增以調(diào)至所需要的分位。*按下清零鍵,將秒計數(shù)器清零。考前須知:=1\*GB3①在校分時,分計數(shù)器的計數(shù)不應(yīng)對小時位產(chǎn)生影響,因而需要屏蔽此時分計數(shù)器的進(jìn)位信號以防止小時計數(shù)器計數(shù)。=2\*GB3②利用D觸發(fā)器進(jìn)展按鍵抖動的消除,因為D觸發(fā)器是邊沿觸發(fā),在除去時鐘邊沿到來前一瞬間之外的絕大局部時間都不承受輸入,可以消除抖動。=3\*GB3③計時采用1HZ的脈沖驅(qū)動計數(shù)器計數(shù),而校時則需要較高頻率的信號驅(qū)動以到達(dá)快速校時的目的。因此這兩種脈沖信號就需要兩路選擇器進(jìn)展選擇,條件即為是否按鍵。注:D觸發(fā)器用于按鍵的消抖,接更高的頻率用于校時和校分,二路選擇器用于區(qū)分是正常計時還是校時?!?〕整點報時模塊計時到59分50秒時,每兩秒一次低音報時,整點時進(jìn)展高音報時。以不同頻率的脈沖信號區(qū)分低音和高音報時。報時的條件是計數(shù)器計數(shù)至所需要的時間點,因而需要一個比擬模塊,將分計數(shù)器和秒計數(shù)器的輸出連至比擬模塊輸入端完成比擬過程。注:F1表示計數(shù)器分的高位,F(xiàn)0表示分的低位;M1表示秒的高位,M0表示秒的低位。當(dāng)時間為59分00,02,04,06,08進(jìn)展低音報時,當(dāng)為整點時進(jìn)展高音報時。SIGA為1時低音報時,SIGB為1時高音報時?!?〕分頻模塊在這個系統(tǒng)中需要很多種不同頻率的脈沖信號,這些均可以通過一個基準(zhǔn)頻率分頻器生成。分頻器就是一個進(jìn)制很大的計數(shù)器,利用計數(shù)器的分頻功能,從不同的輸出位得到所需要的脈沖信號。注:由于clk的頻率為1024hz,所以可以定義一個std_logic_vector(9downto0),使它不停地從0000000000加到1111111111然后又返回0000000000,由于最低位在clk脈沖到來時從0變?yōu)?,然后又在下一個脈沖變回0,因此最低位的時鐘周期為clk的時鐘周期的兩倍,它的頻率就為clk頻率確實1/2即512hz。同理,次高位的頻率就為clk頻率的1/2*1/2=1/4,用這種方法就可以得到各種能整除1024的頻率,從而實現(xiàn)分頻。注:由于clk的頻率為1024hz,所以可以定義一個std_logic_vector(9downto0),使它不停地從0000000000加到1111111111然后又返回0000000000,由于最低位在clk脈沖到來時從0變?yōu)?,然后又在下一個脈沖變回0,因此最低位的時鐘周期為clk的時鐘周期的兩倍,它的頻率就為clk頻率確實1/2即512hz。同理,次高位的頻率就為clk頻率的1/2*1/2=1/4,用這種方法就可以得到各種能整除1024的頻率,從而實現(xiàn)分頻。生成的分頻器生成的分頻器動態(tài)顯示模塊在6個不同的時間段分別將每組時間經(jīng)過七段譯碼后輸出到6個數(shù)碼管,當(dāng)*一組時間的七段碼到達(dá)時,只點亮對應(yīng)位置上的數(shù)碼管,顯示相應(yīng)的數(shù)字,6次一個循環(huán),形成一個掃描序列。利用人眼的視覺暫留則可以同步顯示6個數(shù)字。注:CLK為時鐘信號,S為計數(shù)器的小時,F(xiàn)為分,M為秒,SELOUT為六路選擇器,選擇哪個數(shù)碼管工作,SEGOUT為七段譯碼器,使數(shù)碼管顯示數(shù)字。動態(tài)掃描器件動態(tài)掃描器件〔6〕鬧鐘模塊考前須知:=1\*GB3①設(shè)定的鬧鐘的時間應(yīng)使用新的計數(shù)器進(jìn)展存儲,與正常的計時互不干擾。=2\*GB3②與正常計時狀態(tài)的顯示切換??梢栽O(shè)定一個按鍵,用于選擇是將計時時間還是將鬧鐘時間送至動態(tài)顯示模塊。=3\*GB3③應(yīng)實現(xiàn)一個比擬模塊,當(dāng)計時到與鬧鐘時間相等時,則驅(qū)動揚聲器鳴叫。=4\*GB3④鬧鐘響聲應(yīng)限定在一定時間內(nèi),且在這段時間內(nèi)應(yīng)隨時可以通過按鍵取消鬧時狀態(tài)。鬧鐘調(diào)時和分以及正常計時與鬧鐘定時之間的選擇原圖及生成的器件如下:注:輸入端CLK為時鐘信號,SD清零,NAOZHONG是使計數(shù)器正常計時和鬧鐘定時界面的切換,SE調(diào)鬧鐘的小時,SD調(diào)鬧鐘的分,輸出端即為鬧鐘的小時和分。注:輸入端CLK為時鐘信號,SD清零,NAOZHONG是使計數(shù)器正常計時和鬧鐘定時界面的切換,SE調(diào)鬧鐘的小時,SD調(diào)鬧鐘的分,輸出端即為鬧鐘的小時和分。鬧鐘界面和正常計時界面的轉(zhuǎn)換器件如下:注:S表示計時器的時,F(xiàn)表示計時器的分,M表示計數(shù)器的秒;SS表示鬧鐘的時,F(xiàn)F表示鬧鐘的分;Q為計時和鬧鐘兩個界面的切換開關(guān),ABC為輸出的時間。正常計時時間和設(shè)定鬧鐘時間的比擬器件如下:注:S表示正常計時的小時,F(xiàn)表示鬧鐘的分;SS表示鬧鐘的小時,F(xiàn)F表示鬧鐘的分;Q為鬧鐘的開關(guān),D當(dāng)Q為1時,并且正常計時的時間和鬧鐘時間相等時輸出為1,否則為0。三、心得和體會經(jīng)過一個星期對數(shù)字時鐘實踐的制作,從中學(xué)到了很多。首先是對EDA的VHDL語言的更深層次認(rèn)識,本來覺得EDA編程語言比擬麻煩,可是接觸了以后也就覺得它還是有它方便的地方,尤其是和圖形編程結(jié)合的特點。其次,這個實踐其實到目前為止應(yīng)該還不是一個成功的作品,還是有很多的仿真沒有完成,原因可能也是自己的技術(shù)不到位。但是整個制作的過程中,它促進(jìn)了同學(xué)之間的相互溝通,也讓我在自己的專業(yè)知識的學(xué)習(xí)過程中,更多的,更好的學(xué)習(xí)一門知識,用于以后的實踐應(yīng)用中,做這個數(shù)字鐘的設(shè)計中包含了很多不同功能的程序,讓我在其中學(xué)到了一些程序的中的思路,特別一步一步去把錯誤的程序改正確是一種很有成就感的事!這樣讓我學(xué)到了更多的知識!特別是在做數(shù)字時鐘鬧鐘的那個模塊時,我在網(wǎng)上查了好多程序,證實了好多錯誤的程序并從中更改出正確的程序!相信,現(xiàn)在只是一個起步,以后,我會更好的努力,學(xué)習(xí),對EDA孰能生巧。附錄:用VHDL語言寫的六十進(jìn)制計數(shù)器如下:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityt60_06isport(clk:instd_logic;clear:instd_logic;c:outstd_logic;k1,k0:outstd_logic_vector(3downto0));endt60_06;architecturetoft60_06issignalq1,q0:std_logic_vector(3downto0);beginprocess(clk,clear)beginif(clear='1')thenq1<="0000";q0<="0000";c<='0';elseif(clk'eventandclk='1')thenif(q1="0101"andq0="1001")then-----到59q1<="0000";q0<="0000";c<='1';elsif(q1<"0101"andq0="1001")thenq0<="0000";q1<=q1+'1';c<='0';elsif(q0<"1001")thenq0<=q0+'1';endif;endif;endif;k1<=q1;k0<=q0;endprocess;endt;用VHDL語言寫的報時器源代碼如下:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityalert_06isport(f1,f0,m1,m0:instd_logic_vector(3downto0);siga,sigb:outstd_logic);endalert_06;architectureaofalert_06isbeginsiga<='1'when(f1="0101"andf0="1001"andm1="0101"and(m0="0000"orm0="0010"orm0="0100"orm0="0110"orm0="1000"))else'0';sigb<='1'when(f1="0000"andf0="0000"andm1="0000"andm0="0000")else'0';enda;用VHDL語言寫的分頻器的源代碼如下:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityfenpin_06isport(clk:instd_logic; hz512,hz256,hz64,hz4,hz1:outstd_logic);endfenpin_06;architecturefoffenpin_06is signalcc:std_logic_vector(9downto0);begin process(clk) begin if(clk'eventandclk='1')then if(cc="1111111111")then cc<="0000000000"; else cc<=cc+1; endif; endif; endprocess; hz512<=cc(0); hz256<=cc(1); hz64<=cc(3); hz4<=cc(7); hz1<=cc(9);endf;用VHDL語言寫的動態(tài)掃描的源代碼如下:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;entitydisplay_06isport(clk:instd_logic;s:instd_logic_vector(7downto0);f:instd_logic_vector(7downto0);m:instd_logic_vector(7downto0);selout:outstd_logic_vector(5downto0);segout:outstd_logic_vector(6downto0));enddisplay_06;architectureaofdisplay_06issignalnumber:std_logic_vector(3downto0);signalsel:std_logic_vector(5downto0);signalseg:std_logic_vector(6downto0);signalq:std_logic_vector(2downto0);begina:process(clk)beginif(clk'eventandclk='1')thenq<=q+1;endif;endprocessa;process(q)begincaseqiswhen"000"=>sel<="000001";when"001"=>sel<="000010";when"010"=>sel<="000100";when"011"=>sel<="001000";when"100"=>sel<="010000";when"101"=>sel<="100000";whenothers=>sel<="000000";endcase;endprocess;processbeginifsel="000001"thennumber<=m(3downto0);elsifsel="000010"thennumber<=m(7downto4);elsifsel="000100"thennumber<=f(3downto0);elsifsel="001000"thennumber<=f(7downto4);elsifsel="010000"thennumber<=s(3downto0);elsifsel="100000"thennumber<=s(7downto4);elsenumber<="1111";endif;endprocess;process(number)begincasenumberiswhen"0000"=>seg<="0111111";when"0001"=>seg<="0000110";when"0010"=>seg<="1011011";when"0011"=>seg<="1001111";when"0100"=>seg<="1100110";when"0101"=>seg<="1101101";when"0110"=>seg<="1111101";when"0111"=>seg<="0000111";when"1000"=>seg<="1111111";when"1001"=>seg<="1101111";whenothers=>seg<="0000000";endcase;endprocess;selout<=sel;segout<=seg;enda;鬧鐘界面和正常計時界面之間的切換源代碼如下:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityswitch_06isport(s:instd_logic_vector(7downto0);ss:instd_logic_vector(7downto0);f:instd_logic_vector(7downto0);ff:instd_logic_vector(7downto0);m:instd_logic_vector(7downto0);Q:instd_logic;A:outstd_logic_vector(7downto0);B:outstd_logic_vector(7downto0);C:outstd_logic_vector(7downto0));endswitch_06;architectureaofswitch_06isbeginprocess(Q,s,ss,f,ff,m)Begin

溫馨提示

  • 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

提交評論