基于EDA的簡易電子琴設(shè)計(jì) 鮑亞文_第1頁
基于EDA的簡易電子琴設(shè)計(jì) 鮑亞文_第2頁
基于EDA的簡易電子琴設(shè)計(jì) 鮑亞文_第3頁
基于EDA的簡易電子琴設(shè)計(jì) 鮑亞文_第4頁
基于EDA的簡易電子琴設(shè)計(jì) 鮑亞文_第5頁
已閱讀5頁,還剩9頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、基于EDA的簡易電子琴設(shè)計(jì)鮑亞文(安慶師范大學(xué)物理與電氣工程學(xué)院 安徽 安慶 )指導(dǎo)老師:鄭江云摘要:本設(shè)計(jì)是一個(gè)簡易的七音符電子琴,該電子琴可以通過按鍵輸入來控制音調(diào),也可對預(yù)置樂曲的自動(dòng)演奏,同時(shí)由數(shù)碼管顯示即時(shí)音符。系統(tǒng)的實(shí)現(xiàn)是基于EDA技術(shù),在Quartus軟件平臺(tái)上,借助FPGA目標(biāo)器件,用硬件描述語言Verilog HDL進(jìn)行編程并仿真驗(yàn)證。本設(shè)計(jì)中的電子琴可操作性好,音符顯示直觀,聲音優(yōu)美。關(guān)鍵詞:電子琴,電子設(shè)計(jì)自動(dòng)化,Verilog HDL語言引言科技發(fā)展的日新月異,催生了一系列新奇實(shí)用的電子產(chǎn)品。在這些電子產(chǎn)品中,電子琴早已成為電子樂器行列中的重要一員。電子琴是人類仿制常規(guī)

2、樂器的代表之一,其發(fā)明問世極大地豐富了人們的聽覺感受,推動(dòng)了音樂的普及和發(fā)展。在信息化與電子化交織的今天,電子琴作為社會(huì)科技與文明的產(chǎn)物,正扮演著音樂領(lǐng)域中不可或缺的角色。EDA技術(shù)的快速發(fā)展和成熟,F(xiàn)PGA等數(shù)字可編程器件的出現(xiàn)和進(jìn)步,基于EDA技術(shù)的設(shè)計(jì)也變得愈加簡單可行?;贓DA技術(shù)的設(shè)計(jì)不僅系統(tǒng)可靠性較高,而且能實(shí)現(xiàn)較為復(fù)雜的功能。運(yùn)用EDA軟件可方便地在計(jì)算機(jī)平臺(tái)上實(shí)現(xiàn)設(shè)計(jì)與仿真,本設(shè)計(jì)中的電子琴便是基于EDA技術(shù),運(yùn)用Verilog HDL語言設(shè)計(jì)完成的。1 EDA概述與音樂知識(shí)1.1 EDA技術(shù)1.1.1 EDA的發(fā)展EDA(Electronic Design Automati

3、on,電子設(shè)計(jì)自動(dòng)化)可以認(rèn)識(shí)為在計(jì)算機(jī)工作平臺(tái)上,以EDA軟件為開發(fā)環(huán)境,以PLD器件或ASIC專用集成電路為目標(biāo)器件來設(shè)計(jì)實(shí)現(xiàn)電路系統(tǒng)的一門技術(shù)。EDA技術(shù)在逐漸進(jìn)步,其大致經(jīng)歷了3個(gè)發(fā)展階段:CAD階段(20世紀(jì)70年代至80年代初)、CAE階段(20世紀(jì)80年代初至90年代初)、EDA階段(20世紀(jì)90年代以后)。1EDA技術(shù)在進(jìn)入21世紀(jì)后,得到了不小的進(jìn)步和發(fā)展,突出表現(xiàn)在以下幾個(gè)方面:2(1)不斷推出在仿真驗(yàn)證和設(shè)計(jì)兩方面都支持標(biāo)準(zhǔn)硬件描述語言的EDA軟件,功能更加強(qiáng)大且驗(yàn)證更加高效;(2) EDA技術(shù)使得電子設(shè)計(jì)成果以自主知識(shí)產(chǎn)權(quán)(IP)的方式予以確認(rèn),提高了設(shè)計(jì)成果的可重用性

4、;(3)EDA技術(shù)使得電子領(lǐng)域各學(xué)科之間的界限更加模糊,互為包容,如模擬和數(shù)字、軟件和硬件、系統(tǒng)和器件、ASIC和FPGA等;(4)SoPC(可編程芯片系統(tǒng))進(jìn)入實(shí)用化階段;(5)高速數(shù)字信號(hào)處理算法可基于FPGA的DSP技術(shù)實(shí)現(xiàn)。1.1.2 EDA的設(shè)計(jì)流程一個(gè)完整的EDA設(shè)計(jì)流程既是自頂向下設(shè)計(jì)方法的具體實(shí)施途徑,也是EDA工具軟件本身的組成結(jié)構(gòu)。自頂向下的設(shè)計(jì),即Top-down設(shè)計(jì),這種設(shè)計(jì)方法首先從系統(tǒng)設(shè)計(jì)入手,在頂層進(jìn)行功能方框圖的劃分與結(jié)構(gòu)設(shè)計(jì)。在功能級(jí)仿真糾錯(cuò),并用硬件描述語言對高層次的系統(tǒng)行為進(jìn)行描述,然后用綜合工具將設(shè)計(jì)轉(zhuǎn)化為具體門電路網(wǎng)表。由于設(shè)計(jì)的主要仿真和調(diào)試過程是在

5、高層次完成的,這一方面有利于在早期發(fā)現(xiàn)結(jié)構(gòu)設(shè)計(jì)上的錯(cuò)誤,避免設(shè)計(jì)工作的浪費(fèi),同時(shí)也減少了邏輯功能仿真的工作量,提高了設(shè)計(jì)的一次成功率。EDA設(shè)計(jì)流程一般包括:設(shè)計(jì)輸入、綜合、布局布線、仿真、編程配置的步驟。3設(shè)計(jì)輸入原理圖HDL文本功能仿真綜合時(shí)序仿真FPGA/CPLD適配FPGA/CPLD編程下載在線測試 圖1 基于FPGA/CPLD器件的數(shù)字系統(tǒng)設(shè)計(jì)流程 (1)設(shè)計(jì)輸入(Design Entry):主要為原理圖(schematic)輸入和HDL文本編輯輸入2部分。(2)綜合(Synthesis):將高級(jí)抽象層次的設(shè)計(jì)描述自動(dòng)轉(zhuǎn)化為低層次描述。(3)布局布線:將綜合生成的電路邏輯網(wǎng)表映射到具

6、體的目標(biāo)器件,并產(chǎn)生最終的可下載文件。(4)仿真:包括功能仿真和時(shí)序仿真,對設(shè)計(jì)電路的功能的驗(yàn)證。(5)編程配置:把適配后生成的編程文件裝入到PLD器件中,CPLD器件的下載稱為編程,F(xiàn)PGA器件的下載稱為配置。1.1.3 Quartus II設(shè)計(jì)平臺(tái)和Verilog HDL語言本設(shè)計(jì)的開發(fā)工具是Quartus II,采用Verilog HDL語言編程。Quartus II適合大規(guī)模FPGA的開發(fā),是Altera繼MAX+plus II后的新一款開發(fā)工具。Quartus II提供了更優(yōu)化的綜合和適配功能,改善了對第三方仿真和分析工具的支持。它還包括了DSP Builder、SOPC Build

7、er等開發(fā)工具,支持系統(tǒng)級(jí)的開發(fā)等。Quartus II是一款具有標(biāo)準(zhǔn)的EDA工具接口和完善的可視化設(shè)計(jì)環(huán)境的FPGA/CPLD集成開發(fā)軟件。設(shè)計(jì)輸入有多種表達(dá)方式,最常用的是原理圖方式和HDL文本方式。Verilog HDL是一種硬件描述語言(HDL:Hardware Description Language),以文本形式來描述數(shù)字系統(tǒng)硬件的結(jié)構(gòu)和行為的語言。用它可以表示邏輯電路圖、邏輯表達(dá)式,還可以表示數(shù)字邏輯系統(tǒng)所完成的邏輯功能。4Verilog HDL和VHDL是世界上流行的2種硬件描述語言,都是在20世紀(jì)80年代中期被開發(fā)出來的。Verilog HDL由GDA公司開發(fā),它是在C語言的

8、基礎(chǔ)上發(fā)展而來的,但作為一種硬件描述語言和C語言有著本質(zhì)的區(qū)別,Verilog語言概括起來有著如下的一些特點(diǎn):(1) 適用于可綜合的電路設(shè)計(jì),也適用于電路和系統(tǒng)的仿真。(2) 能在多個(gè)層次上對所設(shè)計(jì)的系統(tǒng)進(jìn)行描述,對設(shè)計(jì)的規(guī)模也沒有任何限制。(3) 行為描述和結(jié)構(gòu)描述靈活且支持混合建模。(4) 行為描述語句類似于軟件高級(jí)語言。(5) 內(nèi)置各種邏輯門和開關(guān)級(jí)元件。(6) UDP(用戶定義原語)可靈活創(chuàng)建。1.1.4 FPGA器件FPGA(Field Programmable Gate Array),現(xiàn)場可編程門陣列,是一種在采用單元型結(jié)構(gòu)的新型PLD器件。作為ASIC(專用集成電路)領(lǐng)域中的一種

9、半定制電路,F(xiàn)PGA既彌補(bǔ)了定制電路的不足,又克服了原有可編程器件門電路數(shù)有限的缺點(diǎn),成為當(dāng)前主流的PLD器件之一。FPGA使用CMOS、SRAM工藝制作,和陣列型PLD結(jié)構(gòu)不同,內(nèi)部由許多獨(dú)立的可編程邏輯單元構(gòu)成,各邏輯單元間可以靈活地相互連接,具有密度高、速度快、編程靈活、可重新配置等優(yōu)勢。1.2 電子琴與相關(guān)的音樂知識(shí)EDA技術(shù)的成熟,F(xiàn)PGA器件的發(fā)展使得基于EDA技術(shù)的電子琴設(shè)計(jì)成為可能。在計(jì)算機(jī)上運(yùn)用EDA軟件可以很方便地對所需要實(shí)現(xiàn)的電子琴進(jìn)行設(shè)計(jì)和仿真。采用傳統(tǒng)方法如單片機(jī)設(shè)計(jì)的電子琴,要求設(shè)計(jì)人員對硬件非常熟悉,且單片機(jī)制作的主控板受制版工藝、布局結(jié)構(gòu)和起器件質(zhì)量等因素的影響

10、導(dǎo)致抗干擾能力差、故障率高、不易擴(kuò)展等問題。EDA技術(shù)對于設(shè)計(jì)人員來說,修改程序可以實(shí)現(xiàn)不同的功能,對于設(shè)計(jì)周期來說節(jié)省了時(shí)間。本設(shè)計(jì)中的電子琴是通過按鍵控制發(fā)音的,系統(tǒng)演奏時(shí)能選擇手動(dòng)演奏或是自動(dòng)演奏一段預(yù)置的簡短音樂。為完成該設(shè)計(jì),需要了解一些基本的音樂知識(shí)理論。在音樂領(lǐng)域中,簡譜和五線譜是人們用來記譜的兩種記譜法,簡譜相對簡易,其又分為字母簡譜和數(shù)字簡譜。數(shù)字簡譜以1、2、3、4、5、6、7來表示音階中的7個(gè)基本音級(jí),分別用do,re,mi,fa,sol,la,si來讀音。在一段4/4拍數(shù)字簡譜中,單獨(dú)的數(shù)字表示一個(gè)四分音符,數(shù)字下面的橫線為減時(shí)線,表示四分音符長度減半;數(shù)字右面的短橫線

11、稱為增時(shí)線,每加一條則延長一個(gè)四分音符時(shí)間;數(shù)字右面的圓點(diǎn)稱為附點(diǎn),用來延長前面音符時(shí)值的一半。如4/4拍一個(gè)四分音符(5)為1拍,則全音符(5- - -)為4拍,二分音符(5-)為2拍,八分音符(5)為半拍。在一段數(shù)字簡譜后面的豎直線為小節(jié),0為休止符。另外為了標(biāo)記簡譜中的重低音,在數(shù)字上方的圓點(diǎn)記為重音,在下方的為低音,單獨(dú)的數(shù)字則是中音。2.系統(tǒng)分析與方案設(shè)計(jì)2.1 設(shè)計(jì)思想與原理框圖揚(yáng)聲器設(shè)計(jì)思想為利用EDA技術(shù)對FPGA器件進(jìn)行配置實(shí)現(xiàn)電子琴,系統(tǒng)掃描按鍵輸入信號(hào)來選擇是手動(dòng)還是自動(dòng)演奏,采集的信號(hào)轉(zhuǎn)化為分頻預(yù)置數(shù),數(shù)控分頻器輸出不同音符的頻率給揚(yáng)聲器,并由數(shù)碼管顯示當(dāng)前音符。按鍵譯

12、碼數(shù)碼管4音調(diào)顯示置數(shù)分頻揚(yáng)聲器反饋預(yù)置計(jì)數(shù)器二分頻器CLK-6MHz數(shù)碼管123音符顯示 分頻曲譜產(chǎn)生CLK-4Hz圖2 系統(tǒng)原理框圖2.2 原理說明(1) 當(dāng)演奏者按下7個(gè)音調(diào)鍵盤后,在系統(tǒng)基準(zhǔn)時(shí)鐘6MHz下,根據(jù)鍵盤的輸入信號(hào)分頻,產(chǎn)生所需的7個(gè)不同音調(diào)的頻率并二分頻輸出給speaker,同時(shí)由數(shù)碼管HEX4顯示音調(diào)。(2) 當(dāng)自動(dòng)演奏信號(hào)auto為真時(shí),對系統(tǒng)6MHz基準(zhǔn)時(shí)鐘分頻,產(chǎn)生一個(gè)頻率為4Hz的時(shí)鐘用于譜曲的分頻比預(yù)置。6MHz時(shí)鐘使數(shù)控分頻器產(chǎn)生曲譜演奏音符的對應(yīng)頻率,再經(jīng)過一個(gè)二分頻器輸出該頻率,最后通過speaker發(fā)出該音符的聲音,同時(shí)由數(shù)碼管HEX3、 HEX2和 H

13、EX1分別顯示高中低音符。(3) 當(dāng)auto為0演奏者按下stp鍵后,speaker不發(fā)聲,輸出始終為0Hz的信號(hào),同時(shí)音調(diào)數(shù)碼管均顯示0。3.Quartus II設(shè)計(jì)過程3.1 自動(dòng)演奏樂曲要使用電子琴完成一段音樂的演奏,音調(diào)和音長是2個(gè)最關(guān)鍵的參數(shù)。根據(jù)音樂知識(shí),音調(diào)是由頻率控制的,音長為該音符持續(xù)時(shí)間的長短。在本設(shè)計(jì)中,樂譜產(chǎn)生電路用來控制音樂的音調(diào)和音長。本設(shè)計(jì)中曲譜的自動(dòng)演奏需要在C調(diào)中選取從低音1到高音7共21個(gè)音階,這些不同信號(hào)的頻率都可以由一個(gè)基準(zhǔn)頻率分頻得到。因?yàn)楦饕綦A的頻率為非整數(shù),而分頻系數(shù)不能為小數(shù),所以必須對分頻系數(shù)進(jìn)行四舍五入。這樣基準(zhǔn)頻率的選擇變得比較重要,基準(zhǔn)頻

14、率選擇較低,分頻系數(shù)就小,誤差大;基準(zhǔn)頻率選擇較高,誤差是小了,但是分頻系數(shù)也大。綜合考慮,選取6 MHz的基準(zhǔn)頻率是可行的。數(shù)控分頻器輸出的為脈寬極窄的脈沖式信號(hào),為了減少輸出的偶次諧波分量,需要在數(shù)控分頻器和揚(yáng)聲器之間加一個(gè)二分頻器以均衡其占空比,保證到達(dá)揚(yáng)聲器的是對稱方波。二分頻器將基準(zhǔn)頻率二分頻,即為3MHz,計(jì)算分頻系數(shù)也就以3MHz為基準(zhǔn)頻率。分頻系數(shù)為基準(zhǔn)頻率和各音階頻率的比值,例如中音1的頻率為523Hz,分頻系數(shù)為5736,高音7的頻率為1976 Hz,分頻系數(shù)為1518。由于最大分頻系數(shù)為11450,故采用14位二進(jìn)制計(jì)數(shù)器已經(jīng)足夠。在演奏時(shí),對于不同的分頻系數(shù),只需要加載

15、對應(yīng)的預(yù)置數(shù)。采用加載預(yù)置數(shù)的方法比反饋復(fù)零法更節(jié)省資源,實(shí)現(xiàn)起來也更加簡單。用差值法分頻,把初始值214 -1=16383和各音階的分頻系數(shù)的差值作為預(yù)置數(shù)即可發(fā)出不同頻率的音符。對于樂曲中的休止符,只要將分頻系數(shù)設(shè)為0,初始值為16383即可,此時(shí)揚(yáng)聲器不發(fā)聲。6表1 各音階頻率對應(yīng)分頻系數(shù)與預(yù)置數(shù)(由3Mhz計(jì)算得出)低音頻率/Hz分頻系數(shù)初始值中音頻率/Hz分頻系數(shù)初始值高音頻率/Hz分頻系數(shù)初始值12621145049331523573610647110462868135152294102046179258751111127221175255313830333090917294365

16、94552118313131822761410743498596778746984298120854139721471423653927653873057843827125565156819131447064406818956568034091297467601705146787494607310310798830361334771976151814865音符的持續(xù)時(shí)間由樂曲的速度及每個(gè)音符的節(jié)拍數(shù)確定。通過控制計(jì)數(shù)器預(yù)置數(shù)的停留時(shí)間,預(yù)置數(shù)的停留時(shí)間長,則音符的停留時(shí)間長。以下是生日歌的C調(diào)簡譜:圖3 生日歌簡譜簡譜中,如果將全音符的持續(xù)時(shí)間設(shè)定為1秒,則四分音符為0.25秒,只需要再提供一

17、個(gè)4Hz的時(shí)鐘頻率即可產(chǎn)生四分音符的時(shí)長。每個(gè)音符的演奏時(shí)間都是0.25的整數(shù)倍,對于節(jié)拍較長的音符,如二分音符在記譜時(shí)將該音名連續(xù)記錄2次,全音符連續(xù)記錄4次即可。在編寫樂譜程序時(shí)記音符的拍數(shù),由于二分頻器的存在,一拍就要記為連續(xù)的2個(gè)時(shí)鐘節(jié)拍。為了實(shí)現(xiàn)樂曲的循環(huán)演奏,需要再加一個(gè)時(shí)長計(jì)數(shù)器counter,當(dāng)樂曲演奏結(jié)束時(shí)能再次重新演奏。3.2 手動(dòng)按鍵演奏本設(shè)計(jì)中的電子琴且除了能自動(dòng)演奏一段預(yù)置的樂曲外,還能完成手動(dòng)演奏發(fā)出C調(diào)的7個(gè)中音 。由于自動(dòng)演奏是在人按下自動(dòng)演奏鍵以后進(jìn)行的,所以設(shè)置一個(gè)auto來控制是否自動(dòng)演奏。當(dāng)auto為真時(shí),實(shí)現(xiàn)預(yù)置樂曲的自動(dòng)演奏,否則掃描按鍵由人工演奏。

18、如果自動(dòng)演奏則按照樂譜,把musicout賦值給speaker。手動(dòng)演奏時(shí)的音調(diào)頻率同樣需要由系統(tǒng)時(shí)鐘分頻得到,設(shè)置一個(gè)i以改變分頻系數(shù),再對speaker二分頻。各個(gè)音調(diào)的分頻系數(shù)以3MHz計(jì)算得出,即為表1中從中音1到中音7的分頻系數(shù)。如中音1的分頻系數(shù)應(yīng)為5736。相應(yīng)地,中音1的輸出信號(hào)程序應(yīng)該編寫成:doo:begin if(i=5736)beginspeaker=!speaker;tone=4b0001;i=0;endelsei=i+1d1;end3.3 音名顯示音名顯示數(shù)碼管用來顯示演奏時(shí)對應(yīng)的音符。本設(shè)計(jì)中,用數(shù)碼管HEX3、HEX2、HEX1分別顯示自動(dòng)演奏時(shí)的高中低音符,其

19、中high_7s、mid_7s和low_7s分別為高中低音顯示信號(hào);用數(shù)碼管HEX4顯示手動(dòng)演奏時(shí)的音調(diào),tone_7s為鍵盤演奏音調(diào)信號(hào)。采用7段共陽數(shù)碼管,以a、b、c、d、e、f、g來標(biāo)記數(shù)碼管的7個(gè)LED顯示位,對各個(gè)要顯示位置加以低電平即可點(diǎn)亮。本設(shè)計(jì)中,定義輸出reg6:0 ledout為顯示信號(hào),例如要顯示“0”,只要使ledout=7b。借助這些數(shù)碼管,能夠?qū)崿F(xiàn)演奏的動(dòng)態(tài)顯示。圖4 共陽數(shù)碼管原理圖3.4 源程序module eorgan(key,clk6m,auto,speaker,tone_7s,high_7s,mid_7s,low_7s); input key,clk6m

20、,auto; /鍵盤輸入,6M基準(zhǔn)時(shí)鐘輸入,自動(dòng)演奏 wire7:0 key; /鍵盤輸入信號(hào) output 6:0 tone_7s; /數(shù)碼管顯示鍵盤音調(diào)output reg speaker; output 6:0 high_7s; /顯示樂曲高音音符output 6:0 mid_7s; /顯示樂曲中音音符output 6:0 low_7s; /顯示樂曲低音音符 reg20:0 i; reg clk4; reg3:0 high,mid,low,tone; /高中低音信號(hào)和鍵盤音調(diào)信號(hào) reg13:0 divider,origin; /自動(dòng)演奏分頻系數(shù)和初始值 reg carry; reg m

21、usicout; /樂譜輸出信號(hào) reg 19:0 count20; reg7:0 counter; parameter stp=8b, /休止 doo=8b, /do re=8b, /re mi=8b, /mi fa=8b, /fa sol=8b, /sol la=8b, /la si=8b; /si always (posedge clk6m) begin if(auto) speaker=musicout; /如果automusic為真,輸出樂譜 else begin /否則判斷鍵盤key的輸入case(key) stp:beginspeaker=0;tone=4b0000;i=5736

22、)beginspeaker=!speaker;tone=4b0001;i=0;endelsei=5111)beginspeaker=!speaker;tone=4b0010;i=0;endelsei=4552)beginspeaker=!speaker;tone=4b0011;i=0;endelsei=4298)beginspeaker=!speaker;tone=4b0100;i=0;endelsei=3827)beginspeaker=!speaker;tone=4b0101;i=0;endelsei=3409)beginspeaker=!speaker;tone=4b0110;i=0;e

23、ndelsei=3036)beginspeaker=!speaker;tone=4b0111;i=0;endelsei=i+1d1;enddefault:beginspeaker=0;tone=4b0000;i=0;endendcase end end always (posedge clk6m) /通過置數(shù),改變分頻比begin if(divider=16383)begin carry=1;divider=origin;end else begin divider=divider+1d1;carry=0;endend always (posedge carry) begin musicout

24、=musicout; /2 分頻產(chǎn)生方波信號(hào) end always (posedge clk6m) /從6Mhz得到4hzbegin if(!auto)begin count20=20d0;clk4=0;endelse if(count20=20d) begin count20=20d0;clk4=clk4;endelse count20=count20+20d1;end always (posedge clk4) /分頻比預(yù)置 begin case(high,mid,low) h001: origin=4933; /低音1h002: origin=6179; /低音2h003: origin

25、=7294; /低音3h004: origin=7787; /低音4h005: origin=8730; /低音5h006: origin=9565; /低音6h007: origin=10310; /低音7h010: origin=10647; /中音1h020: origin=11272; /中音2h030: origin=11831; /中音3h040: origin=12085; /中音4h050: origin=12556; /中音5h060: origin=12974; /中音6h070: origin=13347; /中音7h100: origin=13515; /高音1h200

26、: origin=13830; /高音2h300: origin=14107; /高音3h400: origin=14236; /高音4h500: origin=14470; /高音5h600: origin=14678; /高音6h700: origin=14865; /高音7h000: origin=16383; /休止 endcase end always (posedge clk4)begin if(counter=52) counter=0; /計(jì)時(shí),以實(shí)現(xiàn)循環(huán)演奏 else counter=counter+1d1; case(counter) /記譜0: high,mid,low=

27、h050; /“?!?1: high,mid,low=h050; /“你”2: high,mid,low=h060; /“生”3: high,mid,low=h060; /持續(xù)2個(gè)時(shí)鐘節(jié)拍,以下類似4: high,mid,low=h050; /“日”5: high,mid,low=h050; 6: high,mid,low=h100; /“快”7: high,mid,low=h100; 8: high,mid,low=h070; /“樂”9: high,mid,low=h070; 10: high,mid,low=h070;11: high,mid,low=h070; 12: high,mid

28、,low=h050; /“祝”13: high,mid,low=h050;14: high,mid,low=h050; /“你”15: high,mid,low=h050;16: high,mid,low=h060; /“生”17: high,mid,low=h060; 18: high,mid,low=h050; /“日”19: high,mid,low=h050; 20: high,mid,low=h200; /“快”21: high,mid,low=h200;22: high,mid,low=h100; /“樂”23: high,mid,low=h100;24: high,mid,low

29、=h100; 25: high,mid,low=h100; 26: high,mid,low=h050; /“祝”27: high,mid,low=h050; /“你”28: high,mid,low=h500; /“生” 29: high,mid,low=h500;30: high,mid,low=h300; /“日”31: high,mid,low=h300;32: high,mid,low=h100; /“快”33: high,mid,low=h100;34: high,mid,low=h070; /“樂” 35: high,mid,low=h070; 36: high,mid,low=

30、h060; 37: high,mid,low=h060;38: high,mid,low=h400; /“?!?9: high,mid,low=h400; /“你”40: high,mid,low=h300; /“生” 41: high,mid,low=h300;42: high,mid,low=h100; /“日”43: high,mid,low=h100;44: high,mid,low=h200; /“快”45: high,mid,low=h200;46: high,mid,low=h100; /“樂”47: high,mid,low=h100; 48: high,mid,low=h10

31、0; 49: high,mid,low=h100; 50: high,mid,low=h100;51: high,mid,low=h100;52: high,mid,low=h000;endcase endled_7s u1(high,high_7s); /高音音符顯示led_7s u2(mid,mid_7s); /中音音符顯示led_7s u3(low,low_7s); /低音音符顯示 led_7s u4(tone,tone_7s); /鍵盤輸入音調(diào)顯示endmodulemodule led_7s(datain,ledout); /7段數(shù)碼管譯碼顯示模塊input 3:0 datain;ou

32、tput reg6:0 ledout;always begincase(datain)0:ledout=7b;1:ledout=7b;2:ledout=7b;3:ledout=7b;4:ledout=7b;5:ledout=7b;6:ledout=7b;7:ledout=7b;8:ledout=7b;9:ledout=7b;default:ledout=7b;endcaseendendmodule3.5 仿真結(jié)果在Quartus工程中對以上程序全編譯并新建波形仿真圖,進(jìn)行波形仿真,得到手動(dòng)和自動(dòng)演奏時(shí)的仿真波形。圖5 手動(dòng)演奏仿真波形圖圖5系手動(dòng)演奏仿真波形圖,從左至右分別是auto為0時(shí)按下

33、中音1到中音7鍵后的波形。tone_7s顯示各鍵按下時(shí)的音調(diào),分別顯示(無按鍵輸入)、(do)、(re)、(mi)、(fa)、(sol)、(la)、(si)以及stp鍵按下后的。同時(shí)speaker發(fā)出不同音階的聲音,可以看到從中音1到中7隨著頻率的變高,波形的橫向?qū)挾纫苍谥饾u變窄。圖6 自動(dòng)演奏仿真波形圖一圖7 自動(dòng)演奏仿真波形圖二圖6和圖7系自動(dòng)演奏仿真波形圖,可以看出當(dāng)auto為1時(shí),開始按著預(yù)置的譜曲在演奏音樂。tone_7s一直(0),high_7s,mid_7s和low_7s顯示即時(shí)的音符。當(dāng)high_7s,mid_7s和low_7s同時(shí)分別顯示:、為中音5(“?!焙汀澳恪备靼肱模?, 、為中音6(“生”一拍), 、為中音5(“日”一拍), 、為高音1(“快”一拍), 、為中音7(“樂”兩拍)等。綜合以上仿真結(jié)果得出結(jié)論,這次畢業(yè)設(shè)計(jì)達(dá)到了既定的設(shè)計(jì)目標(biāo)。4.結(jié)論此次畢業(yè)設(shè)計(jì)完成,我于其中感觸如下:Verilog HDL語言和C語言雖然有著本質(zhì)的不同,但是有了C語言的學(xué)習(xí)經(jīng)驗(yàn),運(yùn)用Verilog HDL語言也不是難事。FPGA設(shè)計(jì)簡單,開發(fā)時(shí)間

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論