VGA蜂鳴器秒表設(shè)計
一、設(shè)計簡要概況:
本設(shè)計基于手機上的數(shù)字秒表進行設(shè)計,結(jié)合VGA顯示,蜂鳴器的使用以及開發(fā)板的相關(guān)基礎(chǔ)知識可以實現(xiàn)計時和倒計時兩種功能。通過參考學(xué)習(xí)指導(dǎo)書上的簡要代碼,自我設(shè)計編寫數(shù)字秒表的所有核心代碼并下板驗證其功能。數(shù)字秒表的設(shè)計靈感源于生活,使設(shè)計者更為清楚地了解到數(shù)字系統(tǒng)設(shè)計的相關(guān)過程,掌握一定的設(shè)計能力,為今后的學(xué)習(xí)實踐奠定堅實的基礎(chǔ)。
?
二、設(shè)計功能介紹:
(1)?計時功能
l?計時與暫停:將rst_n置1,xuanze置1,進入計時功能狀態(tài),將play2置1,秒表開始計時,計時最大范圍可達到59分59秒,當(dāng)play置0時,即時停止,系統(tǒng)維持當(dāng)前停止時刻的時間保持不變。
l?記錄與保存:在計時的過程中,通過按按鈕讓record在短時間內(nèi)置1,可記錄計時過程中的三個時刻,如果按按鈕的次數(shù)大于三次,從第四次開始將會覆蓋之前保存過的時刻數(shù)據(jù)。通過將[2:0]check所代表的開發(fā)板最左邊三個開關(guān)分別置1,可以查看之前保存的時刻數(shù)據(jù),優(yōu)先級為check[2]>check[1]>check[0]。
l?時間顯示:將rst_n2置1,計時功能可以通過七段數(shù)碼管來顯示時間,左邊兩個用于顯示分鐘,右邊兩個用于顯示秒數(shù),當(dāng)計時停止時(play=0),七段數(shù)碼管保持當(dāng)前時刻的秒數(shù)保持不變。
(2)?倒計時功能
l?倒計時與暫停:將rst_n置1,xuanze置0,進入倒計時功能狀態(tài),系統(tǒng)規(guī)定倒計時時長為1分鐘,將play置1,秒表開始計倒時,將play置0,秒表停止在當(dāng)前時刻,可通過系統(tǒng)設(shè)計規(guī)定不同的倒計時時長。
l?鬧鈴歌曲:當(dāng)計時結(jié)束時,開發(fā)板會通過蜂鳴器自動循環(huán)播放《天空之城》,作為鬧鐘的提示音提醒時間已到,通過將rst_n置0,停止播放,并讓計時器恢復(fù)到起始狀態(tài)。
l?時間顯示:將rst_n2置1,計時功能可以通過七段數(shù)碼管和VGA顯示屏分別顯示時間,左邊兩個七段顯示管用于顯示分鐘,右邊兩個用于顯示秒數(shù),當(dāng)?shù)接嫊r結(jié)束時VGA顯示屏上的數(shù)字自動消失,開發(fā)板最左邊的LED會亮起。
?
三、設(shè)計原理
(1)?VGA顯示原理
1.?VGA的概念
VGA的英文全稱是Video?Graphic Array,即顯示繪圖陣列。VGA 支持640X480的較高分辨率下同時顯示16種色彩或256 種灰度,同時在320X240?分辨率下可以同時顯示256 種顏色。肉眼對顏色的敏感遠大于分辨率,所以即使分辨率較低圖像依然生動鮮明。VGA?由于良好的性能迅速開始流行,廠商們紛紛在VGA 基礎(chǔ)上加以擴充,如將顯存提高至1M 并使其支持更高分辨率800*600或1024?*768,這些擴充的模式就稱之為VESA的Super VGA 模式,簡稱SVGA,現(xiàn)在的顯卡和顯示器都支持SVGA 模式。不管是VGA 還是SVGA,使用的連線都是15針的梯形插頭,傳輸模擬信號。
2.?VGA的接口信號
目前大多數(shù)計算機與外部顯示設(shè)備之間都是通過模擬VGA 接口連接,計算機內(nèi)部以數(shù)字方式生成的顯示圖像信息,被顯卡中的數(shù)字/模擬轉(zhuǎn)換器轉(zhuǎn)變?yōu)?/span>R、G、B三原色信號和行、場同步信號,信號通過電纜傳輸?shù)斤@示設(shè)備中。本例中,VGA 接口是標(biāo)準(zhǔn)的15針接口,有五個接口信號,如下表。

?
3.行同步和場同步
為了實現(xiàn)發(fā)送端與接受端圖像各點一一正確對應(yīng),發(fā)送端與接收端的掃描必須同步。同步脈沖是周期穩(wěn)定,邊沿陡峭的脈沖。按我國電視標(biāo)準(zhǔn),行同步脈沖的頻率等于行頻為15.625KHZ,行周期為64us。在電視技術(shù)中常以64us 作為時間單位,并以H 表示,即1H=64us。場同步脈沖頻率等于場頻為50HZ, 場周期為20ms,即312.5H。行同步脈沖寬度為4.7us 左右,場同步脈沖寬度為2.5~3H。
(2)蜂鳴器發(fā)聲原理
1、音調(diào)的控制
頻率的高低決定音調(diào)的高低。簡譜中從低音1 到高音1 的每個音名對應(yīng)的頻率如下表所示。

考慮到如果基頻過低,則由于分頻比太小,造成四舍五入后誤差較大;如果基頻過高,雖然誤差減小了,但是分頻數(shù)變大。綜合以上兩個因素,選擇5MHz 作為基頻。由于實驗板上沒有5MHz 的時鐘頻率,所以必須先分頻。
為了減小輸出的偶次諧波分量,輸出到揚聲器的波形應(yīng)為對稱方波,因此在揚聲器前要加一個二分頻。表中給出了各音階頻率時計數(shù)器不同的預(yù)置數(shù)。采用加載預(yù)置數(shù)實現(xiàn)分頻的方法比采用反饋復(fù)零法節(jié)約資源,實現(xiàn)起來也容易些。對于樂曲中的休止符,只要令分頻系數(shù)設(shè)為0,即初始值為2e14-1=16383 即可,此時揚聲器將不會發(fā)出聲。
?
2.音長的控制
音符的持續(xù)時間須根據(jù)樂曲的速度及每個音符的節(jié)拍數(shù)來確定。
本例演奏的梁祝片段,最短的音符為四分音符,如果將全音符的持續(xù)時間設(shè)為1s 的話,則只需要再提供一個4Hz的時鐘頻率即可產(chǎn)生四分音符的時長。
演奏電路的原理圖如下圖所示:

4.參考代碼功能驗證波形圖

四、設(shè)計架構(gòu)
設(shè)計整體架構(gòu)
l?頂層模塊(two_function_stopwatch)
l?計時和記錄功能模塊(time_counter_record)
n?邊沿檢測器(posedge_detection)
n?計時模塊(time_counter)
l?蜂鳴器模塊(fengmingqi)
l?VGA模塊(vga2)
l?倒計時模塊(time_countdown)
l?動態(tài)掃描分頻模塊(fenpin2)
l?時鐘1Hz分頻模塊(fenpin_1HZ)
l?動態(tài)掃描模塊(saomiao_xuanze)
l?七段數(shù)碼管模塊(seg_dec)
六、實驗結(jié)果分析
本次實驗經(jīng)過驗證符合預(yù)期結(jié)果。
計時可以隨時停止,并最多保存記錄三個計時過程中的時刻。倒計時過程中,VGA顯示屏顯示數(shù)字,可以隨時停止,倒計時結(jié)束后可以通過蜂鳴器演奏《天空之城》模仿顯示生活中的鬧鐘。
?
七、實驗心得
?????在設(shè)計數(shù)字系統(tǒng)的過程中會遇到諸多問題,比如在一開始時VGA顯示屏無法顯示,通過debug的過程中發(fā)現(xiàn)是劃分區(qū)域的問題,顯示過后發(fā)現(xiàn)位置不太準(zhǔn)確,又經(jīng)過了幾次調(diào)試后才最終成果。不過,通過驗證——修改——驗證這一看似重復(fù)的過程,個人的實力水平和對知識的透徹程度都有大幅度的提升。在做蜂鳴器的時候,當(dāng)自己聽到美妙的歌曲時,心中不由自主地長生一種成就感和興奮感。同時,通過數(shù)字系統(tǒng)的設(shè)計,我對整個過程有了較為全面的了解,也為今后的學(xué)習(xí)和實踐打下了堅實的基礎(chǔ)。