基于fpga的音樂播放器的設(shè)計(jì)_第1頁
基于fpga的音樂播放器的設(shè)計(jì)_第2頁
基于fpga的音樂播放器的設(shè)計(jì)_第3頁
基于fpga的音樂播放器的設(shè)計(jì)_第4頁
基于fpga的音樂播放器的設(shè)計(jì)_第5頁
已閱讀5頁,還剩14頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè)1 引言1.1 關(guān)于 EDA 技術(shù)隨著科學(xué)技術(shù)的進(jìn)步,電子器件和電子系統(tǒng)設(shè)計(jì)方法日新月異,電子設(shè)計(jì)自動(dòng)化(Electronics Design Automation,EDA)技術(shù)正是適應(yīng)了現(xiàn)代電子產(chǎn)品設(shè)計(jì)的要求,吸收了多學(xué)科最新成果而形成的一門新技術(shù)?,F(xiàn)如今掌握 EDA 技術(shù)是電子信息類專業(yè)的學(xué)生、工程技術(shù)人員所必備的基本能力和技能。傳統(tǒng)電子電路的設(shè)計(jì),首先要對(duì)系統(tǒng)進(jìn)行分析,然后按功能對(duì)系統(tǒng)進(jìn)行劃分,接下來就要選擇特定芯片,焊接成 PCB 電路板,最后對(duì)成品 PCB 電路板進(jìn)行調(diào)試。這樣的設(shè)計(jì)沒有靈活性可言,搭成的系統(tǒng)需要的芯片種類多且數(shù)目大,而且對(duì)于

2、電路圖的設(shè)計(jì)和電路板的設(shè)計(jì)都需要很大的工作量,工作難度也很高。然而,隨著可編程器件和 EDA 技術(shù)的發(fā)展,傳統(tǒng)設(shè)計(jì)的劣勢被克服,采用可編程邏輯器件基于芯片的設(shè)計(jì)方法,期間的內(nèi)部邏輯和引腳可以由設(shè)計(jì)者自行決定,大大提高了設(shè)計(jì)的靈活性,提高了工作效率;同時(shí),將系統(tǒng)集成在一個(gè)芯片上的設(shè)計(jì),使系統(tǒng)具有體積小、功耗低、可靠性高等特點(diǎn)。EDA 技術(shù)的發(fā)展大致經(jīng)歷了三個(gè)階段:20 世紀(jì) 70 年代的 CAD(計(jì)算機(jī)輔助設(shè)計(jì))階段、20 世紀(jì) 80 年代的 CAE(計(jì)算機(jī)輔助工程)階段、20 世紀(jì) 90 年代后的 EDA(電子設(shè)計(jì)自動(dòng)化)階段。以下主要介紹第三個(gè)階段。EDA 技術(shù)即電子設(shè)計(jì)自動(dòng)化技術(shù),它是以可

3、編程邏輯器件(PLD)為載體,以硬件描述語言(HDL)為主要的描述方式,以 EDA 軟件為主要的開發(fā)軟件的電子設(shè)計(jì)過程。它主要采用“自頂向下”的設(shè)計(jì)方法,設(shè)計(jì)流程主要包括:設(shè)計(jì)輸入、綜合、仿真、適配、下載。EDA 技術(shù)主要有以下特征:(1)高層綜合的理論和方法取得進(jìn)展,從而將 EDA 設(shè)計(jì)層次由 RT 級(jí)提高到了系統(tǒng)級(jí),并推出了相應(yīng)的系統(tǒng)級(jí)綜合優(yōu)化工具,大大縮短了復(fù)雜 ASIC 的設(shè)計(jì)周期。(2)采用硬件描述語言來描述 10 萬門以上的設(shè)計(jì),并形成了 VHDL 和 Verilog-HDL 兩種標(biāo)準(zhǔn)硬件描述語言。(3)采用平面規(guī)劃技術(shù)對(duì)邏輯綜合和物理版圖設(shè)計(jì)聯(lián)合管理,做到在邏輯設(shè)計(jì)綜合早期階段就

4、考慮到物理設(shè)計(jì)信息的影響。(4)可測性綜合設(shè)計(jì)。(5)為帶有嵌入式 IP 核的 ASIC 設(shè)計(jì)提供軟、硬件協(xié)同設(shè)計(jì)工具。(6)建立并行設(shè)計(jì)工具框架結(jié)構(gòu)的集成化設(shè)計(jì)環(huán)境,以適應(yīng)當(dāng)今 ASIC 規(guī)模大而復(fù)雜、數(shù)字與模擬電路并存、硬件與軟件設(shè)計(jì)并存、產(chǎn)品上市速度快等特點(diǎn)。總而言之,EDA 技術(shù)的出現(xiàn),給電子信息產(chǎn)業(yè)帶來了革命性的變革。精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè)1.2 關(guān)于 VHDLVHDL 是一種硬件描述語言,它可以對(duì)電子電路和系統(tǒng)的行為進(jìn)行描述,基于這種描述,結(jié)合相關(guān)的軟件工具,可以得到所期望的實(shí)際電路與系統(tǒng)。使用 VHDL 語言描述的電路,可以進(jìn)行綜合和仿真。然而,值得注意的是,

5、盡管所有 VHDL 代碼都是可仿真的,但并不是所有代碼都能綜合。VHDL 被廣泛使用的基本原因在于它是一種標(biāo)準(zhǔn)語言,是與工具和工藝無關(guān)的,從而可以方便地進(jìn)行移植和重用。VHDL 兩個(gè)最直接的應(yīng)用領(lǐng)域是可編程邏輯器件(PLD)和專用集成電路(ASIC),其中可編程邏輯器件包括復(fù)雜可編程邏輯器件(CPLD)和現(xiàn)場可編程門陣列(FPGA)。關(guān)于 VHDL 最后要說明的是:與常規(guī)的順序執(zhí)行的計(jì)算機(jī)程序不同,VHDL從根本上講是并發(fā)執(zhí)行的。在 VHDL 中,只有在進(jìn)程(PROCESS)、函數(shù)(FUNCTION)和過程(PROCEDURE)內(nèi)部的語句才是順序執(zhí)行的。1.3EDA 工具目前有多種 EDA 工

6、具支持采用 VHDL 進(jìn)行電路綜合、仿真以及實(shí)現(xiàn)。比較常見的是 Altera 公司的 Quartus開發(fā)平臺(tái)和 Xilinx 公司的 ISE 開發(fā)平臺(tái)。這些平臺(tái)中使用的綜合工具和仿真工具通常由專業(yè)的 EDA 廠商提供。本次設(shè)計(jì)中所使用的平臺(tái)正是 Quartus7.2,它是 Altera 公司提供的一套集成了編譯、布局布線和仿真工具在內(nèi)的綜合開發(fā)環(huán)境。它能完成從代碼輸入到編譯到仿真再到物理實(shí)現(xiàn)的全部設(shè)計(jì)流程。1.4 有關(guān)于本次課程設(shè)計(jì)本次課程設(shè)計(jì)要求使用 EDA 工具,設(shè)計(jì)實(shí)現(xiàn)簡易音樂演奏器,理解音名與頻率的關(guān)系及數(shù)控分頻原理,經(jīng)過對(duì)整體進(jìn)行模塊化分析、編程、綜合、仿真及最終下載,完整實(shí)現(xiàn)簡易音

7、樂器的播放功能。我們知道,與利用單片機(jī)來實(shí)現(xiàn)樂曲演奏相比,以純硬件完成樂曲演奏電路的邏輯要復(fù)雜得多,如果不借助于功能強(qiáng)大的 EDA 工具與硬件描述語言,僅憑傳統(tǒng)的數(shù)字邏輯技術(shù),即使最簡單的演奏電路也難以實(shí)現(xiàn)。在后面的章節(jié)中會(huì)詳細(xì)介紹利用 EDA 技術(shù)實(shí)現(xiàn)簡易音樂演奏器的過程。精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè)2 設(shè)計(jì)實(shí)現(xiàn)2.1 準(zhǔn)備知識(shí)在本次設(shè)計(jì)中采用了鈴聲祝你生日快樂作為要播放的樂曲,它的旋律如下: 5 5 |6 5 1|7 5 5|6 5 2|1 5 5|5 3 1|7 6 |0 0 4 4|3 1 2|1 根據(jù)聲樂知識(shí),組成樂曲的每個(gè)音符的發(fā)音頻率值及其持續(xù)的時(shí)間是樂曲能連續(xù)演奏

8、所需的兩個(gè)基本要素,獲取這兩個(gè)要素所對(duì)應(yīng)的數(shù)值以及通過純硬件的手段來利用這些數(shù)值實(shí)現(xiàn)所希望樂曲的演奏效果是本實(shí)驗(yàn)的關(guān)鍵。表 2-1 為簡譜中音名與頻率的對(duì)應(yīng)關(guān)系。表 2-1 簡譜音名與頻率的關(guān)系音名頻率(Hz)音名頻率(Hz)中音 1523高音 11047中音 2587高音 21175中音 3659高音 31382中音 4698高音 41397中音 5784高音 51568中音 6880高音 61760中音 7988高音 71976頻率點(diǎn)及音符與音譜對(duì)應(yīng)定義如表 2-2 所示。表 2-2 音符語音譜定義音符對(duì)應(yīng)頻率點(diǎn)對(duì)應(yīng)音譜區(qū)別高中低音02047001109111211952131288314

9、133141514095161479617154171815691291621221016683211168942121728521317636214179472精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè)2.2 樂曲演奏電路的結(jié)構(gòu)示意本設(shè)計(jì)由四個(gè)模塊組成,如圖 2-3 所示。圖 2-3 樂曲演奏電路的結(jié)構(gòu)示意2.3 樂曲演奏電路的子結(jié)構(gòu)頂層結(jié)構(gòu)所包含的模塊分別有音調(diào)發(fā)生器(ydfsq)模塊、手動(dòng)自動(dòng)選擇(bmux)模塊、音調(diào)編碼器(ydbmq)模塊及數(shù)控分頻器(skfpq)模塊。以下便是對(duì)各個(gè)子模塊的分析。2.3.1 音調(diào)發(fā)生器模塊1.音調(diào)發(fā)生器模塊的功能在此模塊中設(shè)置了一個(gè) 8 位二進(jìn)制計(jì)數(shù)

10、器(計(jì)數(shù)最大值為 107) ,這個(gè)計(jì)數(shù)器的計(jì)數(shù)頻率選為 4Hz,即每一計(jì)數(shù)值的停留時(shí)間為 0.25s,恰好為當(dāng)全音符設(shè)為 1s時(shí),四四拍的 4 分音符的持續(xù)時(shí)間。例如,ydfsq 在以下的 VHDL 邏輯描述中,祝你生日快樂樂曲的第一個(gè)音符為“5”,此音在邏輯中停留了 4 個(gè)時(shí)鐘節(jié)拍,即為 1s 時(shí)間,相應(yīng)地所對(duì)應(yīng)“1”音符分頻預(yù)置數(shù)為 1409 在 skfpq 的輸入端停留了1s。隨著 ydfsq 中的計(jì)數(shù)器按 4Hz 的時(shí)鐘頻率做加法計(jì)數(shù)時(shí),樂譜逐次被選取,祝你生日快樂樂曲就開始自然連續(xù)而且循環(huán)的演奏起來了。2.音調(diào)發(fā)生器模塊的 VHDL 源程序library ieee;use ieee.

11、std_logic_1164.all;entity ydfsq isport(clk:in std_logic; clkj:in std_logic_vector(1 downto 0); rst:in std_logic; toneindex:out integer range 0 to 14);end ydfsq;architecture bhv of ydfsq issignal counter:integer range 0 to 107;signal clker:std_logic;音調(diào)發(fā)生手動(dòng)自動(dòng)選擇音調(diào)編碼數(shù)控分頻精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè)signal count

12、4:integer;begin process(clk)beginif clkevent and clk=1 then if clkj=10 then count40 then clker=not clker;count4=0; end if; elsif clkj=01 then count42 then clker=not clker;count4=0; end if; else count41 then clker=not clker;count4=0; end if; end if;end if;end process;process(clker,counter,rst)beginif

13、 rst=1 thencounter=0; elsif counter=107 then counter=0; elsif clkerevent and clker = 1 then countertoneindextoneindextoneindextoneindextoneindextoneindextoneindextoneindextoneindexNULL;end case;end process;end bhv;3.音調(diào)發(fā)生器模塊的仿真圖圖2-4 音調(diào)發(fā)生器模塊的仿真波形圖通過仿真圖可以清楚的看到,時(shí)鐘 clk 由 0 開始計(jì)數(shù),每計(jì)一次數(shù)輸出toneindex 的值隨之發(fā)生一定的

14、變化,只不過根據(jù)樂譜的不同,輸出的變化也不盡相同。然后把輸出 toneindex 輸入到音調(diào)編碼器模塊,進(jìn)行下一步編碼工作。于是,由仿真圖印證了 ydfsq 模塊逐次選取音符的功能。2.3.2 手動(dòng)自動(dòng)選擇模塊1.手動(dòng)自動(dòng)選擇模塊的功能根據(jù)設(shè)計(jì)的要求,該簡易樂曲演奏器能實(shí)現(xiàn)手動(dòng)或自動(dòng)演奏樂曲的功能。于是,可通過一個(gè)按鍵 cs 來進(jìn)行自動(dòng)與手動(dòng)的選擇,當(dāng) cs 按下時(shí),樂曲自動(dòng)演奏,其他情況下均為手動(dòng)演奏樂曲,即可以通過按下其他的按鍵(與 cs 相連的按鍵除外)來控制不同的音符。與此同時(shí),還需要一個(gè)復(fù)位信號(hào) rst 來控制該演奏器是否工作,當(dāng) rst 為 1 時(shí),停止演奏,為 0 時(shí),可以演奏。

15、以上提到的手動(dòng)與自動(dòng)的選擇只能在 rst 為 0 時(shí)有效。2.手動(dòng)自動(dòng)選擇模塊的 VHDL 源程序精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè)library ieee;use ieee.std_logic_1164.all;entity bmux isport(d1:in integer range 0 to 14; d2:in integer range 0 to 14; cs,rst:in std_logic; q:out integer range 0 to 14); end bmux;architecture bhv of bmux isbegin process(cs,rst)begi

16、nif rst=1then qqqqtone=2047;code=0;code1tone=1091;code=1;code1tone=1195;code=2;code1tone=1288;code=3;code1tone=1331;code=4;code1tone=1409;code=5;code1tone=1479;code=6;code1tone=1541;code=7;code1tone=1569;code=1;code1tone=1621;code=2;code1tone=1668;code=3;code1tone=1689;code=4;code1tone=1728;code=5;c

17、ode1tone=1763;code=6;code1tone=1794;code=7;code1NULL;end case;end process;end bhv; 3.音調(diào)編碼器模塊的仿真圖圖 2-6 音調(diào)編碼器模塊的仿真波形圖在此仿真圖中從上到下依次代表輸出 code、輸出 code1、輸入 index 和輸出tone。通過此仿真圖能清楚的看到當(dāng)音符分別為 3、5、8、13、0 時(shí),它們所對(duì)應(yīng)的分頻預(yù)置數(shù) tone 分別是 1288、1409、1569、1763、2047;所對(duì)應(yīng)的音譜 code 分別是 3、5、1、6、0;所對(duì)應(yīng)的高中低音 code1 又分別是 1(中) 、1(中) 、2

18、(高) 、2(高) 、0(低) 。其中 code、code1 能分別在兩個(gè)數(shù)碼管上顯示,而 tone 則輸入到數(shù)控分頻模塊作為分頻的依據(jù)。于是,由仿真圖印證了音調(diào)編碼模塊傳送預(yù)置數(shù)及顯示功能。2.3.4 數(shù)控分頻器模塊1.數(shù)控分頻器模塊的功能該模塊的 clk 端輸入一個(gè)具有較高頻率(本實(shí)驗(yàn)為 12MHz)的信號(hào),通過skfpq 分頻后由 spkout 輸出。由于直接從數(shù)控分頻器中出來的輸出信號(hào)是脈寬極窄的脈沖信號(hào),為了便于驅(qū)動(dòng)喇叭,需另加一個(gè) D 觸發(fā)器均衡其占空比,也即作二分頻處理。skfpq 對(duì) clk 輸入信號(hào)的分頻比由 11 位預(yù)置數(shù) tone10.0決定。spkout的輸出頻率將決定

19、每一音符的音調(diào),這樣分頻計(jì)數(shù)器的預(yù)置數(shù) tone10.0與 spkout的輸出頻率就有了對(duì)應(yīng)關(guān)系。例如在 ydbmq 模塊中取 tone10.0=1479,作為發(fā)音精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè)符為“6”音的信號(hào)頻率。2.數(shù)控分頻器模塊的 VHDL 源程序library ieee;use ieee.std_logic_1164.all;entity skfpq isport(clk:in std_logic; tone:in integer range 0 to 2047; spks:out std_logic);end skfpq;architecture bhv of skfp

20、q issignal preclk:std_logic;signal fullspks:std_logic;begin process(clk)variable count4:integer range 0 to 14;begin preclk11 then preclk=1;count4:=0;elsif clkevent and clk=1 then count4:=count4+1;end if;end process;process(preclk,tone)variable count11:integer range 0 to 2047;begin if preclkevent and

21、 preclk=1then if count11=2047 then count11:=tone;fullspks=1; else count11:=count11+1;fullspks=0; end if;end if;end process;精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè)process(fullspks)variable count2:std_logic;beginif fullspksevent and fullspks=1 then count2:=not count2; if count2=1then spks=1; else spksclk1,clkj=clkj,ton

22、eindex=x,rst=rst);u2:bmux port map(d1=d1,d2=x,cs=cs,rst=rst,q=y);u3:ydbmq port map(index=y,code=code,code1=code1,tone=z);u4:skfpq port map(clk=clk2,tone=z,spks=spks);end bhv;精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè)2.4.2 頂層音樂演奏器原理圖經(jīng)過了各個(gè)子模塊的分析與驗(yàn)證后,我們只需將各個(gè)子模塊之間的輸入輸出端、子模塊與整體電路之間的輸入輸出端進(jìn)行正確的硬件連接就得到了頂層音樂演奏器的原理圖,如圖 2-8 所示:圖 2

23、-8 樂曲演奏電路的頂層原理圖2.4.3 頂層程序仿真波形圖圖 2-9 頂層程序的仿真波形圖首先,介紹一下總體程序中各個(gè)引腳的作用及硬件連接情況:輸入 clk1 是一個(gè)頻率較小的時(shí)鐘信號(hào),在進(jìn)行硬件下載時(shí)它與實(shí)驗(yàn)箱上 clock0 模塊的 16Hz 頻率相連,它決定著樂曲演奏的快慢;輸入 clk2 是一個(gè)頻率較大的時(shí)鐘信號(hào),因?yàn)橐獙?duì)它進(jìn)行多次不同的分頻,下載時(shí)它與實(shí)驗(yàn)箱上 clock9 模塊的 12MHz 頻率相連;輸入 d13.0是當(dāng)手動(dòng)演奏時(shí)自己確定的音符,下載時(shí)它與實(shí)驗(yàn)箱上的按鍵6、5、4、3 相連;輸入 rst 和 cs 分別是整體復(fù)位端和演奏方式選擇端,它們分別與實(shí)驗(yàn)箱上的按鍵 2、

24、1 相連;輸出 code 和 code1 分別用來顯示音譜與高中低音,它們分別與實(shí)驗(yàn)箱上的數(shù)碼管 1 和 2 相連(提示:選擇工作模式為模式 5) ;輸出spks 要與實(shí)驗(yàn)箱上的喇叭相連,用來發(fā)出聲音。精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè)其次,頂層電路的仿真波形圖是否正確依賴于各個(gè)子模塊的功能是否完善,同時(shí)頂層電路的功能實(shí)現(xiàn)又驗(yàn)證了各個(gè)子模塊的正確性,二者相互依存。3 結(jié)論(1) 本次簡易樂曲演奏器的設(shè)計(jì)經(jīng)過了整體分析、模塊化分析、整體與模塊的仿真分析這樣三個(gè)步驟,硬件實(shí)現(xiàn)了整體復(fù)位、按鍵選擇演奏方式、循環(huán)演奏以及數(shù)碼管顯示樂譜的功能。(2) 在做數(shù)控分頻器模塊的仿真時(shí)一定要處理好時(shí)序問題。(3) 本次設(shè)計(jì)可以說達(dá)到了設(shè)計(jì)要求,但尚有需要改進(jìn)的地方。隨著樂譜的復(fù)雜程度加大,如果依然在音調(diào)發(fā)生器的程序中通過時(shí)鐘計(jì)數(shù)來決定音符的輸出,會(huì)加大編程的繁雜度,這時(shí)一個(gè)很好的解決辦法就是把將要演奏的樂譜存放在人為開辟的存儲(chǔ)空間里,這樣只需要在相應(yīng)地址中讀出音符即可。精選優(yōu)質(zhì)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(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)論