【正文】
ex=8。 when 54=ToneIndex=9。 when 70=ToneIndex=8。 when 86=ToneIndex=7。 畢業(yè)論文 附錄 C VHDL 源代碼 22 when 102=ToneIndex=7。 when 118=ToneIndex=5。 when 04=ToneIndex=6。 when 20=ToneIndex=3。 when 36=ToneIndex=5。 when 52=ToneIndex=2。 when 68=ToneIndex=6。 when 84=ToneIndex=2。 when 100=ToneIndex=3。 when 116=ToneIndex=6。 when 02=ToneIndex=5。 when 18=ToneIndex=5。 when 34=ToneIndex=1。 when 50=ToneIndex=1。 when 46=ToneIndex=2。 when 30=ToneIndex=1。 when 14=ToneIndex=7。 when others=NULL。 when 112=ToneIndex=5。 when 96=ToneIndex=3。 when 80=ToneIndex=5。 when 64=ToneIndex=3。 when 48=ToneIndex=2。 when 32=ToneIndex=0。 when 16=ToneIndex=3。 elsif dig=2 then濤聲依舊 case Counter is when 00=ToneIndex=0。 when 114=ToneIndex=6。 when 98=ToneIndex=7。 when 82=ToneIndex=7。 when 66=ToneIndex=6。 when 50=ToneIndex=7。 when 34=ToneIndex=6。 when 18=ToneIndex=8。 when 02=ToneIndex=6。 entity NoteTabs is PORT(clk: IN STD_LOGIC。中音 5 when 6 = Tone=5918。039。 else Count11:=Count11+1。 if Count4=11 THEN PreCLK=39。 when 15 = lights=100000000。 end。 use 。 Tone: IN INTEGER RANGE 0 TO 161FFF。50MHZ CLK4HZ: IN STD_LOGIC。 圖 6 開關(guān)電路及彩燈電路 畢業(yè)論文 第 5 章 系統(tǒng)調(diào)試 12 第 5 章 系統(tǒng)調(diào)試 系統(tǒng)調(diào)試 把程序下載到芯片內(nèi)部后,將第四章所介紹的所有外圍電路與 CPLD連接后,形成整個系統(tǒng) 。 畢業(yè)論文 第 4 章 外圍電路設(shè)計 10 第 4 章 外圍電路設(shè)計 時鐘電路 這次的設(shè)計中我們除了由內(nèi)部產(chǎn)生 4MHZ 的頻率外,還要通過外圍電路接入音樂節(jié)奏時鐘。 when 03=ToneIndex=6。附點的意義在于增長原音符時值的一半,常用于四分音符和小于四分音符的各種音符之后。 when 0100=dig=3。039。根據(jù)可變模值計數(shù)器的設(shè)計原理及音符的分頻系數(shù),可計算出樂曲中各音符的預(yù)置數(shù),如表 所示。其 中中 心模塊 式 CPLD芯片,內(nèi)部 由音調(diào)發(fā)生器、音樂編碼器和彩燈閃爍控制器三個模塊 組成 。 外圍電路的設(shè)計 這次設(shè)計中用到了 4HZ 的頻率,如果直接用自帶的 50MHZ 來分頻的話會給芯片的內(nèi)部資源占用太多, 而且不方便每 次在程序中對時鐘調(diào)試,所以 我們 在外部單獨接入一個時鐘信號,提供給音樂時鐘。 通過本次設(shè)計,可以 實 現(xiàn)出可編程邏輯器件 CPLD在電子設(shè)計領(lǐng)域的應(yīng)用。 設(shè)計 的基本內(nèi)容 CPLD 的設(shè)計 1. 在 CPLD 內(nèi)部設(shè)計出 揚聲器發(fā)生及分頻模塊 、 音符預(yù)置數(shù)模塊 、 音符儲存模塊三個模塊,再配 開關(guān)選擇模塊 、 彩燈閃爍控制模塊 等必要的外圍電路,從而實現(xiàn)四首音畢業(yè)論文 第 1 章 緒論 2 樂選擇播放,并配有隨音樂節(jié)奏 產(chǎn)生燈柱效果 等功能的 MIDI音樂播放器 。 本次設(shè)計核心模塊 CPLD采用 ALTERA公司 MAX II系列的 EPM240T100C芯片。畢業(yè)論文 第 3 章 音樂播放器設(shè)計 4 第 3 章 音樂播放器設(shè)計 工作原理 MIDI 音樂的基本原理為:組成樂曲的每一個音符的頻率值及其持續(xù)的時間是樂曲能連續(xù)演奏的兩個基本數(shù)據(jù),因此只要控制輸出到揚聲器的激勵信號頻率的高 低和每一個頻率信號的持續(xù)時間,就可以使揚聲器發(fā)生連續(xù)的樂曲。139。直接 case 語句直接對一個四位二進制數(shù)組進行選擇,如 1000 為第一首歌曲, 0100 為第二首歌曲, 0010 為第三首歌曲, 0001為第四首歌曲 ,其他則不進行播放 。 ,稱為附點。 而 我們通過對音符頻率的編碼進行樂譜的彈奏與: 表 不同音符對應(yīng)編碼表 音名 休止符 中音 1 中音 2 中音 3 中音 4 中音 5 中音 6 高音 7 編碼 0 1 2 3 4 5 6 7 音名 高音 1 高音 2 高音 3 高音 4 高音 5 低音 5 低音 6 低音 7 編碼 8 9 10 11 12 13 14 15 如歌曲中的龍的傳人第一節(jié): when 00=ToneIndex=6。 四首 歌曲選擇 這次設(shè)計的 MIDI音樂播放器所選擇的歌曲,是需要一些比較簡單且歌曲為 1/4 拍的歌曲,音符符合芯片中所儲存的 16 個音符的歌曲。 圖 5 音頻功率放大電路圖 音樂彩燈閃爍 控制電路 如圖 6所示。畢業(yè)論文 參考文獻 14 參考文獻 [1] 張麗萍,樓勇,朱堯富 .利用 VHDL語言設(shè)計數(shù)字電路 [J]. 機械與電氣 .. [2] 李洋 . 現(xiàn)代電子設(shè)計與創(chuàng)新 [M].北京:中國電力出版社, 2021. [3] famousky. EDA技術(shù)的概念及范疇 [EB/OL]. 20211226. [4] 吳冰 , 李森森 . EDA技術(shù)的發(fā)展與應(yīng)用 [J],今日電子 .. [5] 趙紅梅 , 王召東 .可編程邏輯器件 FPGA與 CPLD的發(fā)展與應(yīng)用一例 [J].平頂山工學(xué)院學(xué)報 .. [6] 童世華,付蔚 .談 ASIC、 FPGA/CPLD 的區(qū)別與發(fā)展 [J].重慶職業(yè)技術(shù)學(xué)院學(xué)報 .. [7] 趙鑫,蔣亮,齊兆群,李曉凱. VHDL與數(shù)字電路設(shè)計 [M]. 北京:機械工業(yè)出版社, . [8] 王曉麗 .可編程邏輯器件 CPLD/FPGA的發(fā)展 [J]. 科 技信息 .. [9] 楊寶強,何偉,趙東曄 . CPLD仿真存在的問題及解決方法 [J]. 空進工程大學(xué)學(xué)報 (自然科學(xué)版 ).. [10] EDA技術(shù)課程設(shè)計及實訓(xùn)指導(dǎo)書,龔蘭芳編 [11]EDA技術(shù)實驗指導(dǎo)書,龔蘭芳編 畢業(yè)論文 附錄 A 總電路圖 15 附錄 A 總電路圖 畢業(yè)論文 附錄 B PCB 圖 16 附錄 B PCB 圖 附錄 C VHDL 源代碼 頂層設(shè)計模塊 LIBRARY IEEE。 dig:out integer range 0 to 4)。 u5: kg port map(switch=switch,dig=dig1)。 use 。 when 12 = lights=111111111。 begin process(clk) variable count4:integer range 0 to 11。 then 畢業(yè)論文 附錄 C VHDL 源代碼 19 if Count11=161FFF then count11:=Tone。 then SpkS=39。中音 2 when 3 = Tone=5157。 end。 end process。 when 15=ToneIndex=9。 when 31=ToneIndex=6。 when 47=ToneIndex=9。 when 63=ToneIndex=10。 when 79=ToneIndex=9。 when 95=ToneIndex=6。 when 111=ToneIndex=7。 when 127=ToneIndex=6。 when 13=ToneIndex=5。 when 29=ToneIndex=3。 when 45=ToneIndex=14。 when 61=ToneIndex=5。 when 77=ToneIndex=2。 畢業(yè)論文 附錄 C VHDL 源代碼 24 when 93=ToneIndex=14。 when 109=ToneIndex=1。 when 125=ToneIndex=5。 when 11=ToneIndex=8。 when 27=ToneIndex=2。 when 43=ToneIndex=6。 when 53=ToneIndex=2。 when 37=ToneIndex=1。 when 21=ToneIndex=6。 when 05=ToneIndex=8。 when 119=ToneIndex=3。 when 103=ToneIndex=3。 when 87=ToneIndex=1。 when 71=ToneIndex=1。 when 55=ToneIndex=2。 when 39=ToneIndex=5。 when 23=ToneIndex=6。 when 07=ToneIndex=3。 when 121=ToneIndex=6。 when 105=ToneIndex=7。 when 89=ToneIndex=6。 when 73=ToneIndex=9。 when 57=ToneIndex=10。 when 41=ToneIndex=9。 when 25=ToneIndex=6。 when 09=ToneIndex=9。event and clk=39。高音 5 when 13 = Tone=3089。 entity ToneTaba is PORT(index: IN INTEGER RANGE 0 TO 15。 begin if FullSpkS39。 end if。 entity Speakera is PORT(clk: IN STD_LOGIC。 when 6 = lights=111110000。 when 1000=dig=4。8191 SIGNAL ToneIndex: INTEGER RANGE 0 TO 15。 ToneIndex: OUT INTEGER RANGE 0 TO 15)。由 添加 一 首歌曲 到四首歌曲 選擇播放,彩燈閃爍,不同音樂的調(diào)試,設(shè)計更人性化,合理化。我們要求輸出的頻率為 4Hz, C3=47uf,所以 R4+R5應(yīng)為 。 when 10=ToneIndex=9。 帶有兩個附點的單純音符稱為復(fù)附點音符,第二個附點表示增長第一個附點時值的一半,即音符時值的四分之 。 畢業(yè)論文 第 3 章 音樂播放器設(shè)計 8 顯然,單用以上七個音是無法表現(xiàn)眾多的音樂形象的。采用加載初始值而不將分頻輸出譯碼反饋,可以有效地減少設(shè)計占用可編程邏輯器件的資源。 程序如: process(PreCLK, Tone)置數(shù)分頻 variable Count11: integer range 0 to 161FFF。老師所提供的 CPLD型芯片,其內(nèi)部邏輯單元數(shù)為 240個,只要對程序進行一定的優(yōu)化處理,即可以滿足所有的設(shè)計要求。這種基于查找表的架構(gòu)在最小的 I/O 焊盤約束的空間內(nèi)提供了最多的邏輯容量。 5. 培養(yǎng) 我們 分析、解決實際問題的能力和勇于創(chuàng)新的科學(xué)精神。 4. 掌握電子線路的安裝、焊接和調(diào)試的基本技能。這些超級性能是在提供了所有 MAX系列 CPLD 先進特性的架構(gòu)的基礎(chǔ)上,根據(jù) Altera專家們的意見而重新采用基于查找表的架構(gòu)而得到的。 畢業(yè)論文 第 2 章 總體設(shè)計概述 3 圖 2 音樂播放器的工作原理圖 CPLD 設(shè)計思路 在 這里我們用的是老師所提供的學(xué)習(xí)開發(fā)板,板中所用的就是 EPM240 中的 CPLD芯片。各音階頻率及相應(yīng)的分頻如表 。對于不同的分頻系數(shù),只要加載不同的初始值即可。因此,要掌握簡譜的規(guī)律,首先必須認識各種音符,理解其意義。例如; 附點二分音符: 不用 表示。 when 09=ToneIndex=9。