版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、. 多功能數(shù)字鐘的設計與實現(xiàn) 學院名稱: 計算機學院 專業(yè)班級: 通信工程 學生姓名: 學生學號: 指導老師: 曾 宇 2012年6月25日一、 設計任務及要求:(1) 擁有正常的時、分、秒計時功能。(2) 能利用實驗板上的按鍵實現(xiàn)校時、校分及秒清零功能。(3) 能利用實驗板上的揚聲器做整點報時。(4) 鬧鐘功能。(5) 在QUARTUS 中采用層次化設計方法進行設計。(6) 完成全部電路設計后在實驗板上下載,驗證設計課題的正確性。二、 多功能數(shù)字鐘的總體設計方案根據(jù)總體設計框圖,可以將整個系統(tǒng)分成6個模塊來實現(xiàn),分別是計時模塊、校時模塊、整點報時模塊,分頻模塊,動態(tài)顯示模塊,鬧鐘模塊。設計總
2、圖:1. 計時模塊該模塊的設計相對簡單,使用一個二十四進制和兩個六十進制計數(shù)器級聯(lián),構(gòu)成數(shù)字鐘的基本框架。二十四進制的計數(shù)器用于計時,六十進制計數(shù)器用于計分和計秒。只要給秒計數(shù)器一個1Hz的時鐘脈沖,則可以進行正常計時。分計數(shù)器以秒計數(shù)器的進位作為計數(shù)脈沖,小時計數(shù)器以分計數(shù)器的進位作為計數(shù)脈沖。 (24進制計數(shù)器構(gòu)成時計數(shù)器,60進制計數(shù)器構(gòu)成的秒、分計數(shù)器)24進制的仿真圖:60進制的仿真圖以下是計時模塊設計VHDL語言:(1)library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cn
3、t24 isport(clk:in std_logic; ql,qh:out std_logic_vector(3 downto 0); tc:out std_logic);end cnt24;architecture one of cnt24 is begin process(clk) variable iql,iqh:std_logic_vector(3 downto 0); begin if clk'event and clk='1' then iql:=iql+1; if iql="1010" then iqh:=iqh+1; iql:=&q
4、uot;0000" end if; if (iqh="0010")and(iql="0100") then tc<='0' iqh:="0000" iql:="0000" end if; end if; ql<=iql; qh<=iqh; end process; end one; (2)library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cnt60 is port
5、(clk,clr:in std_logic; ql,qh:buffer std_logic_vector(3 downto 0); tc:out std_logic );end cnt60;architecture behavor of cnt60 isbegin tc<='0' when(clk='1' and ql="0000" and qh="0110") else '1' process(clk,clr,ql,qh)variable iql,iqh:std_logic_vector(3 dow
6、nto 0); begin if(clr='0'or (iql="0000" and iqh="0110")then iql:="0000" iqh:="0000" else if(clk'event and clk='1')then iql:=iql+1; if(iql="1010")then iql:="0000" iqh:=qh+1; end if; end if;end if;ql<=iql;qh<=iqh;end
7、process;END behavor;2. 校時模塊該模塊設計要求實現(xiàn)校時、校分及秒清零的功能。 按下校時鍵,小時計數(shù)器迅速遞增以調(diào)至所需要的小時位。 按下校分鍵,分計數(shù)器迅速遞增以調(diào)至所需要的分位。 按下清零鍵,將秒計數(shù)器清零??梢赃x擇實驗板上的3個脈沖按鍵進行鎖定。對于此模塊的設計,有3個需要注意的問題: 在校分時,分計數(shù)器的計數(shù)不應對小時位產(chǎn)生影響。因而需要屏蔽此時分計數(shù)器的進位信號以防止小時計數(shù)器計數(shù)。具體方法是在分計數(shù)器的進位輸出時外加一個組合電路。詳見下圖。 (二路選擇器與計數(shù)器之間連了一個組合電路,以屏蔽進位信號) 按鍵的“抖動”的消除。所謂的“抖動”是指一次按鍵時的彈跳現(xiàn)象,
8、通常實驗板中按鍵所用的開關(guān)為機械性開關(guān),由于機械觸點的彈性作用,按鍵開關(guān)在閉合時并不能馬上接通,而斷開的時候也不能馬上斷開,使得閉合及斷開的瞬間伴隨一系列的電壓抖動,從而導致本來一次按鍵,希望計數(shù)一次,結(jié)果因為抖動計數(shù)多次,且次數(shù)隨機,這樣嚴重影響了時間的校對。消除抖動較為簡單的方法是利用觸發(fā)器,比如可以使用D觸發(fā)器進行消抖。原因在于,D觸發(fā)器邊沿觸發(fā),則在除去時鐘邊沿到來前一瞬間之外的絕大部分時間都不接受輸入,自然消除了抖動。詳見下圖 (加D觸發(fā)器防抖動) 計時采用1Hz的脈沖驅(qū)動計數(shù)器計數(shù),而校對時間時應選用相對高頻率的信號驅(qū)動計數(shù)器以達到快速校對時間的目的。顯然,這兩種計數(shù)脈沖之間需要進
9、行相應的選擇切換。于是將計時和校時模塊合起來的電路實現(xiàn)可以實現(xiàn)(見圖3)。兩種脈沖信號用兩路選擇器進行選擇,選擇條件為是否按鍵。按鍵輸出經(jīng)過了消抖的過程。3整點報時模塊該模塊的功能要求是:計時到59分52秒時,每兩秒一次低音報時,整點時進行高音報時,可以將報時信號接到實驗板上的揚聲器輸出。而以不同頻率的脈沖信號區(qū)分低音和高音報時。進行報時的條件是計數(shù)器計數(shù)至所要求的時間點,因而需要實現(xiàn)一個比較模塊,將分計數(shù)器和秒計數(shù)器的輸出連至比較模塊輸入端完成比較過程。 (整點報時頂層圖)以下是整點報時的比較模塊設計VHDL語言library ieee;use ieee.std_logic_1164.all
10、;use ieee.std_logic_unsigned.all;entity zdbs isport(mh,ml,sh,sl:in std_logic_vector(3 downto 0); sig500,sig1k: out std_logic);end zdbs;architecture behavior of zdbs isbegin sig500<='1' when mh="0101"and ml="1001"and sh="0101"and (sl="0010" or sl=&qu
11、ot;0100" or sl="0110"or sl="1000") -比較,當時間為59分2、4、6、8鈔時,sig500端輸出為高電平。else '0'sig1k<='1' when mh="0000"and ml="0000"and sh="0000"and sl="0000" else '0' -比較,當時間為0分0鈔時,sig1k端輸出為高電平。end behavior;4分頻模塊在本系統(tǒng)中需要用到多種
12、不同頻率的脈沖信號,上至高音報時,下至1Hz的計秒脈沖。所有這些脈沖信號均可以通過一個基準頻率分頻器生成?;鶞暑l率分頻器就是一個進制很大的計數(shù)器,利用計數(shù)器的分頻功能,從不同的輸出位得到所需要的脈沖信號。(分頻模塊頂層圖)以下是分頻模塊設計VHDL語言LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY freq_divider IS PORT(clk : IN STD_LOGIC; hz1 : OUT STD_LOGIC; hz4
13、 : OUT STD_LOGIC; hz64 : OUT STD_LOGIC; hz512 : OUT STD_LOGIC);END freq_divider;ARCHITECTURE rtl OF freq_divider IS SIGNAL count : STD_LOGIC_VECTOR(9 DOWNTO 0);BEGIN PROCESS(clk) BEGIN IF (clk'event and clk='1') THEN IF(count="1111111111") THEN Count <= (OTHERS =>'0
14、39;); ELSE Count <= count +1; END IF ; END IF ; END PROCESS; hz512 <= count(0);-每2個時鐘產(chǎn)生一個時鐘輸出 hz64 <= count(3);-每16個時鐘產(chǎn)生一個時鐘輸出 hz4 <= count(7);-每256個時鐘產(chǎn)生一個時鐘輸出 hz1 <= count(9);-每1024個時鐘產(chǎn)生一個時鐘輸出END rtl;5動態(tài)顯示模塊在動態(tài)方式下,所有的數(shù)碼管對應同一組七段碼,每一個數(shù)碼管由一個選擇段控制點亮或熄滅,如果全部點亮,則都顯示相同的數(shù)字。若要實現(xiàn)6位不同時間的顯示。則需要利
15、用人的視覺缺陷。具體來講,可以在6個不同的時間段分別將每組時間經(jīng)過七段譯碼后輸出到6個數(shù)碼管,當某一組時間的七段碼到達時,只點亮對應位置上的數(shù)碼管,顯示相應的數(shù)字;下一個循環(huán)將相鄰一組時間的七段碼送至數(shù)碼管,同樣只點亮相應位置的數(shù)碼管,6次一個循環(huán),形成一個掃描序列。只要掃描頻率超過人眼的視覺暫留頻率(24Hz),就可以達到點亮單個數(shù)碼管,卻能享有6個同時顯示的視覺效果,人眼辨別不出差別,而且掃描頻率越高,顯示越穩(wěn)定。(動態(tài)顯示模塊頂層圖)以下是動態(tài)顯示模塊設計的VHDL語言LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_
16、UNSIGNED.ALL; ENTITY dtsm is port( clk:in std_logic; h:in std_logic_vector(7 downto 0); m:in std_logic_vector(7 downto 0); s:in std_logic_vector(7 downto 0); seg7out:out std_logic_vector(6 downto 0); sel:buffer std_logic_vector(2 downto 0) );END dtsm;ARCHITECTURE beha of dtsm is signal key:std_logic
17、_vector(3 downto 0); BEGIN PROCESS(clk) variable dount:std_logic_vector(2 downto 0):="000" BEGIN IF(rising_edge(clk)then-開始掃描 IF dount="101" then dount:="000" ELSE dount:=dount+1; END IF; END IF; sel<=dount; end process; PROCESS(sel) BEGIN CASE sel IS-多路選擇代碼 when &qu
18、ot;000"=>key<=h(7 downto 4); when "001"=>key<=h(3 downto 0); when "010"=>key<=m(7 downto 4); when "011"=>key<=m(3 downto 0); when "100"=>key<=s(7 downto 4); when "101"=>key<=s(3 downto 0); when others=>null
19、; END CASE; END PROCESS; PROCESS (key) BEGIN case key is-七段顯示代碼 when"0000"=>seg7out<="0111111" when"0001"=>seg7out<="0000110" when"0010"=>seg7out<="1011011" when"0011"=>seg7out<="1001111" when&quo
20、t;0100"=>seg7out<="1100110" when"0101"=>seg7out<="1101101" when"0110"=>seg7out<="1111101" when"0111"=>seg7out<="0000111" when"1000"=>seg7out<="1111111" when"1001"=&g
21、t;seg7out<="1101111" when"1010"=>seg7out<="1110111" when"1011"=>seg7out<="1111100" when"1100"=>seg7out<="0111001" when"1101"=>seg7out<="1011110" when"1110"=>seg7out<=&
22、quot;1111001" when"1111"=>seg7out<="1110001" when others=>null; END CASE; END PROCESS; END beha;6、鬧鐘模塊(通過24進制計數(shù)器置入時信號,通過60進制計數(shù)器置入分信號)(時鐘鬧鐘信號選擇模塊)以下是時鐘鬧鐘信號選擇模塊設計的VHDL語言:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.
23、all;entity alarmset isport(sel:in std_logic; hclo,mclo,sclo,halr,malr,salr: in std_logic_vector(7 downto 0); h,s,m:out std_logic_vector(7 downto 0);end alarmset;architecture beh of alarmset isbegin process(sel) begin if(sel='0')then h<=hclo; -當sel輸入端為低電平時,把時鐘信號傳遞到輸出端 m<=mclo; s<=scl
24、o; else h<=halr; -當sel輸入端為高電平時,把鬧鐘置入的信號傳遞到輸出端 m<=malr; s<=salr; end if; end process;end beh;(當選擇開關(guān)輸入為低電平時,把時鐘信號傳遞到動態(tài)顯示模塊;當選擇開關(guān)輸入為高電平時,把鬧鐘信號傳遞到動態(tài)顯示模塊。) (比較模塊)以下是比較模塊設計的VHDL語言library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity alarmcmp isport( h,m,halr,malr: in std_logic_vector(7 downto 0); stop:in std_logic; sig:out std_logic); end alarmcmp;a
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版文化藝術(shù)用品采購合同模板3篇
- 二零二五年度房地產(chǎn)投資定金監(jiān)管協(xié)議4篇
- 二零二五年度煤炭運輸節(jié)能減排協(xié)議4篇
- 二零二五版爐渣清潔生產(chǎn)采購技術(shù)服務合同4篇
- 2025年度高壓供電線路維護服務協(xié)議范本3篇
- 2025版?zhèn)€人退股協(xié)議書:上市公司股份回購與股東退出協(xié)議4篇
- 深圳2025年度廠房租賃合同范本2篇
- 二零二五年度建筑安全評估師雇傭合同標準版3篇
- 2025年度個人房產(chǎn)買賣交易糾紛預防協(xié)議4篇
- 2025版手術(shù)協(xié)議書范本匯編:手術(shù)合同規(guī)范化管理與風險防范3篇
- 化學-河南省TOP二十名校2025屆高三調(diào)研考試(三)試題和答案
- 智慧農(nóng)貿(mào)批發(fā)市場平臺規(guī)劃建設方案
- 林下野雞養(yǎng)殖建設項目可行性研究報告
- 2023年水利部黃河水利委員會招聘考試真題
- Python編程基礎(項目式微課版)教案22
- 01J925-1壓型鋼板、夾芯板屋面及墻體建筑構(gòu)造
- 乳腺導管原位癌
- 冷庫管道應急預案
- 《學習教育重要論述》考試復習題庫(共250余題)
- 網(wǎng)易云音樂用戶情感畫像研究
- 小學四年級奧數(shù)題平均數(shù)問題習題及答案
評論
0/150
提交評論