資源描述:
《verilog hdl—簡(jiǎn)易電子琴設(shè)計(jì)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、湖北文理學(xué)院簡(jiǎn)易電子琴設(shè)計(jì)專業(yè):自動(dòng)化學(xué)號(hào):2012118064姓名:一天虹影實(shí)驗(yàn)?zāi)康氖褂肰erilogHDL語(yǔ)言進(jìn)行前端設(shè)計(jì),并使用Quaruts軟件在GW48-PK2實(shí)驗(yàn)上實(shí)現(xiàn)仿真,實(shí)現(xiàn)硬件電子琴。電子琴要求有8個(gè)音階,使用外部時(shí)鐘信號(hào)3MHz,能同步顯示音階。設(shè)計(jì)要求1、設(shè)計(jì)一個(gè)簡(jiǎn)易電子琴。要求能演奏的音域?yàn)镈調(diào)的do到E調(diào)do。2、用GW48-PK2中的8個(gè)按鍵作為琴鍵。3、GW48-PK2中有蜂鳴器。4、可以使用GW48-PK2上的12MHz作為輸入時(shí)鐘信號(hào)設(shè)計(jì)思路通過可編程邏輯器件(PLD)
2、和VHDL硬件描述語(yǔ)言來(lái)實(shí)現(xiàn)電子琴的基本要求。設(shè)計(jì)的主體是數(shù)控分頻器,對(duì)輸入的頻率按照與每個(gè)音階對(duì)應(yīng)的分頻系數(shù)進(jìn)行分頻,得到各個(gè)音階對(duì)應(yīng)的頻率分別在蜂鳴器和數(shù)碼管上以聲音和頻率數(shù)值的形式作為輸出。設(shè)計(jì)組成與原理下圖為系統(tǒng)的工作原理框圖。分頻置數(shù)按鍵分頻器12MHZ蜂鳴器數(shù)碼管顯示模塊設(shè)計(jì)1.音名與頻率的關(guān)系音樂的12平均率規(guī)定:每2個(gè)八度音(如簡(jiǎn)譜中的中音1與高音1)之間的頻率相差1倍。在2個(gè)八度音之間,又可分為12個(gè)半音。靈位,音符A(簡(jiǎn)譜中的低音6)的頻率為440HZ,音符B到C之間、E到F之間為半
3、音,其余為全音。由此可以計(jì)算出簡(jiǎn)譜中所有的音符的頻率,在這我們只需計(jì)算出中音1到高音1的頻率即可。如下所示:表一簡(jiǎn)譜音名與頻率的對(duì)應(yīng)關(guān)系音名中音1中音2中音3中音4中音4中音6中音7高音1頻率/HZ523.3587.3659.3698.5784880987.81046.5由于各音符對(duì)應(yīng)的頻率多為非整數(shù),而分頻系數(shù)又不能為小數(shù),故必須將計(jì)算得到的分頻數(shù)四舍五入取整。若分頻器時(shí)鐘頻率過低,則由于分頻系數(shù)過小,四舍五入取整后的誤差較大;若時(shí)鐘頻率過高,雖然誤差變小,但分頻數(shù)將變大。實(shí)際的設(shè)計(jì)應(yīng)綜合考慮兩方面的
4、因素,在盡量減少頻率誤差的前提下取合適的時(shí)鐘頻率。本實(shí)驗(yàn)要求用12MHZ的時(shí)鐘脈沖信號(hào),所以不必考慮這方面的因素。實(shí)際上,只要各個(gè)音符間的相對(duì)頻率關(guān)系不變,彈奏出來(lái)的音調(diào)聽起來(lái)是不會(huì)走調(diào)的。1.分頻系數(shù)與初始值(預(yù)置數(shù))本例設(shè)計(jì)的音樂電子琴選取12MHZ的系統(tǒng)時(shí)鐘頻率。在數(shù)控分頻器模塊中,由于數(shù)控分頻器輸出的波形是脈寬極窄的脈沖波,為了更好地驅(qū)動(dòng)揚(yáng)聲器發(fā)生,減少輸出的偶次諧波分量,在到達(dá)揚(yáng)聲器之前需要均衡占空比,從而生成各音符對(duì)應(yīng)頻率的對(duì)稱方波輸出。這個(gè)過程實(shí)際上進(jìn)行了一次二分頻,頻率變?yōu)樵瓉?lái)的二分之一
5、,即6MHZ。因此,分頻系數(shù)的計(jì)算可以按照下面的方法進(jìn)行。以中音1為例,對(duì)應(yīng)的頻率值為523.3HZ,它的分頻系數(shù)應(yīng)該為:Divider=6MHz/523.3=6*106/523.3=11466至于其他音符,同樣由上式求出對(duì)應(yīng)的分頻系數(shù),這樣利用程序可以輕松地得到相應(yīng)的樂聲。各音名對(duì)應(yīng)的分頻系數(shù)如下表:表二各音名對(duì)應(yīng)的分頻系數(shù)音名中音1中音2中音3中音4中音5中音6中音7高音1分頻系數(shù)(divider)1146610216910185907653681860745733由于最大的分頻系數(shù)為11466,故
6、采用14位二進(jìn)制計(jì)數(shù)器已能滿足分頻要求。將分頻系數(shù)設(shè)為0,其初始值為16383(214-1)即可,此時(shí)揚(yáng)聲器不會(huì)發(fā)聲。對(duì)于不同的分頻系數(shù),加載不同的初始值即可。本實(shí)驗(yàn)參考王金明:《VerilogHDL程序設(shè)計(jì)教程》,采用差值法進(jìn)行分頻。把差值作為初始值,為不同音階的發(fā)聲的來(lái)源。各音名對(duì)應(yīng)的初始值如下表:表三各音名對(duì)應(yīng)的初始值音名中音1中音2中音3中音4中音5中音6中音7高音1初始值(origin)49176167728277938730956510309106501.數(shù)控分頻器數(shù)控分頻器是對(duì)基準(zhǔn)頻率進(jìn)行
7、分頻,得到與各個(gè)音階對(duì)應(yīng)的頻率輸出。數(shù)控分頻模塊是由一個(gè)初始值可變的14位加法計(jì)數(shù)器構(gòu)成,該計(jì)數(shù)器的模為214=16384,當(dāng)計(jì)數(shù)器記滿時(shí),產(chǎn)生一個(gè)進(jìn)位信號(hào),該信號(hào)就是用作發(fā)音的頻率信號(hào)。其分為預(yù)分頻和脈沖展寬兩部分。a)預(yù)分頻assignpreclk=(divider==16383)?1:0;always@(posedgeclk)beginif(preclk)divider=origin;elsedivider=divider+1;endb)脈沖展寬(二分頻)always@(posedgepreclk
8、)beginspeaker=~speaker;目的是將預(yù)分頻產(chǎn)生的占空比很小的波形進(jìn)行拓寬,使得波形有足夠長(zhǎng)的高電平來(lái)驅(qū)動(dòng)揚(yáng)聲器。實(shí)驗(yàn)仿真(一)測(cè)試使用的儀器與軟件儀器康芯GW48系列EDA設(shè)備-----GW48-PK2實(shí)驗(yàn)電路圖和適用范圍:本實(shí)驗(yàn)適用模式3,其結(jié)構(gòu)圖如下1.Altera公司的Cyclone系列的EP2C5T144C8芯片2.康芯教學(xué)實(shí)驗(yàn)箱軟件QuartusIIQuartusII是Altera公司的綜合性PLD開發(fā)軟件,支持