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

下載本文檔

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

文檔簡(jiǎn)介

1、唐 山 學(xué) 院 EDA技術(shù) 課 程 設(shè) 計(jì) 題 目 音樂播放器 系 (部) 智能與信息工程學(xué)院 班 級(jí) 14電信2班 姓 名 張洪達(dá) 學(xué) 號(hào) 指導(dǎo)教師 魏明哲 張銀蒲 2016 年 12 月 19 日至 12月 30 日 共 2 周2016年 12 月 30 日EDA技術(shù) 課程設(shè)計(jì)任務(wù)書一、設(shè)計(jì)題目、內(nèi)容及要求1. 設(shè)計(jì)題目:音樂播放器設(shè)計(jì)內(nèi)容:1. 使用蜂鳴器播放音樂2. 三首音樂以上3. 數(shù)碼管上顯示當(dāng)前播放的歌曲位置(第幾首歌曲)2. 設(shè)計(jì)要求:(1) 根據(jù)任務(wù)要求確定電路各功能模塊; (2) 寫出設(shè)計(jì)程序;(3) 給出時(shí)序仿真結(jié)果; (4) 最后要有設(shè)計(jì)總結(jié)。二、設(shè)計(jì)原始資料Quart

2、us軟件;EDA實(shí)驗(yàn)箱;計(jì)算機(jī)一臺(tái);三、要求的設(shè)計(jì)成果(課程設(shè)計(jì)說明書、設(shè)計(jì)實(shí)物、圖紙等)課程設(shè)計(jì)說明書1份,不少于2000字,應(yīng)包含設(shè)計(jì)原理分析、相關(guān)軟件介紹、仿真波形分析,實(shí)驗(yàn)箱下載驗(yàn)證等。四、進(jìn)程安排周一、二:查找資料,進(jìn)行方案論證;周三、四:編寫程序、完成模塊仿真;周五、一:硬件調(diào)試與完善;周二、三:設(shè)計(jì)說明書的撰寫與修改;周四、五:答辯。五、主要參考資料1 潘松,黃繼業(yè),潘明.EDA技術(shù)實(shí)用教程Verilog HDL版(第五版).科學(xué)出版社,2013.112 潘松,黃繼業(yè).EDA技術(shù)實(shí)用教程(第二版).科學(xué)出版社,2005.23 焦素敏.EDA應(yīng)用技術(shù).清華大學(xué)出版社,2002.4指

3、導(dǎo)教師(簽名):教研室主任(簽名): EDA技術(shù)成績(jī)?cè)u(píng)定表出勤情況出勤天數(shù) 缺勤天數(shù)成績(jī)?cè)u(píng)定出勤情況及設(shè)計(jì)過程表現(xiàn)(20分)課設(shè)答辯(20分)說明書(20分)設(shè)計(jì)成果(40分)總成績(jī)(100分)提問(答辯)問題情況綜合評(píng)定 指導(dǎo)教師簽名: 年 月 日目錄前言.11設(shè)計(jì)原理分析.21.1設(shè)計(jì)任務(wù).21.2設(shè)計(jì)要求.22 軟件介紹.32.1 Verilog HDL相關(guān)介紹.32.2 Quartus相關(guān)介紹.3 3 總體設(shè)計(jì).53.1總體結(jié)構(gòu).53.2設(shè)計(jì)原理.54主要模塊功能的設(shè)計(jì).74.1 頂層模塊.74.2數(shù)碼管顯示模塊.7分頻器模塊.7位選模塊.84.2.3滾動(dòng)模塊.8轉(zhuǎn)換模塊.94.3 蜂

4、鳴器塊.9選址模塊.9存儲(chǔ)器模塊.10譯碼器模塊.10顯示控制模塊.11 5 程序調(diào)試運(yùn)行.125.1 seg7_drive的驗(yàn)證.125.2:beep的軟件驗(yàn)證.136 硬件仿真.156.1引腳設(shè)置.156.2硬件調(diào)試.157 總結(jié).17參考文獻(xiàn).18附錄.19前言隨著電子技術(shù)的飛速發(fā)展,微電子技術(shù)的進(jìn)步主要表現(xiàn)在大規(guī)模集成電路加工技術(shù)即半導(dǎo)體工藝技術(shù)的發(fā)展上,使得本征半導(dǎo)體的工藝水平的線寬已經(jīng)達(dá)到了60nm,并在不斷地縮小,面在硅片單位面積上,集成了更多的晶體管。集成電路設(shè)計(jì)正在不斷地向超大規(guī)模,極低功耗和超高速的方向發(fā)展,電子產(chǎn)品的功能越來越強(qiáng)大,體積越來越小,功耗越來越低。 

5、順應(yīng)電子技術(shù)的發(fā)展趨勢(shì),可編程邏輯器件和EDA 技術(shù)使設(shè)計(jì)方法發(fā)生了質(zhì)的變化。把以前“電路設(shè)計(jì)+硬件搭試+調(diào)試焊接”轉(zhuǎn)化為“功能設(shè)計(jì)+軟件模擬+仿真下載”。利用EDA 開發(fā)平臺(tái),采用可編程邏輯器件FPGA 使硬件的功能可通過編程來實(shí)現(xiàn),這種新的基于芯片的設(shè)計(jì)方法能夠使設(shè)計(jì)者有更多機(jī)會(huì)充分發(fā)揮創(chuàng)造性思維,實(shí)現(xiàn)多種復(fù)雜數(shù)字邏輯系統(tǒng)的功能,將原來由電路板設(shè)計(jì)完成的工作放到芯片的設(shè)計(jì)中進(jìn)行,減少了連線和體積,提高了集成度,降低了干擾,大大減輕了電路設(shè)計(jì)和PCB設(shè)計(jì)的工作量和難度,增強(qiáng)了設(shè)計(jì)的靈活性,有效地提高了工作效率,增加了系統(tǒng)的可靠性和穩(wěn)定性,提高了技術(shù)指標(biāo)。

6、0;這些技術(shù)使得各種電子產(chǎn)品迅速的進(jìn)入了我們的生活,我們處在一個(gè)被電子產(chǎn)品深度包圍的時(shí)代,在一個(gè)普通老百姓的家里,衣食住行,每一個(gè)產(chǎn)品的誕生都離不開EDA技術(shù),從彩色電視機(jī),到智能冰箱,到全自動(dòng)洗衣機(jī),電飯煲,到微波爐,電磁爐,電子琴,再到個(gè)人隨身用的手機(jī),MP3音樂播放器都需要EDA技術(shù)提供支持。 本文應(yīng)用Verilog HDL硬件描述語言,設(shè)計(jì)一個(gè)音樂播放器,它能將預(yù)先設(shè)置存儲(chǔ)好的樂曲自動(dòng)播放出來,下面對(duì)樂曲播放電路的設(shè)計(jì)與實(shí)現(xiàn)中涉及的EDA技術(shù),以及EDA技術(shù)中常用的開發(fā)器件FPGA可編程邏輯器件,開發(fā)語言Verilog HDL以及開發(fā)軟件Quartus 作簡(jiǎn)單介紹。1 設(shè)計(jì)原

7、理分析1.1設(shè)計(jì)任務(wù)本課題要求設(shè)計(jì)音樂播放器,能實(shí)現(xiàn)基本的播放音樂的功能。1.2設(shè)計(jì)要求設(shè)計(jì)一個(gè)簡(jiǎn)易的音樂播放系統(tǒng),使其下載到電路板上使,能使蜂鳴器播放音樂。在可以使蜂鳴器播放音樂的基礎(chǔ)上,增加播放音樂的數(shù)量,要求播放的音樂在三首以上。在數(shù)碼管上顯示當(dāng)前播放的音樂是第幾首,并使播放的音樂在數(shù)碼管顯示屏上進(jìn)行滾動(dòng)(例如,當(dāng)播放第一首歌曲使,數(shù)碼管顯示000001,并且1由右向左依次顯示,其余位置為0),當(dāng)蜂鳴器播放下一首歌時(shí),數(shù)碼管的顯示可以立即加一,并且仍然由右向左滾動(dòng)。2 軟件介紹2.1 Verilog HDL相關(guān)介紹Verilog HDL是一種硬件描述語言(HDL:Hardware Dis

8、cription Language),是一種用文本形式來描述數(shù)字系統(tǒng)硬件的結(jié)構(gòu)和行為的語言,用它可以表示邏輯電路圖、邏輯表達(dá)式,還可以表示數(shù)字邏輯系統(tǒng)所完成的邏輯功能。用于從算法級(jí)、門級(jí)到開關(guān)級(jí)的多種抽象設(shè)計(jì)層次的數(shù)字系統(tǒng)建模。被建模的數(shù)字系統(tǒng)對(duì)象的復(fù)雜性可以介于簡(jiǎn)單的門和完整的電子數(shù)字系統(tǒng)之間。數(shù)字系統(tǒng)能夠按層次描述,并可在相同描述中顯式地進(jìn)行時(shí)序建模。Verilog HDL 語言具有下述描述能力:設(shè)計(jì)的行為特性、設(shè)計(jì)的數(shù)據(jù)流特性、設(shè)計(jì)的結(jié)構(gòu)組成以及包含響應(yīng)監(jiān)控和設(shè)計(jì)驗(yàn)證方面的時(shí)延和波形產(chǎn)生機(jī)制。所有這些都使用同一種建模語言。此外,Verilog HDL語言提供了編程語言接口,通過該接口可以

9、在模擬、驗(yàn)證期間從設(shè)計(jì)外部訪問設(shè)計(jì),包括模擬的具體控制和運(yùn)行。 Verilog HDL語言不僅定義了語法,而且對(duì)每個(gè)語法結(jié)構(gòu)都定義了清晰的模擬、仿真語義。因此,用這種語言編寫的模型能夠使用Verilog仿真器進(jìn)行驗(yàn)證。語言從C編程語言中繼承了多種操作符和結(jié)構(gòu)。Verilog HDL提供了擴(kuò)展的建模能力,其中許多擴(kuò)展最初很難理解。但是,Verilog HDL語言的核心子集非常易于學(xué)習(xí)和使用,這對(duì)大多數(shù)建模應(yīng)用來說已經(jīng)足夠。當(dāng)然,完整的硬件描述語言足以對(duì)從最復(fù)雜的芯片到完整的電子系統(tǒng)進(jìn)行描述。Verilog HDL和VHDL是目前世界上最流行的兩種硬件描述語言,都是在20世紀(jì)80年代中期開發(fā)出來的

10、。現(xiàn)在,隨著系統(tǒng)級(jí)FPGA以及片上系統(tǒng)的出現(xiàn),軟硬件協(xié)同設(shè)計(jì)和系統(tǒng)設(shè)計(jì)變得越來越重要。傳統(tǒng)意義上的硬件設(shè)計(jì)越來越傾向于與系統(tǒng)設(shè)計(jì)和軟件設(shè)計(jì)相結(jié)合。2.2 Quartus相關(guān)介紹 Quartus II 是Alera公司推出的一款功能強(qiáng)大,兼容性最好的EDA工具軟件。該軟件界面友好、使用便捷、功能強(qiáng)大,是一個(gè)完全集成化的可編程邏輯設(shè)計(jì)環(huán)境,具有開放性、與結(jié)構(gòu)無關(guān)、多平臺(tái)完全集成化豐富的設(shè)計(jì)庫、模塊化工具、支持多種硬件描述語言及有多種高級(jí)編程語言接口等特點(diǎn)。Quartus II是Altera公司推出的CPLD/FPGA開發(fā)工具,Quartus II提供了完全集成且與電路結(jié)構(gòu)無關(guān)的開發(fā)包環(huán)境,具有數(shù)字

11、邏輯設(shè)計(jì)的全部特性,包括:可利用原理圖、結(jié)構(gòu)框圖、VerilogHDL、AHDL和VHDL完成電路描述,并將其保存為設(shè)計(jì)實(shí)體文件;芯片平面布局連線編輯;功能強(qiáng)大的邏輯綜合工具;完備的電路功能仿真與時(shí)序邏輯仿真工具;定時(shí)/時(shí)序分析與關(guān)鍵路徑延時(shí)分析;可使用SignalTap II邏輯分析工具進(jìn)行嵌入式的邏輯分析;支持軟件源文件的添加和創(chuàng)建,并將它們鏈接起來生成編程文件;使用組合編譯方式可一次完成整體設(shè)計(jì)流程;自動(dòng)定位編譯錯(cuò)誤;高效的期間編程與驗(yàn)證工具;可讀入標(biāo)準(zhǔn)的EDIF網(wǎng)表文件、VHDL網(wǎng)表文件和Verilog網(wǎng)表文件;能生成第三方EDA軟件使用的VHDL網(wǎng)表文件和Verilog網(wǎng)表文件。Qu

12、anus設(shè)計(jì)的主要流程有:創(chuàng)建工程、設(shè)計(jì)輸入、編譯、仿真驗(yàn)證、下載,其進(jìn)行數(shù)字電路設(shè)計(jì)的一般流程如圖1-1所示。 輸入設(shè)計(jì)項(xiàng)目:原理圖VHDL代碼建立工作庫文件夾創(chuàng)建工程存盤,注意原理圖文本取名選擇目標(biāo)器件啟動(dòng)編譯建立仿真波形文件仿真測(cè)試和波形分析引腳鎖定并編譯編程、下載配置硬件測(cè)試圖1-1 Quanus一般流程圖當(dāng)我們安裝完成Quartus后,雙擊桌面上的Quartus圖標(biāo),迎接我們的就是圖1-2所示的開發(fā)環(huán)境。圖1-2 Quartus開發(fā)環(huán)境這個(gè)環(huán)境包含了幾部分內(nèi)容:最上面的菜單項(xiàng)和工具欄,左邊的兩個(gè)窗口為工程瀏覽窗口和進(jìn)度窗口,下面的窗口為信息窗口。利用Quartus進(jìn)行原理圖設(shè)計(jì)的優(yōu)點(diǎn)

13、是,設(shè)計(jì)者不必具有許多諸如編譯技術(shù)、硬件語言等新知識(shí)就能迅速入門,完成較大規(guī)模的電路系統(tǒng)設(shè)計(jì)3 總體設(shè)計(jì)3.1總體結(jié)構(gòu)音樂播放器的系統(tǒng)方框圖如圖3-1所示,本設(shè)計(jì)是一種采用FPGA芯片進(jìn)行音樂播放器,主要由蜂鳴器模塊、數(shù)碼管顯示控制模塊、譯碼器模塊、存儲(chǔ)器模塊等模塊組成。Beep圖3-1 設(shè)計(jì)框圖3.2設(shè)計(jì)原理根據(jù)設(shè)計(jì)要求,系統(tǒng)的輸入信號(hào):時(shí)鐘脈沖clk,復(fù)位信號(hào)rst_n;輸出信號(hào):音樂播放器播放的音樂beep,控制數(shù)碼管的seg和sel。聲音的頻譜范圍約在幾十到幾千赫茲,若能利用程序來控制FPGA某個(gè)引腳輸出一定頻率的矩形波,接上蜂鳴器就能發(fā)出相應(yīng)頻率的聲音。樂曲中的每一音符對(duì)應(yīng)著一個(gè)確定

14、的頻率,要想FPGA發(fā)出不用音符的音調(diào),實(shí)際上只要控制它輸出相應(yīng)音符的頻率即可。樂曲都是由一連串的音符組成,因此按照樂曲的樂譜依次輸出這些音符所對(duì)應(yīng)的頻率,就可以在揚(yáng)聲器上連續(xù)地發(fā)出各個(gè)音符的音調(diào)。而要準(zhǔn)確地演奏出一首樂曲,僅僅讓揚(yáng)聲器能夠發(fā)聲是不夠的,還必須準(zhǔn)確地控制樂曲的節(jié)奏,即樂曲中每個(gè)音符的發(fā)生頻率及其持續(xù)時(shí)間是樂曲能夠連續(xù)演奏的兩個(gè)重要因素。每個(gè)音符對(duì)應(yīng)的頻率如下圖3-2所示:圖3-2 每個(gè)音符對(duì)應(yīng)的頻率4主要模塊功能的設(shè)計(jì)4.1 頂層模塊頂層模塊只要是實(shí)現(xiàn)通過FPGA中的結(jié)構(gòu)建模,把每個(gè)模塊例化過來,將每個(gè)模塊連接起來。其產(chǎn)生原理是:命名頂層文件名為beep,通過例化把選址模塊co

15、ntroller,存儲(chǔ)器模塊my_rom,樂譜產(chǎn)生模塊translate,分頻模塊dir_freq,顯示控制模塊show_controller,數(shù)碼管seg7_drive連接起來,以實(shí)現(xiàn)讓蜂鳴器播放三首以上音樂,且數(shù)碼管循環(huán)顯示當(dāng)前所播放音樂為第幾首。4.2數(shù)碼管顯示模塊數(shù)碼管是一種發(fā)光的半導(dǎo)體器件,其基本單元式發(fā)光二極管。數(shù)碼管可分為七段數(shù)碼管和八段數(shù)碼管,八段數(shù)碼管比七段數(shù)碼管多一個(gè)用于顯示小數(shù)點(diǎn)的發(fā)光二極管單元DP。數(shù)碼管特點(diǎn):1.一個(gè)數(shù)碼管可表示任意一個(gè)4位二進(jìn)制;2.可分共陰和共陽且本開發(fā)板上低電平有效 3.可動(dòng)態(tài),靜態(tài)顯示; 4.動(dòng)態(tài)掃描頻率為1KHZ; 5.根據(jù)視覺暫留效果可顯示

16、數(shù)字。數(shù)碼管的實(shí)現(xiàn)原理:輸入信號(hào)為:時(shí)鐘脈沖clk,復(fù)位信號(hào)rst_n,位選信號(hào)sel,段碼seg.依次經(jīng)過分頻器模塊,滾動(dòng)模塊,位選模塊,轉(zhuǎn)換模塊來實(shí)現(xiàn)。下圖為共陰極數(shù)碼管的電路圖和引腳圖: 圖4-1 共陰極數(shù)碼管分頻器模塊分頻器模塊的功能為產(chǎn)生所需要的頻率。其原理是系統(tǒng)輸入信號(hào)時(shí)鐘脈沖clk,復(fù)位信號(hào)rst_n。例如:頻率是1MHZ,則周期是1000ns,如果占空比為50%,則高低電平每500ns 變反一次。如果設(shè)所需脈沖頻率為freq,則得到所要脈沖的計(jì)數(shù)個(gè)數(shù)NUM為: 實(shí)現(xiàn)框圖如圖4-2所示:4-2 分頻器模塊實(shí)現(xiàn)框圖4.2.2位選模塊位選模塊的功能是用來控制那個(gè)數(shù)碼管亮滅。要使數(shù)碼管

17、同時(shí)亮,可以先讓第一個(gè)數(shù)碼管亮,在讓第一個(gè)數(shù)碼管滅,第二個(gè)數(shù)碼管亮,因?yàn)槿搜垡曈X暫留效果,只要每個(gè)數(shù)碼管滅的時(shí)間足夠短,我們就可以看到六個(gè)數(shù)碼管是同時(shí)亮著的。其產(chǎn)生原理:系統(tǒng)的輸入信號(hào)有:時(shí)鐘脈沖clk,復(fù)位信號(hào)rst_n,6個(gè)數(shù)碼管可顯示的24位數(shù)data;系統(tǒng)輸出信號(hào)有:控制那個(gè)數(shù)碼管亮滅的位選信號(hào)sel,每個(gè)數(shù)碼管顯示的4位二進(jìn)制數(shù)show_data。當(dāng)每個(gè)時(shí)鐘上升沿到來時(shí),位選信號(hào)初始為3b000,位選信號(hào)每到上升沿來時(shí)加一,直到位選信號(hào)等于5。且第零個(gè)數(shù)碼管輸出show_data為data的23:20位,第一個(gè)數(shù)碼管輸出show_data為data的19:16位,第二個(gè)數(shù)碼管輸出sh

18、ow_data為data的15:12位,第三個(gè)數(shù)碼管輸出show_data為data的11:8位,第四個(gè)數(shù)碼管輸出show_data為data的7:4位,第五個(gè)數(shù)碼管輸出show_data為data的3:0位。實(shí)現(xiàn)框圖如圖4-3所示:4-3 位選模塊實(shí)現(xiàn)框圖滾動(dòng)模塊滾動(dòng)模塊功能是使音樂播放器所播放的第幾首歌的數(shù)字在數(shù)碼管上顯示,并由右向左滾動(dòng),且其余位置顯示0。其產(chǎn)生原理:該模塊輸入信號(hào):時(shí)鐘脈沖clk,復(fù)位信號(hào)rst_n,要輸出的當(dāng)前歌曲位置data2;輸出信號(hào):6個(gè)數(shù)碼管要顯示的24位數(shù)data.當(dāng)要輸出第一首歌位置時(shí),應(yīng)使初始data<=24h000001,下一秒使data<

19、=24000010。即每增加一秒讓data輸出的1左移一位。實(shí)現(xiàn)框圖如圖4-4所示:4-4 滾動(dòng)模塊實(shí)現(xiàn)框圖轉(zhuǎn)換模塊轉(zhuǎn)換模塊功能為把數(shù)碼管要顯示的四位二進(jìn)制數(shù)轉(zhuǎn)換成七段數(shù)碼管的段碼。其產(chǎn)生原理:該模塊的輸入信號(hào):數(shù)碼管要顯示的四位二進(jìn)制數(shù)show_data;輸出信號(hào):七段數(shù)碼管的段碼seg。例:當(dāng)show_data=0時(shí)seg=8'b1100_0000;實(shí)現(xiàn)框圖如圖4-5所示:4-5 轉(zhuǎn)換模塊實(shí)現(xiàn)框圖4.3 蜂鳴器模塊蜂鳴器模塊功能是實(shí)現(xiàn)讓蜂鳴器播放三首以上的樂曲。其實(shí)現(xiàn)原理:輸入信號(hào)為時(shí)鐘信號(hào)clk和復(fù)位信號(hào)rst_n,中間經(jīng)過選址模塊,存儲(chǔ)器模塊,樂譜產(chǎn)生模塊,顯示控制模塊,以及數(shù)

20、碼管顯示模塊,輸出信號(hào)為音符對(duì)應(yīng)的頻率信號(hào)beep(clk_out)和數(shù)碼管顯示信號(hào)seg和sel。選址模塊選址模塊功能為程序存儲(chǔ)器rom中所存儲(chǔ)的數(shù)據(jù)分配地址。其實(shí)現(xiàn)原理:輸入信號(hào)clk,rst_n;輸出信號(hào)addr。每一個(gè)時(shí)鐘上升沿到來時(shí),先判斷時(shí)間是否已經(jīng)記滿到12.5ms,若已記滿,再判斷地址是否小于255,若小于,則地址加1,直到加到255,反復(fù)循環(huán)。實(shí)現(xiàn)模塊如圖4-6所示:圖4-6 選址模塊實(shí)現(xiàn)框圖存儲(chǔ)器模塊存儲(chǔ)器模塊功能式實(shí)現(xiàn)對(duì)音樂音符的存儲(chǔ),每個(gè)音符對(duì)應(yīng)一個(gè)地址,地址來源于選址模塊的地址。其實(shí)現(xiàn)原理:輸入信號(hào)clk,addr,輸出信號(hào)為q,將所需要的樂譜音符存入到存儲(chǔ)器my_r

21、om中,然后將存儲(chǔ)音符輸出。例如在存儲(chǔ)器的0-64存儲(chǔ)兩只老虎的音符:圖4-7 存儲(chǔ)器的0-64存儲(chǔ)兩只老虎的音符實(shí)現(xiàn)模塊如圖4-8所示:4-8 存儲(chǔ)器模塊實(shí)現(xiàn)框圖譯碼器模塊譯碼器模塊功能為將存儲(chǔ)器輸出的音符譯碼成每個(gè)音符所對(duì)應(yīng)的頻率輸出給分頻器模塊。其實(shí)現(xiàn)原理:輸入信號(hào)為時(shí)鐘信號(hào)clk,復(fù)位信號(hào)rst_n,音符信號(hào)music_data。輸出信號(hào)為music_freq信號(hào)。在每一個(gè)時(shí)鐘上升沿到來之后,經(jīng)過一個(gè)case,endcase選擇語句,對(duì)music_data進(jìn)行選擇,輸出一個(gè)對(duì)應(yīng)音符的頻率。實(shí)現(xiàn)模塊如圖4-9所示:4-9 譯碼器模塊實(shí)現(xiàn)框圖顯示控制模塊 顯示控制模塊功能為將顯示的歌曲數(shù)目

22、對(duì)應(yīng)的顯示在七段數(shù)碼管,讓七段數(shù)碼管的數(shù)據(jù)循環(huán)顯示。其實(shí)現(xiàn)原理:輸入信號(hào)為時(shí)鐘信號(hào)clk,復(fù)位信號(hào)rst_n, 地址信號(hào)addr。輸出信號(hào)為輸入到數(shù)碼管的數(shù)據(jù)顯示信號(hào)data1。在每一個(gè)時(shí)鐘信號(hào)到來之后,通過if語句的嵌套語句來判斷輸入信號(hào)的地址addr來決定輸出給數(shù)碼管的數(shù)據(jù)data1,再通過例化與數(shù)碼管顯示模塊連接起來。實(shí)現(xiàn)模塊如圖4-10所示: 4-10 顯示控制模塊實(shí)現(xiàn)框圖5 程序調(diào)試運(yùn)行5.1 seg7_drive的驗(yàn)證激勵(lì)程序如下:timescale 1ns/1ps module seg7_drive_tb;reg clk;reg rst_n;reg 23:0 data;wire

23、2:0 sel;wire 7:0seg;initialbeginclk=1'b1;rst_n=1'b0;data=24'h234567;#200.1rst_n=1'b1; #10_000$stop;endalways #10 clk=clk;seg7_drive seg7_drive_dut(.clk(clk),.rst_n(rst_n),.data(data),.sel(sel),.seg(seg);endmodule仿真圖如圖5-1所示: 5-1 seg7_drive仿真框圖5.2:beep的軟件驗(yàn)證激勵(lì)程序程序如下:timescale 1ns/1psmod

24、ule controller_tb;reg clk;reg rst_n;reg en; wire 7:0 addr;initialbeginclk=1'b1;rst_n=1'b0;en=1'b0;#200.1 rst_n=1'b1;#234en=1'b1;#3000en=1'b0;#2000en=1'b1;#4000$stop;endalways #10 clk=clk;controller controller_dut(.clk(clk),.rst_n(rst_n),.addr(addr),.en(en);endmodule 仿真圖如圖

25、5-2所示:5-2 beep的仿真框圖6 硬件仿真6.1引腳設(shè)置輸入信號(hào)是時(shí)鐘信號(hào)clk,復(fù)位信號(hào)rst_n,輸出信號(hào)為頻率信號(hào)beep,數(shù)碼管控制信號(hào)sel,和數(shù)碼管顯示信號(hào)seg。做硬件驗(yàn)證之前需要清楚實(shí)驗(yàn)板上各鍵與各信號(hào)的鏈接情況,參照資料得出本設(shè)計(jì)中各引腳的對(duì)應(yīng)情況如下。引腳設(shè)置如圖6-1所示:圖6-1 引腳設(shè)置圖6.2硬件調(diào)試本設(shè)計(jì)采用Quartus II軟件進(jìn)行仿真設(shè)計(jì),Quartus II 是Altera公司的綜合性PLD/FPGA開發(fā)軟件,支持原理圖、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多種設(shè)計(jì)

26、輸入形式,內(nèi)嵌自有的綜合器以及仿真器,可以完成從設(shè)計(jì)輸入到硬件配置的完整PLD設(shè)計(jì)流程。 經(jīng)過了上面的步驟,我們已經(jīng)完成了VerilogHDL代碼的編譯。這就是說我們已經(jīng)在邏輯上完成了一個(gè)實(shí)現(xiàn)了我們所需要功能的芯片,當(dāng)然,前提是代碼是正確的。編寫VerilogHDL進(jìn)而進(jìn)行編譯的目的是為了能夠最終使我們的FPGA芯片具有我們所需要的功能,那么這就需要將我們實(shí)現(xiàn)的那個(gè)邏輯上的芯片與實(shí)際的FPGA芯片結(jié)合起來。其實(shí)完成上面的工作很簡(jiǎn)單,只需要將我們的那個(gè)邏輯上的實(shí)體的管腳與FPGA芯片的管腳進(jìn)行綁定就可以了。各個(gè)單元模塊完成后,即可將分模塊和頂層模塊進(jìn)行仿真測(cè)試,同時(shí)可根據(jù)設(shè)計(jì)要求加入測(cè)試輸入條件

27、。仿真后得到的相應(yīng)輸出結(jié)果與預(yù)先的結(jié)果想比較,若不相符,則應(yīng)修改設(shè)計(jì),直到相符為止。為了仿真得到明顯的效果,最好能能下載到帶數(shù)碼管的試驗(yàn)想上進(jìn)行直接的數(shù)字觀察。圖6-2是最終調(diào)試結(jié)果。圖6-2 硬件調(diào)試圖蜂鳴器播放音樂,數(shù)碼管顯示播放的是第幾首音樂,并且數(shù)字進(jìn)行滾動(dòng)。7 總結(jié)這次課程設(shè)計(jì)是音樂播放器,通過這次課程設(shè)計(jì)對(duì)EDA技術(shù)有了更進(jìn)一步的熟悉。Verilog HDL是EDA技術(shù)的重要組成部分,其具有與具體硬件電路無關(guān)和與設(shè)計(jì)平臺(tái)無關(guān)的特性,并且具有良好的電路行為描述和系統(tǒng)描述的能力,并在語言易讀性和層次化、結(jié)構(gòu)化設(shè)計(jì)方面,表現(xiàn)了強(qiáng)大的生命力和應(yīng)用潛力。其主要的也是最大的優(yōu)點(diǎn)就在于設(shè)計(jì)者可以

28、專心致力于其功能的實(shí)現(xiàn),而不需要對(duì)不影響功能的與工藝有關(guān)的因素花費(fèi)過多的時(shí)間和精力。本次課程設(shè)計(jì)至此已經(jīng)接近尾聲,在這兩周的學(xué)習(xí)和程序設(shè)計(jì)中,我的收獲頗豐。設(shè)計(jì)的核心內(nèi)容就是Quartus環(huán)境中,利用Verilog HDL語言設(shè)計(jì)出基于FPGA的音樂播放器。為期兩周的EDA課程設(shè)計(jì)已經(jīng)結(jié)束,兩周前我們還是處于懵懂時(shí)期,對(duì)FPGA沒有很深入的了解。通過這兩周老師的辛勤教導(dǎo),還有自己的不懈努力,終于完成最后老師安排的任務(wù)。通過這兩周對(duì)Verilog HDL語言的學(xué)習(xí),對(duì)EDA技術(shù)有了更深刻的了解。在本次課程設(shè)計(jì)中老師不僅教會(huì)了我們使用Quartus軟件編寫程序和編寫程序時(shí)的思考方法,從中我還了解到

29、了FPGA的就業(yè)前景,對(duì)未來要從事的行業(yè)和社會(huì)現(xiàn)狀有了更深入的了解。這些是在我們平時(shí)的學(xué)習(xí)中不能夠?qū)W到的。在學(xué)習(xí)的最初,老師只是給我們講解一些簡(jiǎn)單Verilog HDL的小程序,使其實(shí)現(xiàn)簡(jiǎn)單的功能,然后逐漸深入,一環(huán)扣一環(huán)的給我們講解最終課設(shè)需要用到的知識(shí),使得原本對(duì)于我們來說不太可能完成的任務(wù)變成可能。這也使我們?cè)跓o形中便加深了對(duì)Verilog HDL語言的了解及運(yùn)用能力,對(duì)課本以及以前學(xué)過的知識(shí)有了一個(gè)更好的總結(jié)與理解。在學(xué)習(xí)中,我認(rèn)識(shí)到,在設(shè)計(jì)程序時(shí),不能妄想一次就將整個(gè)程序設(shè)計(jì)好,反復(fù)修改、不斷改進(jìn)是程序設(shè)計(jì)的必經(jīng)之路,一個(gè)程序的完美與否不僅僅是實(shí)現(xiàn)功能,而應(yīng)該讓人一看就能明白你的思路

30、,這樣也為交流提供了方便,為以后編程打下基礎(chǔ)。本次的課程設(shè)計(jì)將各個(gè)單一的模塊實(shí)現(xiàn)其功能后,學(xué)會(huì)通過原理圖或頂層文件把各模塊連接,從而實(shí)現(xiàn)音樂播放器能成功播放音樂。課設(shè)注重的不僅是把理論知識(shí)鞏固,而且應(yīng)把理論和實(shí)際相結(jié)合,把知識(shí)應(yīng)用到生活中。在課設(shè)過程中,遇到了不少問題,數(shù)碼管無法正常顯示,蜂鳴器不能正常播放音樂等等。通過的對(duì)源代碼的修改,發(fā)現(xiàn)了一些易忽略的細(xì)節(jié)。課設(shè)考驗(yàn)的是思維邏輯能力,對(duì)知識(shí)的靈活應(yīng)用,當(dāng)然,合作精神是不可或缺的。課設(shè)時(shí)間不長(zhǎng),要在短時(shí)間內(nèi)完成絕不是個(gè)人力量能達(dá)到的,還要同學(xué)和老師的幫助。學(xué)校給我們安排課程設(shè)計(jì),大大地加深了我們對(duì)理論知識(shí)的理解,同時(shí)有意識(shí)的培養(yǎng)了我們的創(chuàng)新思

31、想。我想這類似的課程設(shè)計(jì)是為我們提供了良好的實(shí)踐平臺(tái)。也希望學(xué)校能多給我們安排這種學(xué)習(xí)的機(jī)會(huì),我相信我們會(huì)從中學(xué)到很多對(duì)我們有用的知識(shí)和經(jīng)驗(yàn)。參考文獻(xiàn)1 潘松,黃繼業(yè),潘明EDA技術(shù)實(shí)用教程Verilog HDL版(第五版) M科學(xué)出版社,2013.112 潘松,黃繼業(yè)EDA技術(shù)實(shí)用教程(第二版)M科學(xué)出版社,2005.23 焦素敏EDA應(yīng)用技術(shù)M清華大學(xué)出版社,2002.44 江國強(qiáng)EDA技術(shù)與應(yīng)用M.電子工業(yè)出版社M310-3125 王金明數(shù)字系統(tǒng)設(shè)計(jì)與Verilog HDL M北京.電子工業(yè)出版社,20116 夏宇聞Verilog數(shù)字系統(tǒng)設(shè)計(jì)教程 M北京:北京航天航空大學(xué)出版社,2008

32、附錄頂層設(shè)計(jì)模塊(蜂鳴器模塊)module beep(clk,rst_n,beep,sel,seg); input clk; input rst_n; output beep; output 7:0 seg; output 2:0 sel; wire 23:0 data1; wire 7:0 addr; wire 7:0 music_data; wire 25:0 music_freq; controller controller_dut( .clk(clk), .rst_n(rst_n), .addr(addr) ); my_rommy_rom_inst ( .address (addr),

33、 .clock (clk), .q(music_data) ); translate translate_dut( .clk(clk), .rst_n(rst_n), .music_data(music_data), .music_freq(music_freq); dir_freq dir_freq_dut( .clk(clk), .rst_n(rst_n), .freq(music_freq), .clk_out(beep) ); show_controller show_controller_dut(.clk(clk),.rst_n(rst_n),.addr(addr),.data1(d

34、ata1); seg7_drive seg7_drive_dut(.clk(clk),.rst_n(rst_n),.sel(sel),.seg(seg),.data2(data1);endmodule選址模塊module controller(clk,rst_n,addr); input clk;input rst_n;output reg 7:0 addr; parameter T =12_500_000;reg 25:0 cnt;always (posedge clk or negedge rst_n) begin if(!rst_n) begin cnt<=26'd0; a

35、ddr<=8'd0; end else begin if(cnt<T-1) cnt<=cnt+1'b1;else begin cnt <=26'd0;if(addr<255)addr<=addr+1'b1;elseaddr<=8'd0;end end end endmodule 譯碼器模塊module translate(clk,rst_n,music_data,music_freq); input clk; input rst_n; input 7:0 music_data; output reg 25:0 m

36、usic_freq; always (posedge clk or negedge rst_n) begin if(!rst_n) music_freq<=26'd0; else case(music_data) 11 : music_freq<=26'd261; 12 : music_freq<=26'd293; 13 : music_freq<=26'd329; 14 : music_freq<=26'd349; 15 : music_freq<=26'd392; 16 : music_freq<=2

37、6'd440; 17 : music_freq<=26'd493; 21 : music_freq<=26'd523; 22 : music_freq<=26'd587; 23 : music_freq<=26'd659; 24 : music_freq<=26'd699; 25 : music_freq<=26'd784; 26 : music_freq<=26'd880; 27 : music_freq<=26'd987; 31 : music_freq<=26&#

38、39;d1045; 32 : music_freq<=26'd1174; 33 : music_freq<=26'd1318; 34 : music_freq<=26'd1396; 35 : music_freq<=26'd1568; 36 : music_freq<=26'd1760; 37 : music_freq<=26'd1975; default : music_freq<=26'd0;endcaseendendmodule分頻模塊module dir_freq(clk,rst_n,fr

39、eq,clk_out); input clk; /50MHZ input rst_n; input 25:0 freq ; /輸入所要得到的脈沖的頻率 output reg clk_out; define NUM 25_000_000/freq -1 /計(jì)算要得到所要脈沖的計(jì)數(shù)個(gè)數(shù) reg 25:0 cnt; always (posedge clk or negedge rst_n) begin if(!rst_n) begin cnt<=26'd0; clk_out<=1'b1;endelse begin if(cnt<NUM) begin cnt<=

40、cnt+1'b1;clk_out<=clk_out; end else begin clk_out<=clk_out;cnt<=26'd0; end end end endmodule 顯示控制模塊 module show_controller(clk,rst_n,addr,data1);input clk;input rst_n;input 7:0 addr;output 23:0 data1;reg 3:0 num;always (posedge clk or negedge rst_n)begin if(!rst_n)num<=4'd1;e

41、lseif(addr<64)num<=4'd1;else if(addr<128)num<=4'd2;else if(addr<192)num<=4'd3;else num<=4'd4;endassign data1=20'd0,num;endmodule 數(shù)碼管顯示模塊(頂層設(shè)計(jì)模塊)module seg7_drive(clk,rst_n,sel,seg,data2);input clk;input rst_n;input 23:0data2;output 2:0 sel;output 7:0seg;wire clk_1HZ;wire 23:0 show_data;wire 23:0 data;wire 23:0 data1;dir_freq dir_freq_dut(.clk(clk),.rst_n(rst_n),.freq(1_000),.clk_out(clk_1HZ);sel_controller sel_controller_dut(.clk(clk_1HZ),.rst_n(rst_n),.data(dat

溫馨提示

  • 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)論