0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

在FPGA多媒體開發(fā)平臺DE2上實現(xiàn)音樂流水燈控制系統(tǒng)的設計

電子設計 ? 作者:電子設計 ? 2018-10-07 11:24 ? 次閱讀

FPGA是現(xiàn)場可編程門陣列的簡稱, 它既有門陣列器件的高度集成和通用性, 又有可編程邏輯器件用戶可編程的靈活性。通過 FPGA實現(xiàn)音樂流水燈的控制, 實質(zhì)上就是將不同音階與特定頻率的方波信號對應起來, 以方波信號驅(qū)動蜂鳴器發(fā)出音樂, 再根據(jù)不同音階來控制流水燈的閃爍。與借助微處理器實現(xiàn)樂曲演奏相比, 以純硬件方式完成樂曲演奏電路更直觀。EDA工具和硬件描述語言發(fā)揮了強大功能,提供了設計可能性。

1、總體設計方案

音樂流水燈主要是點綴公共場合的裝飾品, 音樂的播放和流水燈有節(jié)奏地閃爍, 同時達到聽覺和視覺的完美結(jié)合, 成為構(gòu)成其必不可少的條件。要了解如何產(chǎn)生不同音階的音樂, 首先要對樂音的特性有所了解。樂音實際上是有固定頻率的信號。在樂曲的構(gòu)成中, 樂音的頻率和持續(xù)的時間是其構(gòu)成的要素。音階的頻率可以通過高頻時鐘進行分頻得到。音頻的高低可以通過外部的 LED燈的閃爍來顯示, 這樣在音樂和流水燈的配合下可以使人產(chǎn)生強烈的節(jié)奏感。再輔以 LCD來顯示音階的高低長短, 不懂樂理知識的人便可以直觀的看到不同音調(diào)對應的音階。

總體設計要求如下:

( 1)分頻主要是通過一個可控分頻器實現(xiàn)的。采用時鐘的頻率越高, 分頻系數(shù)越大, 分頻后的音階頻率就越準確。但同時由于分頻系數(shù)大使用的計數(shù)單元增加, 從而耗費更多的硬件邏輯單元, 因此可以采取一個較為適中的時鐘頻率 12MH z 。

( 2)經(jīng)過分頻后的信號是一個脈寬極窄的時鐘信號, 必須對其進行脈沖寬度調(diào)整, 增大占空比, 才能有效地驅(qū)動蜂鳴器。在脈沖寬度調(diào)整時會對此信號再次二分頻, 所以在計算時, 以樂音音階的二倍頻率去求取在特定時鐘信號下的分頻系數(shù), 以便在調(diào)整占空比后得到正確的音階頻率。

( 3)樂曲的頻率變化多端, 對應的分頻系數(shù)也不斷變化, 因此需要將播放的樂曲的分頻系數(shù)事先存放在 ROM 中便于讀取。如果將分頻系數(shù)直接作為存儲碼存放在寄存器中, 勢必會占有更大的容量。因此在這里選取索引值來作為存儲碼以減小容量。

( 4)開發(fā)平臺上的 LED燈數(shù)量有限, 可以選用有規(guī)律的閃爍, 例如從左到右依次點亮、漸亮、漸滅等; 也可以用燈閃爍的多少來表示頻率的大小。本設計選用第二種。

圖 1為音樂流水燈控制系統(tǒng)的總原理框圖??梢钥吹皆撓到y(tǒng)包含樂曲播放控制模塊, 流水燈控制模塊和 LCD顯示模塊 3個模塊。其中樂曲播放控制模塊分為樂譜播放控制模塊, 音階分頻模塊和音階頻率產(chǎn)生模塊。

在FPGA多媒體開發(fā)平臺DE2上實現(xiàn)音樂流水燈控制系統(tǒng)的設計

圖1音樂流水燈控制系統(tǒng)的總體原理框圖

2、 模塊設計

2.1 、樂曲播放控制模塊

樂曲播放控制模塊的主要功能是在一定的時鐘信號驅(qū)動下將事先存儲在 ROM 里的樂譜所對應的索引值依次輸出, 控制分頻, 并產(chǎn)生相應的分頻信號頻率, 以此來控制蜂鳴器的發(fā)聲。

2.1.1、音階分頻器的設計

為了能夠在播放樂曲的同時顯示當前音階, 用LED的位數(shù)來指示當前音階的高低音。程序中的音階分頻系數(shù)通過索引值來進行選取, 即在音樂播放過程中由樂譜存儲電路傳遞來的當前音階的索引值。

2.1.2 、音階頻率產(chǎn)生的設計

音階頻率產(chǎn)生電路在獲取上面的音階索引值對應的分頻系數(shù)后, 通過可控計數(shù)器進行分頻。分頻電路中的計數(shù)器進行減 1計數(shù), 計數(shù)器的進位信號即為分頻信號。因為此信號的脈沖寬度極小, 所以需要調(diào)整占空比才使外部驅(qū)動電路提供足夠的驅(qū)動蜂鳴器的功率, 而具體是對分頻信號再進行二分頻實現(xiàn)的。

2.1.3、 樂譜播放控制模塊設計

音樂播放就是通過外部的 8 H z時鐘驅(qū)動, 內(nèi)部以計數(shù)器進行計數(shù)、產(chǎn)生地址, 送到 ROM 單元中作為存儲器地址, 將對應地址的數(shù)據(jù) 音階索引值輸出。

在本設計中, 每個音的發(fā)出由另一個 8H z的時鐘信號來控制。樂譜中的 4分音符由 4個時鐘信號來驅(qū)動。每個時鐘下, 其對應的音階輸出以索引值的形式存儲在 ROM中。文中 ROM 的地址線為 10位, 數(shù)據(jù)線寬度為 4位。ROM 里存儲的數(shù)據(jù)即各音節(jié)的索引值, 根據(jù)樂譜轉(zhuǎn)換的需要, 16個索引值即可滿足樂曲曲譜編寫的需求, 所以設置了 4位數(shù)據(jù)線。地址線的寬度主要取決于樂曲的長度。本設計中用到了約520個 4 bit單元, 為了留有一定裕度, 將數(shù)據(jù)線寬度定義為 10位, 即 1 024個 4 b i t單元。其中不同的音階對應的索引值如表 1所示。

表 1 音階索引表

在FPGA多媒體開發(fā)平臺DE2上實現(xiàn)音樂流水燈控制系統(tǒng)的設計


按照樂譜, 將音階對應的索引值連續(xù)地存儲到ROM中。例如, 樂譜上一個 4分音符的中音 3 , 在ROM存儲器中對應的索引值是 10 , 并且連續(xù)放置 4次, 而一個 8分音符 5也就是半拍的 5 , 則是將對應索引值 5在 ROM 中連續(xù)存放兩次。播放時在播放時鐘( 8H z )的驅(qū)動下, 索引值不斷地從 ROM 輸出。索引值送到音階分頻模塊中, 轉(zhuǎn)換為計數(shù)初值輸出, 再送到音階分頻產(chǎn)生模塊中, 作為計數(shù)初值, 產(chǎn)生音階頻率輸出驅(qū)動蜂鳴器。這樣, 就能在蜂鳴器上發(fā)出要播放的樂曲了。確定了樂譜后, 即 ROM 的存儲內(nèi)容后, 就可以定制 ROM, 將其初始化文件指定為mif文件即可。

2.2、流水燈控制模塊設計

由于此設計是基于 DE270開發(fā)板之上的, 因此將對應的音階輸出, 應用 LED燈來顯示流水燈閃爍效果。根據(jù)音調(diào)"hight"的高低設置點亮燈的數(shù)量,當"hight "為低時播放低音信號, 為高時播放中音信號。如果要用到高音信號可以將! hight!長度改為 2bit 。選取板上的 oLEDR [ 6..0]前 7盞燈與低音信號對應, oLEDR[ 13..7]與中音信號對應。在本設計中,為了看到明顯的流水燈變化, 當發(fā)出中音音頻時低音顯示燈全亮。

2.3、 LCD顯示模塊設計

首先需要在 SOPC Bu i lder中構(gòu)建 SOPC系統(tǒng), 按要求依次添加 N iosII處理器, 4 kB的片上 RAM, LCD模塊, 4位輸入口, 給處理器分配復位向量地址和異常向量地址。

LCD顯示模塊用來實現(xiàn)樂譜和音頻強度的實時顯示, 可以顯示 16 ? 2個字符, 其軟件流程如圖 2所示。

在FPGA多媒體開發(fā)平臺DE2上實現(xiàn)音樂流水燈控制系統(tǒng)的設計

圖 2 LCD軟件流程圖

其中 LCD初始化包括對 LCD的功能設置, 顯示開關(guān)設置和模式設置。LCD定位到首行首列是通過對LCD寫定位指令, 將顯示位置確定到第一行第一列。寫字符" jian pu"到第一行是通過寫數(shù)據(jù)指令將字符jian pu : 和實時變化的樂譜顯示在液晶屏的第一行。

低、中、高音分別用 L、M、H表示并且加上對應的音階值進行顯示。LCD顯示換行是通過定位指令來實現(xiàn)的。顯示音頻強度到第二行是用符號# > !的個數(shù)表示音調(diào)的高低, 一個表示低音 1 , 兩個表示低音 2 ,依次類推。

在對 LCD模塊進行顯示控制時, 用到了寫控制命令和寫數(shù)據(jù)命令。這些命令是針對具體配置的硬件電路而編寫的 .h頭文件。LCD模塊的頭文件如下:

#definelcd_write_cmd(base,data)

IOWR(base,0,data)

#definelcd_read_cmd(base)

IORD(base,1)

#definelcd_write_data(base,data)

IOWR(base,2,data)

#definelcd_read_data(base)

IORD(base,3)

這樣編寫是為了和具體的硬件電路相對應, 在LCD模塊的硬件描述語言中, 液晶模塊 RW 和 RS的地址分配如下:

assi gn LCD_ RW = address[ 0]

assi gn LCD_ RS = address[ 1]

其中 RS信號是命令與數(shù)據(jù)線, 高電平表示目前數(shù)據(jù)線上交換的是數(shù)據(jù), 低電平表示目前數(shù)據(jù)線上交換的是命令。液晶模塊根據(jù)這個信號做出正確的響應。RW 是電平信號, 高電平表示對液晶模塊執(zhí)行讀取操作, 低電平表示對液晶模塊寫入數(shù)據(jù)或命令。這樣便可以確定各讀寫操作對應于基地址的偏移量。

3、 頂層設計和驗證

系統(tǒng)的頂層設計就是將各個底層功能模塊例化,在頂層調(diào)用, 進行正確的連接, 構(gòu)成最后的系統(tǒng)。整個系統(tǒng)的硬件電路如圖 3所示。

在FPGA多媒體開發(fā)平臺DE2上實現(xiàn)音樂流水燈控制系統(tǒng)的設計

圖3 系統(tǒng)硬件電路

至此, 一個硬件音樂流水燈電路就完成了。外部提供兩路時鐘信號( 12MH z和 8 Hz) , 再將樂曲輸出端連接到帶有驅(qū)動裝置的蜂鳴器或揚聲器上, 就可以欣賞所添加的樂曲了。若硬件設計上只有一路時鐘信號輸入, 可在 FPGA 內(nèi)部設計分頻器, 將其分頻到8H z 再使用, 還可以在此基礎上更改。另外還可以在一個 ROM 種存儲多首樂曲, 通過按鍵選擇播放樂曲。

3、 結(jié)束語

文中在 FPGA芯片上, 利用 VHDL語言設計了功能強大的 32位 ALU。由于 ALU是 CP U的重要組成部分, 各類系統(tǒng)中都不可避免地需要 ALU, 因此本設計的應用泛圍較廣。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1624

    文章

    21538

    瀏覽量

    600475
  • 控制系統(tǒng)
    +關(guān)注

    關(guān)注

    41

    文章

    6466

    瀏覽量

    110298
  • 可編程邏輯
    +關(guān)注

    關(guān)注

    7

    文章

    514

    瀏覽量

    44037
收藏 人收藏

    評論

    相關(guān)推薦

    基于DE2的開源片系統(tǒng)Freedom E310移植

    Freedom E310是第一款基于RISC-V指令集架構(gòu)的開源商業(yè)片系統(tǒng),可以依據(jù)具體應用場景對其進行深度定制,簡單介紹Freedom E310的基礎,給出了將其移植到Alte
    發(fā)表于 06-08 15:06 ?5698次閱讀

    基于FPGA音樂流水燈控制系統(tǒng)設計

    介紹一種基于 FPGA音樂流水燈控制器, 采用硬件描述語言對其進行描述, 分別實現(xiàn)樂曲的播放和同步流水
    發(fā)表于 10-20 17:21 ?4442次閱讀

    基于FPGA音樂流水燈控制系統(tǒng)設計

    本帖最后由 eehome 于 2013-1-5 10:02 編輯 基于FPGA音樂流水燈控制系統(tǒng)設計
    發(fā)表于 08-19 23:22

    DE2開發(fā)板TV怎么實現(xiàn)視頻的播放

    DE2開發(fā)板TV那塊是怎么回事,怎么實現(xiàn)視頻的播放,是將寫好的視頻代碼下載到板子里,還是將視頻連接到板子,連接VGD顯示器就可以播放了。
    發(fā)表于 11-02 12:49

    利用處理器FPGA與液晶顯示模塊的圖形顯示的編程技術(shù)

    DE2是Altera公司針對大學教學及研究機構(gòu)推出的FPGA多媒體開發(fā)平臺。DE2
    發(fā)表于 07-30 07:28

    基于機智云服務平臺媒體設備控制系統(tǒng)

    的心情。隨著新型技術(shù)不斷涌現(xiàn)加入,利用云服務平臺實現(xiàn)對硬件設備的實時高效控制,由此實現(xiàn)了物質(zhì)世界、網(wǎng)絡世界和人類認識世界的聯(lián)通。為此本文也設計了一款適用于中小型環(huán)境的基于機智云服務
    發(fā)表于 07-31 20:47

    SVPWM伺服控制系統(tǒng)FPGA設計與實現(xiàn)

    介紹了一個基于FPGA的交流電動機伺服控制系統(tǒng),該系統(tǒng)利用SVPWM原理進行控制,通過驅(qū)動三相逆變器達到控制三相交流電動機轉(zhuǎn)速的目的。通過
    發(fā)表于 11-03 16:13 ?102次下載

    音樂控制流水燈

    音樂控制流水燈電路,燈串依次輪流明滅,并且有燈光亮度,明滅間隔以及流水循環(huán)速度均會隨著音樂聲的強比變化而變化。該
    發(fā)表于 12-26 19:42 ?8638次閱讀
    <b class='flag-5'>音樂</b><b class='flag-5'>控制</b><b class='flag-5'>流水燈</b>

    DE2中文用戶手冊

    DE2 板是以CycloneII 2C35FPGA為特點的672 針引腳的包裝。板所有重要的部件都與板的芯片相連,使用戶能夠控制
    發(fā)表于 02-15 15:41 ?64次下載
    <b class='flag-5'>DE2</b>中文用戶手冊

    高速多通道數(shù)據(jù)采集系統(tǒng)的設計與實現(xiàn)

    電子發(fā)燒友網(wǎng)核心提示:本設計采用DE2、THDB-ADA平臺進行開發(fā)DE2平臺選用FPGA E
    發(fā)表于 11-27 10:36 ?4042次閱讀

    基于FPGA了解DE2開發(fā)

    DE2 板是以CycloneII 2C35FPGA為特點的672 針引腳的包裝。板所有重要的部件都與板的芯片相連,使用戶能夠控制
    發(fā)表于 09-01 16:32 ?25次下載
    基于<b class='flag-5'>FPGA</b>了解<b class='flag-5'>DE2</b><b class='flag-5'>開發(fā)</b>板

    使用Verilog HDL和DE2開發(fā)板實現(xiàn)交通燈設計的論文說明

    ,使其實現(xiàn)道路交通的正常運轉(zhuǎn),突出了其作為硬件描述語言的良好的可讀性、可移植性和易理解等優(yōu)點,并通過Quartus2完成綜合、仿真。此程序通過下載到DE2開發(fā)板后,可應用于實際的交通燈
    發(fā)表于 10-10 17:08 ?39次下載
    使用Verilog HDL和<b class='flag-5'>DE2</b><b class='flag-5'>開發(fā)板實現(xiàn)</b>交通燈設計的論文說明

    如何使用VHDL設計Altera的DE2SDRAM存儲器

    本教程介紹如何將Altera的DE2開發(fā)和教育板的SDRAM芯片與使用Altera SOPC Builder實現(xiàn)的Nios II系統(tǒng)一起使
    發(fā)表于 01-22 15:34 ?9次下載
    如何使用VHDL設計Altera的<b class='flag-5'>DE2</b>板<b class='flag-5'>上</b>SDRAM存儲器

    基于FPGA開發(fā)流水燈的設計實現(xiàn)

    流水燈,有時候也叫跑馬燈,是一個簡單、有趣又經(jīng)典的實驗,基本所有單片機的玩家們初期學習的階段都做過。本次我們也來介紹一下如何通過小腳丫FPGA實現(xiàn)一個
    發(fā)表于 06-20 17:10 ?1217次閱讀
    基于<b class='flag-5'>FPGA</b><b class='flag-5'>開發(fā)</b>板<b class='flag-5'>流水燈</b>的設計<b class='flag-5'>實現(xiàn)</b>

    突破傳統(tǒng)界限:訊維中央控制系統(tǒng)多媒體領(lǐng)域的創(chuàng)新應用

    多媒體領(lǐng)域的創(chuàng)新應用。 一、智能化的會議體驗 中央控制系統(tǒng)會議領(lǐng)域的應用大大提升了會議的效率和智能化程度。通過集中控制各種
    的頭像 發(fā)表于 01-23 14:54 ?312次閱讀