數(shù)字邏輯課程設(shè)計(jì)_第1頁
數(shù)字邏輯課程設(shè)計(jì)_第2頁
數(shù)字邏輯課程設(shè)計(jì)_第3頁
數(shù)字邏輯課程設(shè)計(jì)_第4頁
數(shù)字邏輯課程設(shè)計(jì)_第5頁
已閱讀5頁,還剩6頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

數(shù)字邏輯課程設(shè)計(jì)學(xué)院班級(jí)姓名學(xué)號(hào)指導(dǎo)老師完成日期2013年7月11日

數(shù)字邏輯課程設(shè)計(jì)設(shè)計(jì)目的學(xué)會(huì)應(yīng)用數(shù)字系統(tǒng)設(shè)計(jì)方法進(jìn)行電路設(shè)計(jì);進(jìn)一步提高QUARTUSII軟件的開發(fā)應(yīng)用能力;提高VHDL進(jìn)行綜合設(shè)計(jì)的能力;培養(yǎng)學(xué)生書寫綜合實(shí)驗(yàn)報(bào)告的能力。設(shè)計(jì)任務(wù)及要求擁有正常的時(shí)、分、秒計(jì)時(shí)功能。能利用實(shí)驗(yàn)板上的按鍵實(shí)現(xiàn)時(shí)間校對(duì)功能。利用揚(yáng)聲器實(shí)現(xiàn)整點(diǎn)報(bào)時(shí)功能,。鬧鐘功能〔選做〕。計(jì)時(shí)、校時(shí)及鬧鐘設(shè)定的正常顯示。在QuartusⅡ環(huán)境下,使用VHDL語言編程并畫出電路圖完成層次化設(shè)計(jì)過程,仿真重要的功能模塊并鎖定管腳。將設(shè)計(jì)結(jié)果下載到實(shí)驗(yàn)板上驗(yàn)證設(shè)計(jì)課題的正確性。三、設(shè)計(jì)思路〔各模塊設(shè)計(jì)方法、仿真波形截圖及解釋、程序段分析〕3.1計(jì)時(shí)模塊計(jì)小時(shí):24進(jìn)制計(jì)數(shù)器;計(jì)分,計(jì)秒:60進(jìn)制計(jì)數(shù)器。計(jì)時(shí)間過程:計(jì)秒:1hz技術(shù)脈沖,0~59循環(huán)計(jì)數(shù),計(jì)數(shù)至59時(shí)產(chǎn)生進(jìn)位信號(hào);計(jì)分:以秒計(jì)數(shù)器進(jìn)位信號(hào)作為計(jì)分計(jì)數(shù)脈沖,0~59循環(huán)計(jì)數(shù),計(jì)數(shù)至59時(shí)產(chǎn)生進(jìn)位信號(hào);計(jì)時(shí):以計(jì)分計(jì)數(shù)器進(jìn)位信號(hào)作為計(jì)時(shí)計(jì)數(shù)脈沖,0~23循環(huán)計(jì)數(shù),計(jì)數(shù)至23時(shí)清0。源程序24進(jìn)制--封多多4111109009libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitycnt24isport(clk:instd_logic;ql,qh:outstd_logic_vector(3downto0);tc:outstd_logic);endcnt24;architectureoneofcnt24isbeginprocess(clk)variableqli,qhi:std_logic_vector(3downto0);beginifclk'eventandclk='1'thenqli:=qli+1;tc<='0';ifqli="1010"thenqhi:=qhi+1;qli:="0000";endif;if(qhi="0010")and(qli="0100")thentc<='1';qhi:="0000";qli:="0000";endif;endif;ql<=qli;qh<=qhi;endprocess;endone;60進(jìn)制--封多多4111109009libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitycnt60isport(clk,clr:instd_logic;qh,ql:outstd_logic_vector(3downto0);tc:outstd_logic);endcnt60;architectureoneofcnt60isbeginprocess(clk,clr)variablech,cl:std_logic_vector(3downto0);variablec:std_logic;beginifclr='0'thench:="0000";cl:="0000";elsifclk'eventandclk='1'thenifch="0101"andcl="1001"thench:="0000";cl:="0000";c:='1';elsifcl<"1001"thencl:=cl+1;c:='0';elsifcl="1001"thencl:="0000";ch:=ch+1;c:='0';endif;endif;tc<=c;qh<=ch;ql<=cl;endprocess;endone;生成器件24進(jìn)制計(jì)數(shù)器60進(jìn)制計(jì)數(shù)器3.2校對(duì)模塊設(shè)計(jì)原理24進(jìn)制計(jì)數(shù)器24進(jìn)制計(jì)數(shù)器60進(jìn)制計(jì)數(shù)器60進(jìn)制計(jì)數(shù)器2MUX2MUX1HZ消抖消抖高頻計(jì)數(shù)脈沖校時(shí)校時(shí)分頻計(jì)時(shí)和校對(duì)模塊原理圖校時(shí)模塊設(shè)計(jì)要求實(shí)現(xiàn)較時(shí)、較分以及較秒清零的功能。①按下校時(shí)鍵,小時(shí)計(jì)數(shù)器迅速遞增以調(diào)至所需要的小時(shí)位。②按下校分鍵,分計(jì)數(shù)器迅速遞增以調(diào)至所需要的分位。③按下清零鍵,將秒計(jì)數(shù)器清零。對(duì)于此模塊的設(shè)計(jì),有三個(gè)需要注意的問題:①在校分時(shí),分計(jì)數(shù)器的計(jì)數(shù)不應(yīng)對(duì)小時(shí)位產(chǎn)生影響,因而需要屏蔽此時(shí)分計(jì)數(shù)器的進(jìn)位信號(hào)以防止小時(shí)計(jì)數(shù)器計(jì)數(shù)。②按鍵“抖動(dòng)”消除。所謂的“抖動(dòng)”是指一次按鍵時(shí)的彈跳現(xiàn)象,通常實(shí)驗(yàn)板中按鍵所用的開關(guān)為機(jī)械彈性開關(guān),由于機(jī)械觸點(diǎn)的彈性作用,按鍵開關(guān)在閉合時(shí)不能馬上接通,而斷開時(shí)也不能馬上斷開,使得閉合或斷開的瞬間伴隨一系列抖動(dòng),從而導(dǎo)致本來一次按鍵,卻出現(xiàn)很屢次。這樣嚴(yán)重影響時(shí)間校對(duì)準(zhǔn)確性。消除抖動(dòng)方法是D觸發(fā)器和同步按鍵脈沖。③校對(duì)時(shí)間時(shí)為使小時(shí)和分計(jì)數(shù)器迅速遞增,應(yīng)將一個(gè)相對(duì)高頻的計(jì)數(shù)脈沖信號(hào)輸入到計(jì)數(shù)器時(shí)鐘端,這就需要在正常計(jì)時(shí)的脈沖信號(hào)和時(shí)間校對(duì)的高頻脈沖信號(hào)之間進(jìn)行切換,實(shí)現(xiàn)方案:將校時(shí)、較分按鍵連接至二路選擇器的地址端,選擇器的數(shù)據(jù)輸入端那么連接正常的計(jì)時(shí)信號(hào)和高頻校時(shí)信號(hào)。二路選擇器源程序--封多多4111109035libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitycnt60isport(clk,clr:instd_logic;qh,ql:outstd_logic_vector(3downto0);tc:outstd_logic);endcnt60;architectureoneofcnt60isbeginprocess(clk,clr)variablech,cl:std_logic_vector(3downto0);variablec:std_logic;beginifclr='0'thench:="0000";cl:="0000";elsifclk'eventandclk='1'thenifch="0101"andcl="1001"thench:="0000";cl:="0000";c:='1';elsifcl<"1001"thencl:=cl+1;c:='0';elsifcl="1001"thencl:="0000";ch:=ch+1;c:='0';endif;endif;tc<=c;qh<=ch;ql<=cl;endprocess;endone;libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitymux2isport(A,B:instd_logic;S:instd_logic;Y:outstd_logic);endmux2;architecturetwoofmux2isbeginprocess(A,B,S)beginifS='0'thenY<=A;elseY<=B;endif;endprocess;endtwo;生成器件二路選擇器3.3整點(diǎn)報(bào)時(shí)模塊設(shè)計(jì)原理該功能要求是:計(jì)時(shí)到59分50秒是,每兩秒一次低聲報(bào)時(shí),整點(diǎn)時(shí)進(jìn)行高音報(bào)時(shí),可以將報(bào)時(shí)信號(hào)接到實(shí)驗(yàn)板上的揚(yáng)聲器輸出。而以不同頻率的脈沖信號(hào)區(qū)分上下音和高音報(bào)時(shí)。比方可用500hz信號(hào)進(jìn)行低音報(bào)時(shí)信號(hào),1khz信號(hào)作為高音報(bào)時(shí)信號(hào)。進(jìn)行報(bào)時(shí)的條件是計(jì)數(shù)器計(jì)數(shù)至要求的時(shí)間點(diǎn),因而需要實(shí)現(xiàn)一個(gè)比擬模塊,將分計(jì)數(shù)器和秒計(jì)數(shù)器的輸出連至比擬模塊輸入端完成比擬過程。源程序--封多多4111109035libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityzdbsisport(mh,ml,sh,sl:instd_logic_vector(3downto0);sig500,sig1k:outstd_logic);endzdbs;architecturebehaviorofzdbsisbeginsig500<='1'whenmh="0101"andml="1001"andsh="0101"and(sl="0010"orsl="0100"orsl="0110"orsl="1000")else'0';sig1k<='1'whenmh="0000"andml="0000"andsh="0000"andsl="0000"else'0';endbehavior;設(shè)計(jì)仿真及生成器件整點(diǎn)報(bào)時(shí)3.4分頻模塊設(shè)計(jì)原理在本系統(tǒng)中需要用到多種不同頻率的脈沖信號(hào),上至高音報(bào)時(shí)信號(hào),下至1hz的計(jì)秒脈沖。所有這些脈沖信號(hào)均可以通過一個(gè)基準(zhǔn)頻率分頻器生成?;鶞?zhǔn)頻率分頻器就是一個(gè)進(jìn)制很大的計(jì)數(shù)器,利用計(jì)數(shù)器的分頻功能,從不同的輸出位得到所需要的脈沖信號(hào)。源程序--封多多4111109035LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYfreq_dividerISPORT(clk:INSTD_LOGIC;hz1:OUTSTD_LOGIC;hz4:OUTSTD_LOGIC;hz64:OUTSTD_LOGIC;hz512:OUTSTD_LOGIC);ENDfreq_divider;ARCHITECTURErtlOFfreq_dividerISSIGNALcount:STD_LOGIC_VECTOR(9DOWNTO0);BEGINPROCESS(clk)BEGINIF(clk'eventandclk='1')THENIF(count="1111111111")THENCount<=(OTHERS=>'0');ELSECount<=count+1;ENDIF;ENDIF;ENDPROCESS;hz512<=count(0);hz64<=count(3);hz4<=count(7);hz1<=count(9);ENDrtl;生成的器件3.5動(dòng)態(tài)顯示模塊設(shè)計(jì)原理時(shí)間的顯示需要用到6個(gè)數(shù)碼管,如果實(shí)驗(yàn)板上可用的靜態(tài)顯示數(shù)碼管有6個(gè)或以上那么很容易顯示,只需要將小時(shí)高位到秒低位共6組輸出順序鎖定到6個(gè)數(shù)碼管上即可。但如果資源缺乏,那么無法完整顯示6位時(shí)間。在這種情況下,需要采用動(dòng)態(tài)掃描的方式實(shí)現(xiàn)時(shí)間顯示。在動(dòng)態(tài)方式下,所有的數(shù)碼管對(duì)應(yīng)同一組七段碼,每一個(gè)數(shù)碼管有一個(gè)選擇端控制點(diǎn)亮或熄滅,如果全部點(diǎn)亮,那么都顯示同樣的數(shù)字。假設(shè)要實(shí)現(xiàn)6位不同時(shí)間的顯示,那么需要利用人的視覺缺陷。可以將6個(gè)不同時(shí)間段分別將每組時(shí)間經(jīng)過七段碼后輸出六個(gè)數(shù)碼管,當(dāng)某一組時(shí)間的七段碼到達(dá)時(shí),只點(diǎn)亮對(duì)應(yīng)位置上的數(shù)碼管,顯示相應(yīng)的數(shù)字;下一個(gè)循環(huán)將另一組時(shí)間的七段碼送至數(shù)碼管,同樣點(diǎn)亮相應(yīng)的數(shù)碼管,6次一循環(huán),形成以掃描序列。源程序--封多多4111109035LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYdtsmisport(clk:instd_logic;h:instd_logic_vector(7downto0);m:instd_logic_vector(7downto0);s:instd_logic_vector(7downto0);seg7out:outstd_logic_vector(6downto0);sel:bufferstd_logic_vector(2downto0));ENDdtsm;ARCHITECTUREbehaofdtsmissignalkey:std_logic_vector(3downto0);BEGINPROCESS(clk)variabledount:std_logic_vector(2downto0):="000";BEGINIF(rising_edge(clk))thenIFdount="101"thendount:="000";ELSEdount:=dount+1;ENDIF;ENDIF;sel<=dount;endprocess;PROCESS(sel)BEGINCASEselISwhen"000"=>key<=h(7downto4);when"001"=>key<=h(3downto0);when"010"=>key<=m(7downto4);when"011"=>key<=m(3downto0);when"100"=>key<=s(7downto4);when"101"=>key<=s(3downto0);whenothers=>null;ENDCASE;ENDPROCESS;PROCESS(key)BEGINcasekeyiswhen"0000"=>seg7out<="0111111";when"0001"=>seg7out<="0000110";when"0010"=>seg7out<="1011011";when"0011"=>seg7out<="1001111";when"0100"=>seg7out<="1100110";when"0101"=>seg7out<="1101101";when"0110"=>seg7out<="1111101";when"0111"=>seg7out<="0000111";when"1000"=>seg7out<="1111111";when"1001"=>seg7out<="1101111";when"1010"=>seg7out<="1110111";when"1011"=>seg7out<="1111100";when"1100"=>seg7out<="0111001";when"1101"=>seg7out<="1011110";when"1110"=>seg7out<="1111001";when"1111"=>seg7out<="1110001";whenothers=>null;ENDCASE;ENDPROCESS;ENDbeha;生成的器件3.6鬧鐘模塊〔選做〕設(shè)置的鬧時(shí)模塊需要注意一下幾點(diǎn):1、設(shè)定的鬧鐘的時(shí)間應(yīng)使用新的計(jì)數(shù)器進(jìn)行存儲(chǔ),與正常的計(jì)時(shí)互不干擾。2、與正常計(jì)時(shí)狀態(tài)的顯示切換。可以設(shè)定一個(gè)按鍵,用于選擇是將計(jì)時(shí)時(shí)間還是將鬧鐘時(shí)間狀態(tài)送到動(dòng)態(tài)顯示模塊。3、應(yīng)實(shí)現(xiàn)一個(gè)比擬模塊,當(dāng)計(jì)時(shí)到與鬧鐘相等時(shí),那么驅(qū)動(dòng)揚(yáng)聲器鳴叫。4、鬧鐘響聲應(yīng)限定在一定時(shí)間內(nèi),比方一分鐘,且在這段時(shí)間內(nèi)應(yīng)隨時(shí)可以通過按鍵取消鬧時(shí)狀態(tài)〔揚(yáng)聲器停止鳴叫〕。源程序--封多多4111109035libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityalarm1isport(clr,hclk,mclk,mode,stop:instd_logic;hclo,mclo,sclo:instd_logic_vector(7downto0);h,m,s:outstd_logic_vector(7downto0);sig:outstd_logic);endalarm1;architecturebehofalarm1issignalhalr,malr,salr:std_logic_vector(7downto0);signaltc,sclk:std_logic;COMPONENTcnt60PORT(clk:instd_logic;clr:instd_logic;ql:bufferstd_logic_vector(3downto0);qh:bufferstd_logic_vector(3downto0);tc:outstd_logic);ENDCOMPONENT;componentcnt24port(clk:instd_logic;ql:bufferstd_logic_vector(3downto0);qh:bufferstd_logic_vector(3downto0);tc:outstd_logic);endcomponent;beginhours:cnt24portmap(clk=>hclk,ql=>halr(3downto0),qh=>halr(7downto4),tc=>tc);minutes:cnt60portmap(clk=>mclk,clr=>clr,ql=>malr(3downto0),qh=>malr(7downto4),tc=>tc);seconds:cnt60portmap(clk=>sclk,clr=>clr,ql=>salr(3downt

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論