馬佳佳 樂(lè)曲演奏_第1頁(yè)
馬佳佳 樂(lè)曲演奏_第2頁(yè)
馬佳佳 樂(lè)曲演奏_第3頁(yè)
馬佳佳 樂(lè)曲演奏_第4頁(yè)
馬佳佳 樂(lè)曲演奏_第5頁(yè)
已閱讀5頁(yè),還剩28頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、摘要隨著微電子技術(shù)、集成技術(shù)和計(jì)算機(jī)技術(shù)的迅速開(kāi)展,電子線路數(shù)字化已經(jīng)成為一個(gè)開(kāi)展趨勢(shì),數(shù)字化電子系統(tǒng)的設(shè)計(jì)方法和手段發(fā)生了很大的變化。EDA 技術(shù)主要包括三個(gè)局部:大規(guī)模的可編程邏輯器件,軟件開(kāi)發(fā)工具和輸入方式。可編程邏輯器件是一種由用戶編程來(lái)實(shí)現(xiàn)各種邏輯功能的新型邏輯器件,主要包括 FPGA 和 CPLD 兩大類。軟件開(kāi)發(fā)工具有 Altera 的 MAX+plus 、Lattice 的 ispLEVER、Xilinx 的 Foundation Series 等。常用的硬件描述語(yǔ)言有 VHDL 語(yǔ)言、Verilog 語(yǔ)言和 ABEL 語(yǔ)言。由于科學(xué)技術(shù)的開(kāi)展,基于 EDA 技術(shù)的設(shè)計(jì)方法也成

2、為現(xiàn)代電子系統(tǒng)設(shè)計(jì)的主流。特別是可編程邏輯器件的功能和容量的不斷擴(kuò)大,如FPGA(Field Programmable Gate Array,現(xiàn)場(chǎng)可編程門(mén)陣列)使集成電路的設(shè)計(jì)進(jìn)入片上系統(tǒng)(System on a Chip,SOC)或可編程片上系統(tǒng)(System on a Programmable Chip,SOPC)的設(shè)計(jì)時(shí)代。同時(shí)采用超高速集成電路硬件描述語(yǔ)言VHDL (Very High Speed Integrated Circuit Hardware Description Language),其具有多層次描述系統(tǒng)硬件功能的能力,既支持模塊化設(shè)計(jì),也支持層次化設(shè)計(jì),使各種數(shù)字化電子系

3、統(tǒng)的設(shè)計(jì)通過(guò)描述芯片功能實(shí)現(xiàn)系統(tǒng)功能,從而有效地縮短了產(chǎn)品開(kāi)發(fā)周期,減少了設(shè)計(jì)芯片的數(shù)量,縮小了系統(tǒng)體積,降低了系統(tǒng)能耗,提高了系統(tǒng)的靈活性和可靠性。關(guān)鍵詞關(guān)鍵詞 FPGA, 音樂(lè)節(jié)拍發(fā)生器模塊,音樂(lè)譯碼電路模塊,數(shù)控分頻模塊 AbstractWith microelectronics technology, integrated technology and the computer technology rapid development, electronic circuit of digital has become a development trend, and the metho

4、d and means of digital electronic system design have great changes, too . EDA technology mainly includes three parts: large-scale programmable logic devices, software development tools and input methods. Programmable logic devices is a new logic devices by coming true all kinds of logic function, in

5、cluding the FPGA and CPLD . A software development tool includes Altera MAX + plus , Lattice of ispLEVER, Xilinx of Foundation Series, and so on. Common hardware description language have VHDL language, Verilog language and ABEL language.Due to the development of science and technology, the design m

6、ethod which is based on EDA has become the mainstream of the modern electronic system design. Especially the function and capacity of Programmable logic devices continues to expand, such as FPGA (Field Programmable Gate Array) make integrated circuit design into the Chip System (System on a Chip, SO

7、C) or Programmable Chip System (System on a Programmable Chip, SOPC) design era. At the same time the ultra-high Speed Integrated Circuit Hardware Description Language VHDL (Very High Speed Integrated Circuit Hard-ware Description Language), it has the ability that multi-level describe system hardwa

8、re, supports both modular design, also support the hierarchical design, make all kinds of digital electronic system design through describing chip functions to come true the system function, so cut short product development cycle, reduce the number of chip design, the system volume and the energy co

9、nsumption of system, and improve the flexibility and reliability of the system.Keywords FPGA, the music rhythm generator module, music decoder circuit module ,numerical control points frequency modules目 錄摘要.IABSTRACT .II1 引言.11.1 可編程專用集成電路 ASIC.11.1.1 概述.11.1.2 主要特點(diǎn).11.1.3 開(kāi)展前景.11.2 EDA 技術(shù) .11.2.1 概

10、述.11.2.2 EDA 技術(shù)的開(kāi)展趨勢(shì).22 樂(lè)曲演奏系統(tǒng)設(shè)計(jì)原理分析.32.1 樂(lè)曲演奏根本要求.32.2 樂(lè)曲演奏原理.32.3 音符頻率的獲得.42.4 音符編碼的設(shè)計(jì)分析.52.5 控制音長(zhǎng)的節(jié)拍發(fā)生器.63 系統(tǒng)硬件設(shè)計(jì).73.1 FPGA 的介紹 .73.2 FLEX 系列的結(jié)構(gòu)特點(diǎn).73.2.1 概述.73.2.2 FLEX 的特點(diǎn).74 樂(lè)曲硬件演奏電路的層次化設(shè)計(jì)方案.94.1 音樂(lè)節(jié)拍發(fā)生器 NOTETABS.94.2 音符譯碼電路 TONETABA模塊.114.3 數(shù)控分頻模塊 SPEAKERA設(shè)計(jì).134.4 樂(lè)曲硬件演奏電路的頂層設(shè)計(jì)和仿真.15總結(jié).18致謝.19

11、參考文獻(xiàn).20附錄 1 程序清單.21附錄 2 梁祝簡(jiǎn)譜.291 引言1.1 可編程專用集成電路 ASIC1.1.1 概述可編程 ASIC 包括簡(jiǎn)單可編程 ASIC 和復(fù)雜可編程 ASIC ?,F(xiàn)場(chǎng)可編程 ASIC 主要是指現(xiàn)場(chǎng)可編程門(mén)陣列 FPGA,它是與傳統(tǒng) PLD 不同的一類可編程 ASIC。它類似于半定制門(mén)陣列的通用結(jié)構(gòu),即由邏輯功能排列成的陣列組成,并由可編程的互連資源連接這些邏輯功能塊來(lái)實(shí)現(xiàn)所需的設(shè)計(jì)。從某種意義上說(shuō),F(xiàn)PGA 是一種將門(mén)陣列的通用結(jié)構(gòu)與PLD 的現(xiàn)場(chǎng)可編程性融于一體的新型器件,具有集成度高、通用性好、設(shè)計(jì)靈活、編程方便、產(chǎn)品上市快等多方面的優(yōu)點(diǎn)。.2 主要特點(diǎn).3

12、開(kāi)展前景1.為迎接系統(tǒng)級(jí)芯片時(shí)代,向密度更高、速度更快、頻帶更寬的百萬(wàn)門(mén)方向開(kāi)展5.為了方便用戶設(shè)計(jì)和特殊功能應(yīng)用,向嵌入通用或標(biāo)準(zhǔn)功能模塊方向開(kāi)展6.為了適應(yīng)全球環(huán)保潮流,向低電壓低功耗的綠色元件方向開(kāi)展1.2 EDA 技術(shù).1 概述EDA(Electronic Design Automation)即電子設(shè)計(jì)自動(dòng)化,EDA 技術(shù)指的是以計(jì)算機(jī)硬件和系統(tǒng)軟件為根本工作平臺(tái),繼承和借鑒前人在電路和系統(tǒng)、數(shù)據(jù)庫(kù)、圖形學(xué)、圖論和拓?fù)溥壿嫛⒂?jì)算數(shù)學(xué)、優(yōu)化理論等多學(xué)科的最新科學(xué)技術(shù)成果而研制成的商品化通用支撐軟件和應(yīng)用程序包。EDA 旨在幫助電子工程師在計(jì)算機(jī)上完成電路的功能設(shè)計(jì)、邏輯設(shè)計(jì)、性能分析、時(shí)

13、序測(cè)試直至 PCB印刷電路板的自動(dòng)設(shè)計(jì)。EDA 技術(shù)根本特征:1.“自頂向下的設(shè)計(jì)方法 2.硬件描述語(yǔ)言 3.邏輯綜合優(yōu)化 4.開(kāi)放性和標(biāo)準(zhǔn)化 5.庫(kù)Library的引入1.2.2 EDA 技術(shù)的開(kāi)展趨勢(shì)1. 軟件開(kāi)發(fā)工具的開(kāi)展趨勢(shì)(1)具有混合信號(hào)處理能力的 EDA 工具(2).有效的仿真工具的開(kāi)展(3).理想的設(shè)計(jì)綜合工具的開(kāi)發(fā)(1).輸入方式簡(jiǎn)便化趨勢(shì)(2).輸入方式高效化和統(tǒng)一化趨勢(shì) 2 樂(lè)曲演奏系統(tǒng)設(shè)計(jì)原理分析 樂(lè)曲演奏根本要求利用 FPGA,設(shè)計(jì)一個(gè)樂(lè)曲硬件演奏電路。演奏時(shí)可選擇鍵盤(pán)輸入樂(lè)曲或者已存入的樂(lè)曲,并配以一個(gè)小揚(yáng)聲器。樂(lè)曲的 12 平均率規(guī)定:每 2 個(gè)八度音(如簡(jiǎn)譜中的

14、中音 1與高音 1)之間的頻率相差 1 倍。在 2 個(gè)八度音之間,又可分為 12 個(gè)半音,每 2 個(gè)半音的頻率比為(1.059463)。另外,音符 A(簡(jiǎn)譜中的低音 6)的頻率為 440Hz,音符 B 到 C122之間、E 到 F 之間為半音,其余為全音。由此可以計(jì)算出簡(jiǎn)譜中從低音 l 至高音 1 之間每個(gè)音符的頻率。設(shè)計(jì)音符查找表電路模塊,時(shí)鐘模塊,數(shù)控分頻器模塊,音樂(lè)節(jié)拍產(chǎn)生模塊電路。任意選擇歌曲進(jìn)行設(shè)計(jì),并加前奏 5353111。 樂(lè)曲演奏原理聲音的頻譜范圍一般在幾十到幾千赫茲,利用程序來(lái)控制 FPGA 芯片某個(gè)引腳輸出一定頻率的矩形波,接上揚(yáng)聲器就能發(fā)出相應(yīng)頻率的聲音。樂(lè)曲中的每一個(gè)音

15、符對(duì)應(yīng)著一個(gè)確定的頻率,因此,要想發(fā)出不同音符的音調(diào),只要能控制輸出相應(yīng)音符的頻率即可。樂(lè)曲都是由一連串的音符組成,因此按照樂(lè)曲的樂(lè)譜依次輸出這些音符所對(duì)應(yīng)的頻率,就可以往揚(yáng)聲器上連續(xù)地發(fā)出各個(gè)音符的音調(diào) 。而要準(zhǔn)確地演奏出一首樂(lè)曲,僅僅讓揚(yáng)聲器能夠發(fā)聲是不夠的,還必須準(zhǔn)確地控制樂(lè)曲的節(jié)奏,即每個(gè)音符的持續(xù)時(shí)間,也就是節(jié)拍。設(shè)計(jì)的關(guān)鍵是要準(zhǔn)確地產(chǎn)生樂(lè)曲中每個(gè)音符的發(fā)音頻率,并根據(jù)樂(lè)曲要求按音符需要的節(jié)拍輸出,這是樂(lè)曲能夠演奏的兩個(gè)關(guān)鍵因素,但是以純硬件完成演奏電路比利用微處理器來(lái)實(shí)現(xiàn)樂(lè)曲演奏要復(fù)雜的多,如果不憑借 EDA 工具和硬件描述語(yǔ)言,憑借傳統(tǒng)的數(shù)字邏輯技術(shù),即使最簡(jiǎn)單的演奏電路也難以實(shí)

16、現(xiàn)。樂(lè)曲硬件演奏電路系統(tǒng)主要有數(shù)控分頻器和樂(lè)曲存儲(chǔ)模塊組成。數(shù)控分頻器對(duì) FPGA 的基準(zhǔn)頻率進(jìn)行分頻,得到與各個(gè)音階對(duì)應(yīng)的頻率輸出。樂(lè)曲存儲(chǔ)模塊產(chǎn)生節(jié)拍控制和音階選擇信號(hào),即在此模塊中可存放一個(gè)樂(lè)曲曲譜真值表,由一個(gè)計(jì)數(shù)器來(lái)控制此真值表的輸出,而由計(jì)數(shù)器的計(jì)數(shù)時(shí)鐘信號(hào)作為樂(lè)曲節(jié)拍控制信號(hào)。樂(lè)曲演奏電路的結(jié)構(gòu)框圖如下所示:基準(zhǔn)時(shí)鐘模式選擇手動(dòng)輸入時(shí)鐘電路音樂(lè)節(jié)拍產(chǎn)生電路數(shù)控分頻器電路查符查表電路圖 2.1 樂(lè)曲演奏電路結(jié)構(gòu)方框圖 音符頻率的獲得音樂(lè)的 12 平均率規(guī)定:每 2 個(gè)八度音(如簡(jiǎn)譜中的中音 1 與高音 1)之間的頻率相差1 倍。在 2 個(gè)八度音之間,又可分為 12 個(gè)半音,每 2

17、個(gè)半音的頻率比為(1.059463)。122另外,音符 A(簡(jiǎn)譜中的低音 6)的頻率為 440Hz,音符 B 到 C 之間、E 到 F 之間為半音,其余為全音。由此可以計(jì)算出簡(jiǎn)譜中從低音 l 至高音 1 之間每個(gè)音符的頻率。如表所示:表 簡(jiǎn)譜中的音名與頻率的關(guān)系音名頻率/Hz音名頻率/Hz音名頻率/Hz低音 1中音 1高音 1低音 2中音 2高音 2低音 3中音 3高音 3低音 4中音 4高音 4低音 5中音 5高音 5低音 6440中音 6880高音 61760低音 7中音 7高音 7 由于音階頻率多為非整數(shù),而分頻系數(shù)又不能為小數(shù),故必須將得到的分頻系數(shù)四舍五入取整。假設(shè)基準(zhǔn)頻率過(guò)低,那么

18、由于分頻系數(shù)過(guò)小,四舍五入取整后的誤差較大,假設(shè)基準(zhǔn)頻率過(guò)高,雖然誤碼差變小,但分頻結(jié)構(gòu)將變大。實(shí)際的設(shè)計(jì)應(yīng)綜合考慮兩方面的因素,在盡量減小頻率誤差的前提下取舍適宜的基準(zhǔn)頻率。本例中選取 4MHz 的基準(zhǔn)頻率,再對(duì) 4MHz 通過(guò)數(shù)控分頻器將根據(jù)高、中、低音音符編碼分頻成各音符所需要的聲音頻率的 2 倍,由于數(shù)控分頻器輸出的波形是脈寬極窄的脈沖波,為減小輸出偶次諧波分量和更好的驅(qū)動(dòng)揚(yáng)聲器發(fā)聲,最后在到達(dá)揚(yáng)聲器之前再進(jìn)行一次二分頻,從而生成各音符對(duì)應(yīng)頻率的方波輸出,以成功完成樂(lè)曲演奏的功能。各音階頻率計(jì)相應(yīng)的分頻系數(shù)如表 2.2 所示。表 2.2 中的分頻系數(shù)就是從 4MHz 頻率2 分頻得到的

19、 2MHz 頻率根底上計(jì)算得出的。分頻系數(shù)與頻率關(guān)系如下:音階頻率分頻系數(shù)z2MH 表 2.2 各音階頻率對(duì)應(yīng)的分頻值音名分頻系數(shù)初始值音名分頻系數(shù)初始值音名分頻系數(shù)初始值C 低音 17644547中音 137584433高音 119116280D 低音 268101381中音 234054786高音 217036488E 低音 360672124中音 330345157高音 315176674F 低音 457272464中音 428635328高音 414326759G 低音 551023089中音 525515640高音 512766915A 低音 645453646中音 62273591

20、8高音 611367055B 低音 740504141中音 720256166高音 710127179由于最大分頻系數(shù)為 7644,故采用 13 位二進(jìn)制計(jì)數(shù)器已能滿足分頻要求。由此我們計(jì)算出各音階的初值,初值計(jì)算方法如下所示:計(jì)數(shù)器采用 13 位分頻系數(shù)初值132在表 2.2 中,除了給出了分頻比以外,給出了對(duì)應(yīng)于各個(gè)音階頻率時(shí)計(jì)數(shù)器不同的初始值,對(duì)于樂(lè)曲中的休止符,要將分頻系數(shù)設(shè)為 0,即初始值為 8191 即可,此時(shí)揚(yáng)聲器將不會(huì)發(fā)聲。對(duì)于不同的分頻系數(shù),加載不同的初始值即可。用加載初始值而不是將分頻輸出譯碼反應(yīng),可以有效地減少本錢(qián)設(shè)計(jì)占用可編程邏輯器件的資源,也是同步計(jì)數(shù)器地一個(gè)常用設(shè)計(jì)

21、技巧。 音符編碼的設(shè)計(jì)分析 在動(dòng)態(tài)顯示樂(lè)曲演奏器的設(shè)計(jì)中,采用音符編碼輸出的方式,即樂(lè)曲中每一個(gè)高、中、低音音符對(duì)應(yīng)著不同的編碼,由編碼確定對(duì)應(yīng)音符的輸出頻率,同時(shí)控制編碼輸出的速度,決定音符的持續(xù)時(shí)間,也就是控制每個(gè)音符在樂(lè)曲中的節(jié)拍,從而到達(dá)樂(lè)曲演奏的目的,與此同時(shí)可以根據(jù)動(dòng)態(tài)輸出的編碼來(lái)確定顯示演奏樂(lè)曲的高、中、低音調(diào)及音符。各音符對(duì)應(yīng)的 13 位編碼如下表所示。表 各音階頻率對(duì)應(yīng)的 13 位編碼音名預(yù)置數(shù)音名預(yù)置數(shù)音名預(yù)置數(shù)C 低音 10001000100011中音 1高音 1D 低音 2中音 2高音 2E 低音 3中音 3高音 3F 低音 4中音 4高音 41101001100111

22、G 低音 5中音 5高音 5A 低音 6中音 6高音 6B 低音 7中音 7高音 72.5 控制音長(zhǎng)的節(jié)拍發(fā)生器該演奏電路演奏的樂(lè)曲是“梁祝片段,其最小的節(jié)拍為 1 拍。將 1 拍的時(shí)長(zhǎng)定為0.25s,那么只需要再提供一個(gè) 4Hz 的時(shí)鐘頻率即可產(chǎn)生 1 拍的時(shí)長(zhǎng),演奏的時(shí)間控制通過(guò) ROM 查表的方式來(lái)完成。對(duì)于占用時(shí)間較長(zhǎng)的節(jié)拍一定是拍的整數(shù)倍 ,如全音符為 4 拍(重復(fù) 4),2/4 音符為 2 拍重復(fù) 2 ,1/4 音符為 1 拍重復(fù) 1 。要求演奏時(shí)能循環(huán)進(jìn)行,因此需另外設(shè)置一個(gè)時(shí)長(zhǎng)計(jì)數(shù)器,當(dāng)樂(lè)曲演奏完成時(shí),保證能自動(dòng)從頭開(kāi)始演奏。該計(jì)數(shù)器控制真值表按順序輸出簡(jiǎn)譜。3 系統(tǒng)硬件設(shè)計(jì)

23、FPGA 的介紹現(xiàn)場(chǎng)可編程門(mén)陣列FPGA在結(jié)構(gòu)上由邏輯功能塊排列為陣列,并由可編程的內(nèi)部連線連接這些功能塊,來(lái)實(shí)現(xiàn)一定的邏輯功能。FPGA 的功能由邏輯結(jié)構(gòu)的配置數(shù)據(jù)決定,在工作時(shí),這些配置數(shù)存放在片內(nèi)的 SRAM 或者熔絲圖上。使用 SRAM 的 FPGA,在工作前需要從芯片外部加載配置數(shù)據(jù),這些配置可以存放在片外的 EPROM 或其他存儲(chǔ)體上,人們可以控制加載過(guò)程,在現(xiàn)場(chǎng)修改器件的邏輯功能。FPGA 可以替代其他 PLD 器件或者各種中小規(guī)模數(shù)字邏輯芯片在數(shù)字系統(tǒng)中廣泛應(yīng)用。FPGA 也是實(shí)現(xiàn)各種不同邏輯功能ASIC 的有效方法。FPGA 是進(jìn)行原型設(shè)計(jì)最理想的載體,原型機(jī)的最初框架和是實(shí)

24、現(xiàn)通過(guò) FPGA 驗(yàn)證,可以降低本錢(qián)、縮短開(kāi)發(fā)周期。利用 FPGA 的可重配置功能,可以在使用過(guò)程中,在不改變?cè)O(shè)計(jì)的設(shè)備的硬件電路情況下,改變?cè)O(shè)備功能。APEX系列器件的結(jié)構(gòu)特征是查找表LUT和嵌入式存放器;Mercury 系列器件基于查找表結(jié)構(gòu),其特征是具有時(shí)鐘數(shù)據(jù)恢復(fù)和一個(gè)性能優(yōu)化的核;Excalibur 的結(jié)果特征是基于 ARM 和基于 MIPS 的硬核微處理器。每種器件系列針對(duì)具體的應(yīng)用都具有各自的特點(diǎn)。3.2 FLEX 系列的結(jié)構(gòu)特點(diǎn) 概述FLEX 系列是 Altera 公司推出的主流產(chǎn)品,具有高密度、在線配置、高速度與連續(xù)式布線結(jié)構(gòu)等特點(diǎn)。它的集成度到達(dá)了 10 萬(wàn)門(mén)級(jí),而且,它還

25、是業(yè)界首次集成了嵌入式陣列模塊 EAB 的芯片。5392 個(gè)存放器;采用 0.5umCMOS SRAM 工藝制造;具有在系統(tǒng)可配置特性;在所有 I/O 端口中有 I/O 存放器;3.3V 或 5.0V 工作模式。所謂 EAB,實(shí)際上是一種大規(guī)模的 SRAM 資源,它可以方便地被設(shè)置為 RAM、ROM、FIFO 以及雙口RAM 等存儲(chǔ)器。EAB 的出現(xiàn)極大地拓展了 PLD 芯片的應(yīng)用領(lǐng)域。 FLEX 的特點(diǎn)1高密度,典型門(mén)數(shù)達(dá) 10000250000,邏輯單元數(shù)為 57612160.2功能更強(qiáng)大的 I/O 口引腳,每一個(gè)引腳都是獨(dú)立的三態(tài)門(mén)結(jié)構(gòu),具有可編程的速率控制。3嵌入式陣列塊EAB ,每個(gè)

26、 EAB 提供 2K 比特位,可用來(lái)作存儲(chǔ)器使用或用來(lái)實(shí)現(xiàn)邏輯功能。4邏輯單元采用查找表LUT結(jié)構(gòu)。5采用連續(xù)式的快速通道互連,可精確預(yù)測(cè)信號(hào)在器件內(nèi)部的延時(shí)。6實(shí)現(xiàn)快速加法器和計(jì)數(shù)器的專用進(jìn)位鏈。7實(shí)現(xiàn)高速、多輸入邏輯函數(shù)的專用級(jí)聯(lián)鏈。FLEX10K 系列器件提供六個(gè)專用輸入引腳,驅(qū)動(dòng)觸發(fā)器的控制輸入,以保證高速、低擺率控制信號(hào)的有效分配。這些信號(hào)使用專用布線通道。4 個(gè)全局信號(hào)可由 4 個(gè)專用的輸入引腳驅(qū)動(dòng),也可由內(nèi)部邏輯驅(qū)動(dòng),后者可提供分頻信號(hào)或內(nèi)部異步清零信號(hào)。4 樂(lè)曲硬件演奏電路的層次化設(shè)計(jì)方案根據(jù)層次化的設(shè)計(jì)思路,可把樂(lè)曲硬件演奏電路分為 3 個(gè)模塊,音樂(lè)節(jié)拍發(fā)生器NoteTabs

27、 模塊,音符譯碼電路 ToneTaba 模塊,數(shù)控分頻模塊Speakera 。4.1 音樂(lè)節(jié)拍發(fā)生器 NoteTabs 該模塊將利用 FPGA 的片內(nèi) ROM 存放樂(lè)曲簡(jiǎn)譜真值表,有一個(gè)二進(jìn)制計(jì)數(shù)器為樂(lè)曲數(shù)據(jù)存儲(chǔ)器 ROM 的地址發(fā)生器。該計(jì)數(shù)器的計(jì)數(shù)頻率為 4HZ,即每一個(gè)數(shù)值的停留時(shí)間為,隨著 NoteTabs 中計(jì)數(shù)器按 4HZ 的時(shí)鐘頻率做加法計(jì)數(shù)時(shí),即隨地址增加時(shí),樂(lè)曲數(shù)據(jù)存儲(chǔ)器 ROM 中的音符數(shù)據(jù),將從 ROM 中的輸出口輸向音符譯碼電路 ToneTabas,所以所存的樂(lè)曲就自然的演奏起來(lái)。其 VHDL 源程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_

28、1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY NoteTabs IS PORT ( clk : IN STD_LOGIC; -音樂(lè)節(jié)拍時(shí)鐘 4Hz ToneIndex : OUT INTEGER RANGE 0 TO 15 );END;ARCHITECTURE one OF NoteTabs IS SIGNAL Counter : INTEGER RANGE 0 TO 146;BEGIN CNT8 : PROCESS(clk) -音符共有 147 個(gè),因此定義 8 位計(jì)數(shù)器 BEGIN IF Counter = 146 THEN Counter

29、 = 0; ELSIF (clkEVENT AND clk = 1) THEN Counter ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex NULL; END CASE; END PROCESS;END;圖 音樂(lè)節(jié)拍發(fā)生器元件符號(hào)圖由于時(shí)序仿真時(shí),受 13 位預(yù)置數(shù)及普通計(jì)算機(jī)性能的限制,仿真時(shí)間較長(zhǎng),因?qū)㈩A(yù)置數(shù)模塊修改為 4 位,其他局部對(duì)應(yīng)修改。仿真圖如下:圖 音樂(lè)節(jié)拍發(fā)生器仿真輸出波形4.2 音符譯碼電路 Tone

30、Taba 模塊音符譯碼電路即音調(diào)發(fā)生器實(shí)際上是一個(gè)查表電路,放置 21 個(gè)音樂(lè)簡(jiǎn)譜對(duì)應(yīng)的頻率表,根據(jù)該表為數(shù)控分頻模塊提供所發(fā)音符頻率的初始值,而此數(shù)控分頻模塊入口的停留時(shí)間即為此音符的節(jié)拍數(shù),以 VHDL 程序中僅設(shè)置了“梁祝樂(lè)曲全部音符所對(duì)應(yīng)的音符頻率的初始值,共 12 個(gè),每個(gè)音符停留時(shí)間由音樂(lè)節(jié)拍發(fā)生器的時(shí)鐘頻率決定,在此為 4Hz 信號(hào),這 12 個(gè)值的輸出由對(duì)應(yīng)于音符譯碼電路的 4 位輸入值 Index3.0確定,該值中音符的停留時(shí)間由音樂(lè)節(jié)拍發(fā)生器中的音符數(shù)據(jù)決定,該數(shù)據(jù)重復(fù)的次數(shù)為該音符的節(jié)拍數(shù),如為 2 那么為四二拍,如為 4 那么為四四拍即全音符。 其 VHDL 源程序如下

31、:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY ToneTaba IS PORT ( Index : IN STD_LOGIC_VECTOR(3 DOWNTO 0); -4 位預(yù)置數(shù)查表 CODE : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); HIGH : OUT STD_LOGIC; -音樂(lè)高 8 度指示 Tone : OUT STD_LOGIC_VECTOR(12 DOWNTO 0); -音樂(lè)符對(duì)應(yīng)分頻13 位END;ARCHITECTURE one

32、OF ToneTaba ISBEGIN Search : PROCESS(Index) BEGIN CASE Index IS - 譯碼電路,查表方式,控制音調(diào)的預(yù)置數(shù) WHEN 0000=ToneTone=; CODE = 0011; HIGH Tone=0; CODE = 0101; HIGH Tone=; CODE = 0110; HIGH Tone=; CODE = 0111; HIGH = 0;-4141 WHEN 10001000; HIGH = 1;-4433 WHEN 10011001; HIGH = 1;-4786 WHEN 10101010; HIGH = 1;-5157

33、WHEN 11001100; HIGH = 1;-5640 WHEN 11101110; HIGH = 1;-6166 WHEN 11111111; HIGH NULL; END CASE;END PROCESS;END;在源程序中 Index3.0是音樂(lè)節(jié)拍發(fā)生器輸出的音符數(shù)據(jù);TONE12.0是為數(shù)控分頻模塊提供的音符頻率的初始值,為方便測(cè)試,特設(shè)置了一個(gè)音名代碼顯示輸出 CODE3.0和音高指示信號(hào) HIGH,可以通過(guò)一個(gè)數(shù)碼管或 LED 來(lái)顯示樂(lè)曲演奏時(shí)對(duì)應(yīng)的音符和高音名。CODE 輸出對(duì)應(yīng)該音階簡(jiǎn)譜的顯示數(shù)碼,HIGH 輸出為高電平,指示音階為高音或者中音,HIGH 輸出為低電平時(shí)那

34、么指示音階為低音。圖 4.3 音符譯碼器元件符號(hào)圖仿真圖如下:圖 音符譯碼器仿真輸出波形4.3 數(shù)控分頻模塊 Speakera 設(shè)計(jì)數(shù)控分頻器對(duì) FPGA 的基準(zhǔn)頻率進(jìn)行分頻,得到與各個(gè)音階對(duì)應(yīng)的頻率輸出。數(shù)控分頻模塊由 13 位的加法計(jì)數(shù)器構(gòu)成。當(dāng)計(jì)數(shù)器計(jì)滿是,產(chǎn)生一個(gè)進(jìn)位信號(hào) FullSpkS,該信號(hào)就是用作發(fā)音的頻率信號(hào)。在計(jì)數(shù)器的預(yù)置端給定不同的初始值,其輸出將產(chǎn)生不同的頻率信號(hào),頻率信號(hào)初值 Tone 就是前級(jí)音符譯碼電路的輸出。由分析所知低音時(shí),Tone 值小,分頻比大,進(jìn)位信號(hào) SPKS 的周期長(zhǎng),揚(yáng)聲器發(fā)出的聲音低,Tone 隨音樂(lè)的樂(lè)譜而變化,自動(dòng)控制分頻比,從而實(shí)現(xiàn)數(shù)控分頻

35、,發(fā)生信號(hào)的頻率與 Tone 成正比,這就是利用數(shù)控分頻器演奏音樂(lè)的原理。通過(guò)分頻后其進(jìn)位信號(hào) FullSpkS 是一周期脈沖信號(hào),為有利于驅(qū)動(dòng)揚(yáng)聲器,在音調(diào)輸出時(shí)再進(jìn)行 2 分頻,將脈沖展寬,使之占空比為 50%,揚(yáng)聲器這樣就有足夠的發(fā)聲功率。其 VHDL 源程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY Speakera IS PORT ( clk : IN STD_LOGIC; -音調(diào)頻率信號(hào) 12MHz Tone : IN STD_LOGIC_VECTOR(12 D

36、OWNTO 0); -音樂(lè)符對(duì)應(yīng)分頻 13 位 SpkS : OUT STD_LOGIC ); -聲音輸出END;ARCHITECTURE one OF Speakera IS SIGNAL PreCLK : STD_LOGIC; SIGNAL FullSpkS : STD_LOGIC;BEGIN DivideCLK : PROCESS(clk) VARIABLE Count4 :STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN PreCLK 13 THEN PreCLK = 1; Count4 := 0000; ELSIF clkEVENT AND clk = 1 TH

37、EN Count4 := Count4 + 1; END IF; END PROCESS; GenSpkS : PROCESS(PreCLK, Tone) -13 位預(yù)置數(shù)據(jù)控分頻器 VARIABLE Count13 :STD_LOGIC_VECTOR(12 DOWNTO 0);BEGIN IF PreCLKEVENT AND PreCLK = 1 THEN IF Count13 = 16#1FFF# THEN Count13 := Tone; FullSpkS = 1; ELSE Count13 := Count13 + 1; FullSpkS = 0; END IF; END IF; EN

38、D PROCESS; DelaySpkS : PROCESS(FullSpkS) -2 分頻,蜂鳴器推動(dòng)電路 VARIABLE Count2 : STD_LOGIC;BEGIN IF FullSpkSEVENT AND FullSpkS = 1 THEN Count2 := NOT Count2; IF Count2 = 1 THEN SpkS = 1;Else SpkSCLK4HZ, ToneIndex=ToneIndex);u2:ToneTaba PORT MAP (Index=ToneIndex, Tone=Tone,CODE=CODE,HIGH=HIGH);u3 : Speakera

39、PORT MAP(clk=CLK12MHZ,Tone=Tone, SpkS=SPKOUT );END;圖 曲硬件演奏電路元件符號(hào)圖仿真結(jié)果如下:圖 樂(lè)曲硬件演奏電路輸出波形總結(jié)轉(zhuǎn)眼之間,為期三周的 EDA 電路課程設(shè)計(jì)結(jié)束了,這段時(shí)間里,我受益匪淺。在這三周的時(shí)間里,我對(duì)?VHDL 與可編程邏輯器件應(yīng)用?這門(mén)課程有了更深的理解,同時(shí)將所學(xué)知識(shí)與實(shí)踐有機(jī)的結(jié)合起來(lái),大大增強(qiáng)了我的思考能力與動(dòng)手能力。本次設(shè)計(jì)的是樂(lè)曲硬件演奏電路,根據(jù)設(shè)計(jì)要求,該設(shè)計(jì)模塊由音符查找表電路模塊,時(shí)鐘模塊,數(shù)控分頻器模塊,音樂(lè)節(jié)拍產(chǎn)生模塊電路組成。通過(guò)查找書(shū)籍及一些資料,我逐漸明白了自己的缺乏。通過(guò)與老師同學(xué)的溝通,我

40、逐漸理解了該設(shè)計(jì)的原理。認(rèn)真思考每段程序,我明白了具體的工作原理。在此次設(shè)計(jì)中,我們投入了熱情與努力。在之前對(duì)此一竅不通,到后來(lái)明白了低音高音的編碼、VHDL 的根本程序以及會(huì)掌握Max+plus 的一些根本操作。課程設(shè)計(jì)不僅培養(yǎng)了我的實(shí)際操作能力,也使我們的知識(shí)掌握的更加牢固。同時(shí)增強(qiáng)了我們的自信,培養(yǎng)了我們的獨(dú)立思考能力。在設(shè)計(jì)中,我們也更加理解了團(tuán)隊(duì)的合作精神,與同學(xué)之間互幫互助,共同進(jìn)步。這次設(shè)計(jì)不僅提升了我對(duì)學(xué)習(xí)的樂(lè)趣,更讓我學(xué)會(huì)在以后的學(xué)習(xí)中,應(yīng)該不斷的摸索,不斷實(shí)踐,使我向更高的精神和知識(shí)層次邁向一大步。在以后的學(xué)習(xí)生活中,我會(huì)努力學(xué)習(xí),培養(yǎng)自己動(dòng)手能力,更好的理解所學(xué)的知識(shí),彌

41、補(bǔ)實(shí)踐的缺乏,由理論聯(lián)系到實(shí)際,深入了解科學(xué)的奧秘,真正的把知識(shí)應(yīng)用到實(shí)踐當(dāng)中,以到達(dá)學(xué)以致用的目的。致謝三周的課程設(shè)計(jì)即將結(jié)束,本次設(shè)計(jì)的成功,離不開(kāi)老師及同學(xué)的幫助。在此我對(duì)老師和同學(xué)說(shuō)一聲:謝謝。通過(guò)這次 EDA 課程設(shè)計(jì),我不僅加深了對(duì) EDA 這門(mén)課程的理解,同時(shí)將理論很好地應(yīng)用到實(shí)際當(dāng)中去,學(xué)會(huì)了如何去培養(yǎng)我們的創(chuàng)新精神,從而不斷地戰(zhàn)勝自己,超越自己。在這個(gè)設(shè)計(jì)過(guò)程中,雖然我們花費(fèi)了大量的時(shí)間和精力,更重要的是,我們?cè)趯W(xué)會(huì)獨(dú)立思考的根底上,也懂得合作精神的重要性,學(xué)會(huì)了與他人合作。首先要感謝各位老師的指導(dǎo),老師們的嚴(yán)肅的科學(xué)態(tài)度,嚴(yán)謹(jǐn)?shù)闹螌W(xué)精神,精益求精的工作作風(fēng),深深地感染和鼓勵(lì)

42、著我。在設(shè)計(jì)過(guò)程遇到很多困難,每一次找到老師,老師都會(huì)認(rèn)真解答疑惑,耐心講解,這才使我們能順利完整的完成課程設(shè)計(jì)要求的內(nèi)容,在此對(duì)老師表示崇高的敬意和衷心的感謝。其次要感謝那些幫助過(guò)我的同學(xué),在這次課程設(shè)計(jì)期間各位同學(xué)互相講解,大家在一起集思廣益,查閱相關(guān)資料,才能在很短時(shí)間內(nèi)完成課程設(shè)計(jì)的要求,盡管我們課設(shè)還存在一定的問(wèn)題,因?yàn)槲覀兊闹R(shí)還是有限的,但能有現(xiàn)在的成果也是非常不容易的,付出了許多的努力。在此還要感謝那些幫助過(guò)我的同學(xué)。同時(shí),也非常感謝沈陽(yáng)工程學(xué)院圖書(shū)館的支持,為我們提供了豐富的圖書(shū)資料,使我們擴(kuò)展了知識(shí)面,幫助我們將課程設(shè)計(jì)順利的完成。參考文獻(xiàn)1 曹昕燕.周鳳臣.聶春燕. ED

43、A 技術(shù)與課程設(shè)計(jì). 北京:清華大學(xué)出版社.20062 尹常永.孫延鵬. VHDL 與可編程邏輯器件應(yīng)用. 北京:航空工業(yè)出版社.20063 王松武.于 鑫.武思軍. 電子創(chuàng)新設(shè)計(jì)與實(shí)踐. 北京:國(guó)防工業(yè)出版社.20054 潘松.王國(guó)棟VHDL 實(shí)用教程M 四川:電子科學(xué)大學(xué)出版社.20015 徐志軍.徐光芒CPLDFPGA 的開(kāi)發(fā)與應(yīng)用M.北京:電子工業(yè)出版社.20026 ALTERA DigitalLibrary 20027 江國(guó)強(qiáng). EDA 技術(shù)與應(yīng)用M. 北京:電子工業(yè)出版社,20058 楊國(guó)慶. 基于 FPGA 的樂(lè)曲演奏器片系統(tǒng)的分析J.現(xiàn)代電子技術(shù).2006.19 期9 褚振勇.

44、翁木云FPGA 設(shè)計(jì)及應(yīng)用M. 西安:西安電子科技大學(xué)出版社.200210 Altera Data Book.199911 12 Alera 公司13 Altera 公司.MAX+PLUSII 簡(jiǎn)易用戶使用入門(mén)指南.199814 盧毅.VHDL 與數(shù)字電路設(shè)計(jì). 北京:科學(xué)出版社.200115 付家才.EDA 原理與應(yīng)用. 北京:化學(xué)工業(yè)出版社.200116EDA 設(shè)計(jì)與實(shí)踐 北京:國(guó)防工業(yè)出版社 2006附錄 1 程序清單LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY Songer

45、 IS - 頂層設(shè)計(jì) PORT ( CLK12MHZ : IN STD_LOGIC; -音調(diào)頻率信號(hào) CLK4HZ : IN STD_LOGIC; -節(jié)拍頻率信號(hào) CODE : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); -簡(jiǎn)譜碼輸出顯示 HIGH : OUT STD_LOGIC; -高 8 度指示 SPKOUT : OUT STD_LOGIC ); -聲音輸出 END;ARCHITECTURE one OF Songer IS COMPONENT NoteTabs -元件 u1 例化 PORT ( clk : IN STD_LOGIC; ToneIndex : OUT

46、 STD_LOGIC_VECTOR(3 DOWNTO 0 ) ); END COMPONENT; COMPONENT ToneTaba -元件 u2 例化 PORT ( Index : IN STD_LOGIC_VECTOR(3 DOWNTO 0); CODE : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); HIGH : OUT STD_LOGIC; Tone : OUT STD_LOGIC_VECTOR12 DOWNTO 0 ); END COMPONENT; COMPONENT Speakera -元件 u3 例化 PORT ( clk : IN STD_LOGIC

47、; Tone :IN STD_LOGIC_VECTOR(12 DOWNTO 0); SpkS : OUT STD_LOGIC ); END COMPONENT; SIGNAL Tone :STD_LOGIC_VECTOR12 DOWNTO 0; SIGNAL ToneIndex :STD_LOGIC_VECTOR(3 DOWNTO 0);BEGIN - 安裝 U1, U2, U3u1 : NoteTabs PORT MAP (clk=CLK4HZ, ToneIndex=ToneIndex);u2:ToneTaba PORT MAP (Index=ToneIndex, Tone=Tone,COD

48、E=CODE,HIGH=HIGH);u3 : Speakera PORT MAP(clk=CLK12MHZ,Tone=Tone, SpkS=SPKOUT );END;LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY NoteTabs IS PORT ( clk : IN STD_LOGIC; -音樂(lè)節(jié)拍時(shí)鐘 4Hz ToneIndex : OUT INTEGER RANGE 0 TO 15 );END;ARCHITECTURE one OF NoteTabs IS SIGNAL Cou

49、nter : INTEGER RANGE 0 TO 146;BEGIN CNT8 : PROCESS(clk) -音符共有 147 個(gè),因此定義 8 位計(jì)數(shù)器 BEGIN IF Counter = 146 THEN Counter = 0; ELSIF (clkEVENT AND clk = 1) THEN Counter ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneInd

50、ex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneInd

51、ex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneInd

52、ex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneIndex ToneInd

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論