

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> JIANGSU NIVERSITY</p><p><b> 課程設(shè)計報告</b></p><p> 學(xué)院:計算機科學(xué)與通信工程</p><p><b> 班級:網(wǎng)絡(luò)工程</b></p><p><b> 姓名:</b></p>&l
2、t;p><b> 學(xué)號:</b></p><p><b> 指導(dǎo)老師:</b></p><p> 報告日期 :2016年1月15日</p><p> 目 錄</p><p><b> ?、?設(shè)計目的1</b></p><
3、;p><b> Ⅱ.設(shè)計內(nèi)容1</b></p><p><b> ?、?設(shè)計原理1</b></p><p><b> ?、?具體實現(xiàn)2</b></p><p><b> (1)頂層圖2</b></p><p><b> ?。?)
4、代碼2</b></p><p><b> 1.24進(jìn)制:2</b></p><p> 2. 60進(jìn)制:3</p><p><b> 3.動態(tài)顯示:4</b></p><p><b> 4. 分頻器:5</b></p><p>
5、; 5. 二路選擇器:6</p><p><b> 6.整點報時:7</b></p><p><b> 7.鬧鐘設(shè)置:8</b></p><p> 8.alarmcmp:9</p><p><b> 9.消抖:9</b></p><p&g
6、t;<b> ?、?心得體會10</b></p><p><b> ?、?設(shè)計目的</b></p><p> 設(shè)計一個擁有:正常的時分秒計數(shù)功能,實現(xiàn)校時校分清零的功能,利用揚聲器實現(xiàn)整點報時和鬧鐘功能的多功能數(shù)字鐘。</p><p><b> ?、?設(shè)計內(nèi)容</b></p><
7、;p> 整個系統(tǒng)分成七個模塊進(jìn)行:計時模塊、校時模塊、整點報時模塊、分頻模塊、動態(tài)掃描模塊,動態(tài)顯示模塊、鬧鐘模塊。</p><p> l、能進(jìn)行正常的時、分、秒計時功能,分別由6個數(shù)碼顯示24小時、60分鐘的計數(shù)器顯示。</p><p> 2、能利用實驗系統(tǒng)上的按鈕實現(xiàn)“校時”、“校分”功能;</p><p> 3、能利用揚聲器做整點報時:</
8、p><p><b> 4、定時鬧鐘功能</b></p><p> 5、用層次化設(shè)計方法設(shè)計該電路,用硬件描述語言編寫各個功能模塊。</p><p> 6、報時功能。報時功能用功能仿真的仿真驗證,可通過觀察有關(guān)波形確認(rèn)電路設(shè)計是否正確。</p><p><b> ?、?設(shè)計原理</b></p&
9、gt;<p> 1 計時模塊:使用一個二十四進(jìn)制和兩個六十進(jìn)制計數(shù)器級聯(lián),構(gòu)成數(shù)字鐘的基本框架。二十四進(jìn)制用于計時,六十進(jìn)制用于計分和計秒。給秒計數(shù)器一個1hz的時鐘脈沖,分計數(shù)器以秒計數(shù)器的進(jìn)位作為計數(shù)脈沖,時計數(shù)器以分計數(shù)器的進(jìn)位作為計數(shù)脈沖。</p><p> 2 校時模塊:分別按下校時鍵和校分鍵,計數(shù)器增至所需時分?jǐn)?shù),按下清零鍵,秒計數(shù)器歸零。</p><p>
10、 此處注意事項:①按鍵“抖動”消除。利用觸發(fā)器,如D觸發(fā)器,利用D觸發(fā)器邊沿觸發(fā)的特性,在除去時鐘邊沿來之前一瞬間之外的絕大部分時間都不能接受輸入,從而實現(xiàn)“消抖”。②校分時,分計數(shù)器計數(shù)不應(yīng)對小時位產(chǎn)生影響,因而需要屏蔽此時分計數(shù)器的進(jìn)位信號。③需要設(shè)計二路選擇器對于正常計數(shù)以及校時進(jìn)行選擇。</p><p> 3 整點報時模塊:計時到59分50秒,每兩秒一次低音報時,整點進(jìn)行高音報時,將報時信號接到實驗板上
11、的揚聲器輸出。、</p><p> 4 分頻模塊:通過不同進(jìn)制的計數(shù)將1khz的時鐘脈沖分頻出不同頻率的時鐘脈沖,以實現(xiàn)系統(tǒng)對多頻率時鐘信號的需求。</p><p> 5動態(tài)顯示模塊:利用6個數(shù)碼管,將時分秒按照高低位輸出到數(shù)碼管上。其中掃描頻率超過人眼視覺暫留頻率就可以實現(xiàn)六個管同時顯示的視覺效果。</p><p> 6 鬧鐘模塊:需要新的計數(shù)器進(jìn)行定時鬧
12、鐘信號的存儲,與正常計時狀態(tài)實現(xiàn)切換,設(shè)計一個比較模塊使鬧鐘和計時相等時,開始鳴叫,同時需要一個按鍵能夠控制鬧鐘的開關(guān)。</p><p><b> ?、?具體實現(xiàn)</b></p><p><b> (1)頂層圖</b></p><p><b> 圖一:頂層圖</b></p><
13、p><b> (2)代碼</b></p><p><b> 1.24進(jìn)制:</b></p><p> 時計數(shù)器:模塊圖如圖。24進(jìn)制無進(jìn)位計數(shù)器,當(dāng)計數(shù)信號計到23后再檢測到計數(shù)信號時會自動歸零。帶清零,clk輸入為分秒進(jìn)位相與的結(jié)果。qh為十位,ql為個位。</p><p> library ieee;&l
14、t;/p><p> use ieee.std_logic_1164.all;</p><p> use ieee.std_logic_unsigned.all;</p><p> entity cnt24 is</p><p> port(clk:in std_logic;</p><p> qh,ql:out
15、std_logic_vector(3 downto 0);</p><p> tc:out std_logic);</p><p> end cnt24;</p><p> architecture one of cnt24 is</p><p><b> begin</b></p><p&g
16、t; process(clk)</p><p> variable iql,iqh:std_logic_vector(3 downto 0):="0000";</p><p><b> begin</b></p><p> if clk'event and clk='1' then <
17、/p><p> iql:=iql+1;</p><p> if iql="1010" then</p><p> iqh:=iqh+1; </p><p> iql:="0000";</p><p><b> end if;</b></p>
18、<p> if (iqh="0010")and(iql="0100") then</p><p> iqh:="0000"; </p><p> iql:="0000";</p><p> end if; </p><p><
19、;b> end if;</b></p><p> ql<=iql; </p><p><b> qh<=iqh;</b></p><p> end process; </p><p> end one; </p><p>
20、<b> 2. 60進(jìn)制: </b></p><p> 秒計數(shù)器模塊設(shè)計:六十進(jìn)制帶進(jìn)位計數(shù)器,可清零,clk輸入信號為1Hz脈沖,當(dāng)ql計滿9后qh增加1,當(dāng)ql滿9且qh記滿5,ql、qh同時歸零,co輸出為高電平。qh為十位ql為個位。</p><p> library ieee;</p><p> use ieee.std_lo
21、gic_1164.all;</p><p> use ieee.std_logic_unsigned.all;</p><p> entity cnt60 is</p><p> port(clk,clr:in std_logic;</p><p> ql,qh:buffer std_logic_vector(3 downto 0);
22、</p><p> tc:out std_logic</p><p><b> );</b></p><p> end cnt60;</p><p> architecture behavor of cnt60 is</p><p><b> begin</b>&l
23、t;/p><p> tc<='0' when(clk='1' and ql="0000" and qh="0110") else '1';</p><p> process(clk,clr,ql,qh)</p><p> variable iql,iqh:std_logi
24、c_vector(3 downto 0);</p><p><b> begin</b></p><p> if(clr='0'or (iql="0000" and iqh="0110"))then</p><p> iql:="0000";</p>
25、<p> iqh:="0000";</p><p> else if(clk'event and clk='1')then</p><p> iql:=iql+1;</p><p> if(iql="1010")then</p><p> iql:=&quo
26、t;0000";</p><p> iqh:=qh+1;</p><p><b> end if;</b></p><p><b> end if;</b></p><p><b> end if;</b></p><p> ql&l
27、t;=iql;qh<=iqh;</p><p> end process;</p><p> END behavor;</p><p> 分計數(shù)器同上。注:不同之處為分的clk輸入信號為秒的進(jìn)位信號。</p><p><b> 3.動態(tài)顯示:</b></p><p> LIBRAR
28、Y IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p> ENTITY dtsm is</p><p><b> port(</b></p><p>
29、clk:in std_logic;</p><p> h:in std_logic_vector(7 downto 0);</p><p> m:in std_logic_vector(7 downto 0);</p><p> s:in std_logic_vector(7 downto 0);</p><p> seg7out:o
30、ut std_logic_vector(6 downto 0);</p><p> sel:buffer std_logic_vector(2 downto 0)</p><p><b> );</b></p><p><b> END dtsm;</b></p><p> ARCHITEC
31、TURE beha of dtsm is</p><p> signal key:std_logic_vector(3 downto 0);</p><p><b> BEGIN</b></p><p> PROCESS(clk)</p><p> variable dount:std_logic_vector(
32、2 downto 0):="000";</p><p><b> BEGIN</b></p><p> IF(rising_edge(clk))then</p><p> IF dount="111" then</p><p> dount:="000"
33、;</p><p><b> ELSE</b></p><p> dount:=dount+1;</p><p><b> END IF;</b></p><p><b> END IF;</b></p><p> sel<=dount;
34、</p><p> end process;</p><p> PROCESS(sel)</p><p><b> BEGIN</b></p><p> CASE sel IS</p><p> when "000"=>key<=h(7 downto 4)
35、;</p><p> when "001"=>key<=h(3 downto 0);</p><p> when "010"=>key<="1010";</p><p> when "011"=>key<=m(7 downto 4);</p
36、><p> when "100"=>key<=m(3 downto 0);</p><p> when "101"=>key<="1010";</p><p> when "110"=>key<=s(7 downto 4);</p>&
37、lt;p> when "111"=>key<=s(3 downto 0);</p><p> when others=>null;</p><p><b> END CASE;</b></p><p> END PROCESS;</p><p> PROCESS (k
38、ey)</p><p><b> BEGIN</b></p><p> case key is</p><p> when"0000"=>seg7out<="0111111";</p><p> when"0001"=>seg7out&
39、lt;="0000110";</p><p> when"0010"=>seg7out<="1011011";</p><p> when"0011"=>seg7out<="1001111";</p><p> when"010
40、0"=>seg7out<="1100110";</p><p> when"0101"=>seg7out<="1101101";</p><p> when"0110"=>seg7out<="1111101";</p><
41、p> when"0111"=>seg7out<="0000111";</p><p> when"1000"=>seg7out<="1111111";</p><p> when"1001"=>seg7out<="1101111&qu
42、ot;;</p><p> when"1010"=>seg7out<="1000000";</p><p> when others=>null;</p><p><b> END CASE;</b></p><p> END PROCESS;</p
43、><p><b> END beha;</b></p><p><b> 分頻器:</b></p><p> 模塊圖如圖。由四個分頻器構(gòu)成,輸入信號in_clk為1024Hz脈沖信號。把輸入的1024Hz信號分頻為四個脈沖信號,即1Hz的秒脈沖,4Hz的校時、校分脈沖,64Hz的消抖脈沖,以及512Hz的蜂鳴器低音輸入。
44、</p><p><b> ?。?lt;/b></p><p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> USE IEEE.STD_LOGIC_ARITH.ALL;</p><p> USE IEEE.STD_L
45、OGIC_UNSIGNED.ALL;</p><p> ENTITY freq_divider IS</p><p> PORT(clk : IN STD_LOGIC;</p><p> hz1 : OUT STD_LOGIC;</p><p> hz4 : OUT STD_LOGIC;</p><p&
46、gt; hz64 : OUT STD_LOGIC;</p><p> hz512 : OUT STD_LOGIC);</p><p> END freq_divider;</p><p> ARCHITECTURE rtl OF freq_divider IS</p><p> SIGNAL count : STD_LOGIC_
47、VECTOR(9 DOWNTO 0);</p><p><b> BEGIN</b></p><p> PROCESS(clk)</p><p><b> BEGIN</b></p><p> IF (clk'event and clk='1') THEN</p
48、><p> IF(count="1111111111") THEN</p><p> Count <= (OTHERS =>'0');</p><p><b> ELSE</b></p><p> Count <= count +1;</p><
49、;p><b> END IF ;</b></p><p><b> END IF ;</b></p><p> END PROCESS; </p><p> hz512 <= count(0);</p><p> hz64 <= count(3);</p>
50、<p> hz4 <= count(7);</p><p> hz1 <= count(9);</p><p><b> END rtl;</b></p><p><b> 二路選擇器:</b></p><p> 模塊圖如圖。用以進(jìn)行正常計時和校時/分的選擇。ala
51、rm為經(jīng)過消抖的校時/分信號。當(dāng)按鍵未曾按下時,即校時/分信號沒有到來時,二選一選擇器會選擇輸出a(正常計時輸入)信號,否則當(dāng)alarm按鍵按下時輸出y為校時/分輸入信號——4Hz。</p><p> library ieee;</p><p> use ieee.std_logic_1164.all;</p><p> use ieee.std_logic_
52、arith.all;</p><p> use ieee.std_logic_unsigned.all;</p><p> entity sel2 is</p><p> port(sel:in std_logic;</p><p> ip: in std_logic;</p><p> a,b:out st
53、d_logic);</p><p><b> end sel2;</b></p><p> architecture beh of sel2 is</p><p><b> begin</b></p><p> process(sel)</p><p><b&g
54、t; begin</b></p><p> if(sel='0')then a<=ip;</p><p> else b<=ip;</p><p><b> end if;</b></p><p> end process;</p><p><
55、;b> end beh;</b></p><p><b> 6.整點報時:</b></p><p> 整點報時及鬧時:模塊圖如圖在59分52秒、54秒、56秒、58秒給揚聲器賦以低音512Hz信號,在00分00秒給揚聲器賦以高音1024Hz信號,當(dāng)系統(tǒng)時間與鬧鈴時間相同時給揚聲器賦以高音1024Hz信號。鬧時時間為一分鐘。</p>
56、<p> library ieee;</p><p> use ieee.std_logic_1164.all;</p><p> use ieee.std_logic_unsigned.all;</p><p> entity zdbs is</p><p> port(mh,ml,sh,sl:in std_logic
57、_vector(3 downto 0);</p><p> sig500,sig1k: out std_logic</p><p><b> );</b></p><p><b> end zdbs;</b></p><p> architecture behavior of zdbs is
58、</p><p><b> begin </b></p><p> sig500<='1' when mh="0101"and ml="1001"and sh="0101"</p><p> and( sl="0000"or sl=&qu
59、ot;0010" or sl="0100"or sl="0110"or sl="1000") </p><p> else '0';</p><p> sig1k<='1' when mh="0000"and ml="0000"and
60、sh="0000"and sl="0000" </p><p> else '0';</p><p> end behavior;</p><p><b> 7.鬧鐘設(shè)置:</b></p><p> 鬧鐘時間的設(shè)定:模塊圖如圖。由開關(guān)K1選擇鬧鐘和時間。由
61、S1、S2脈沖鍵調(diào)節(jié)時、分。</p><p> library ieee;</p><p> use ieee.std_logic_1164.all;</p><p> use ieee.std_logic_arith.all;</p><p> use ieee.std_logic_unsigned.all;</p>
62、<p> entity alarmset is</p><p> port(sel:in std_logic;</p><p> hclo,mclo,sclo,halr,malr,salr: in std_logic_vector(7 downto 0);</p><p> h,s,m:out std_logic_vector(7 downto 0
63、));</p><p> end alarmset;</p><p> architecture beh of alarmset is</p><p><b> begin</b></p><p> process(sel)</p><p><b> begin</b&g
64、t;</p><p> if(sel='0')then h<=hclo;</p><p><b> m<=mclo;</b></p><p><b> s<=sclo;</b></p><p> else h<=halr;</p><
65、;p><b> m<=malr;</b></p><p> s<="00000000";</p><p><b> end if;</b></p><p> end process;</p><p><b> end beh;</b&g
66、t;</p><p> 8.alarmcmp:</p><p> library ieee;</p><p> use ieee.std_logic_1164.all;</p><p> use ieee.std_logic_arith.all;</p><p> use ieee.std_logic_uns
67、igned.all;</p><p> entity alarmcmp is</p><p> port( h,m,halr,malr: in std_logic_vector(7 downto 0);</p><p> stop:in std_logic;</p><p> sig:out std_logic);
68、 </p><p> end alarmcmp;</p><p> architecture beh of alarmcmp is </p><p><b> begin </b></p><p> process(h,m,halr,malr,stop)</p><p><b>
69、 begin</b></p><p> if stop='0'then </p><p><b> sig<='0';</b></p><p><b> end if;</b></p><p> if h=halr and m=malr a
70、nd stop='1' then </p><p> sig<='1'; </p><p> else sig<='0';</p><p><b> end if;</b></p><p> end process;</p><p&g
71、t;<b> end beh;</b></p><p><b> 9.消抖:</b></p><p> 模塊圖如圖。分頻出的用64Hz信號對s1校時信號、s2校分信號、s3秒清零信號、s4秒清分。是由四個兩級d觸發(fā)器構(gòu)成的,分別對輸入的sa、sb、sc信號的相鄰兩個上升沿進(jìn)行比較以確定按鍵的按下,從而達(dá)到消抖的目的。</p>
72、<p><b> Ⅴ.心得體會</b></p><p> 通過此次課程設(shè)計,使我更加扎實的掌握了有關(guān)數(shù)字邏輯方面的知識,在設(shè)計過程中遇到了一些問題,比如在畫頂層原理圖時,最大的問題就是根本沒有把各個模塊的VHD文件以及生成的器件都全部放在頂層文件的文件夾內(nèi),還有就是程序設(shè)計的時候考慮的不夠全面,沒有聯(lián)系著各個模式以及實驗板的情況來編寫程序,以至于多考慮編寫了譯碼電路而浪費了很多
73、時間。暴露除了我在這方面的知識有所欠缺和經(jīng)驗不足,實踐出真知,通過親自動手制作,使我們掌握的知識不再是紙上談兵。</p><p> 課程設(shè)計誠然是一門專業(yè)課,給我很多專業(yè)知識以及專業(yè)技能上的提升,同時也給我很多新的想法,一些在課上學(xué)習(xí)不到的思路,讓我感觸頗深。通過這次課程設(shè)計,我掌握了關(guān)于數(shù)字鐘方面的有關(guān)知識,可以獨立設(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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)字邏輯課程設(shè)計---數(shù)字時鐘
- 數(shù)字時鐘(數(shù)字邏輯)課程設(shè)計報告
- 數(shù)字時鐘(數(shù)字邏輯)課程設(shè)計報告
- dsp課程設(shè)計數(shù)字時鐘
- 單片機課程設(shè)計數(shù)字時鐘
- 單片機課程設(shè)計數(shù)字時鐘
- 數(shù)字電子課程設(shè)計--數(shù)字時鐘
- 數(shù)字時鐘課程設(shè)計
- 數(shù)字時鐘課程設(shè)計
- 課程設(shè)計--數(shù)字時鐘
- 數(shù)字時鐘課程設(shè)計
- 數(shù)字時鐘課程設(shè)計
- 數(shù)字時鐘課程設(shè)計
- 數(shù)字時鐘課程設(shè)計
- 數(shù)字時鐘課程設(shè)計--數(shù)字時鐘的設(shè)計與制作
- eda數(shù)字時鐘課程設(shè)計
- eda數(shù)字時鐘課程設(shè)計
- 數(shù)字時鐘課程設(shè)計報告
- 數(shù)字時鐘課程設(shè)計論文
- 數(shù)電課程設(shè)計數(shù)字電子時鐘的實現(xiàn)
評論
0/150
提交評論