亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于FPGA和UART的樂曲演奏系統(tǒng)設(shè)計

        2019-02-11 10:44:52呂兆承傅小蘭李營羅靖宇
        關(guān)鍵詞:波特率蜂鳴器樂譜

        呂兆承, 傅小蘭, 李營, 羅靖宇

        ( 淮南師范學(xué)院 電子工程學(xué)院, 安徽 淮南 232038 )

        0 引言

        目前,具有樂曲演奏功能的電子產(chǎn)品大多采用單片機(jī)微處理器來實現(xiàn)樂曲演奏,但這些產(chǎn)品因受硬件資源的限制,難以對原設(shè)計進(jìn)行變更或升級[2].FPGA技術(shù)是一種新型的電路設(shè)計技術(shù),其通過軟件編程設(shè)計硬件電路,可極大地提高電路設(shè)計的效率和可靠性,被廣泛使用在5G通信、大數(shù)據(jù)處理、人工智能、工業(yè)控制等領(lǐng)域[3].目前,有學(xué)者嘗試性地將FPGA技術(shù)運(yùn)用于樂曲演奏中.例如:崔智軍等[4]在FPGA器件上設(shè)計了一個具有簡易觸摸屏的電子琴電路,并實現(xiàn)了觸摸控制彈奏和自動播放樂曲的功能.王麗君等[5]采用VHDL編程技術(shù)設(shè)計了一種基于FPGA的簡易電子琴,該電子琴具有手動彈奏、自動演奏和簡譜碼顯示等功能.基于上述研究,本文利用Altera的FPGA芯片,在Quartus平臺下,采用top-down設(shè)計方法,設(shè)計一款基于UART通信接口的樂曲硬件演奏電路,并通過嵌入式邏輯分析儀SignalTap II對系統(tǒng)的有效性進(jìn)行仿真驗證.

        1 系統(tǒng)設(shè)計

        該演奏系統(tǒng)主要包括串口調(diào)試工具、UART串口接收模塊、樂曲演奏模塊和蜂鳴器,其總體結(jié)構(gòu)框圖如圖1所示.串口調(diào)試工具的功能主要是控制指令的發(fā)送;UART串口接收模塊的功能主要是控制指令的接收,并將接收到的控制指令發(fā)送至樂曲演奏模塊;樂曲演奏模塊的功能主要是輸出使樂曲能連續(xù)演奏所需的基本數(shù)據(jù);蜂鳴器的功能主要是演奏樂曲.其中UART串口接收模塊和樂曲演奏模塊在FPGA中實現(xiàn).由此可以看出,該系統(tǒng)只需很少的外圍器件即可演奏音樂,從而可提高系統(tǒng)的可靠性.

        圖1 演奏系統(tǒng)的結(jié)構(gòu)框圖

        2 UART串口接收模塊設(shè)計

        2.1 UART的工作原理

        UART串口的通信主要由兩根信號線來實現(xiàn),一根用于串口發(fā)送,另外一根負(fù)責(zé)串口接收.數(shù)據(jù)在傳輸過程中不需要時鐘,只需通信雙方在數(shù)據(jù)傳輸過程中約定好一個特定的波特率即可,典型的波特率有9 600、19 200、115 200 bps等.數(shù)據(jù)的傳輸有起始位、停止位、中間位.起始位表示數(shù)據(jù)傳輸?shù)拈_始,停止位表示數(shù)據(jù)傳輸?shù)慕Y(jié)束,中間位的個數(shù)可以根據(jù)需要設(shè)定,并可以設(shè)定奇偶校驗位(可選)[6].UART的數(shù)據(jù)傳輸格式如圖2所示.數(shù)據(jù)格式為1位起始位、8位數(shù)據(jù)位、1位停止位,無校驗位.

        圖2 UART的數(shù)據(jù)傳輸格式

        2.2 UART串口接收模塊程序的設(shè)計

        根據(jù)UART通信原理,本文將UART串口接收模塊劃分為波特率發(fā)生器、數(shù)據(jù)接收模塊,如圖3所示.波特率發(fā)生器的功能是產(chǎn)生與UART通信同步的時鐘,通過該功能UART串口接收模塊可方便地按照UART通信的時序要求進(jìn)行數(shù)據(jù)接收或者發(fā)送.數(shù)據(jù)接收模塊的主要功能是接收和轉(zhuǎn)換數(shù)據(jù).數(shù)據(jù)接收模塊在完成接收數(shù)據(jù)后,輸出結(jié)束標(biāo)志信號[7].本文將UART串口接收模塊的端口定義為:

        1) clk為系統(tǒng)時鐘輸入端,輸入頻率為50 MHz;

        2) rst_n為系統(tǒng)復(fù)位信號輸入端,低電平有效;

        3) uart_rx為接收模塊串行數(shù)據(jù)接收端;

        4) out_rx_dara為接收模塊并行數(shù)據(jù)輸出端;

        因為是連續(xù)運(yùn)動,著陸過程還會繼續(xù),但碰撞時間已經(jīng)記錄下來,做分析處理,將本文的改進(jìn)算法與一般碰撞檢測算法進(jìn)行對比,可得到如下的檢測效果,如表2:

        5) rx_bps_start為數(shù)據(jù)接收標(biāo)志信號,高電平表示接收數(shù)據(jù).

        圖3 UART串口接收模塊的RTL級視圖

        2.3 仿真測試

        本文用Quartus自帶的嵌入式邏輯分析儀SignalTap II來捕獲和顯示信號,并用其來分析系統(tǒng)硬、軟件之間的互相作用[8].使用SignalTap II的一般流程為:新建調(diào)試文件,添加信號,設(shè)置信號觸發(fā),設(shè)置時鐘相關(guān)參數(shù),下載仿真.UART串口接收模塊的仿真結(jié)果如圖4所示.由圖4可以看出:串行數(shù)據(jù)接收端uart_rx上的數(shù)據(jù)序列為0100011001,其起始位為“0”,數(shù)據(jù)位為“10001100”,停止位為“1”(最后一位).在數(shù)據(jù)接收標(biāo)志信號rx_bps_start和波特率時鐘計數(shù)器bit_cnt的控制下,UART串口只采集輸入數(shù)據(jù)(串行數(shù)據(jù))的中間8位有效位,并將其逐位存儲到寄存器shift_data中.當(dāng)UART串口接收到所有(9個)的波特率時鐘之后,寄存器shift_data將接收到的數(shù)據(jù)并行輸出給數(shù)據(jù)輸出端out_rx_data.因UART串口在數(shù)據(jù)通信時首先發(fā)送的是最低位數(shù)據(jù),因此接收的數(shù)據(jù)為“00110001”.由表4中的數(shù)據(jù)欄可以看到,當(dāng)UART串口接收完數(shù)據(jù)后,其數(shù)據(jù)接收標(biāo)志信號rx_bps_start為“0”,數(shù)據(jù)輸出端out_rx_data為“00110001”,與串行數(shù)據(jù)接收端uart_rx接收的數(shù)據(jù)一致.這表明,UART串口接收模塊的功能正常.

        圖4 UART串口接收模塊的仿真時序

        3 樂曲演奏模塊設(shè)計

        3.1 樂曲演奏的原理和實現(xiàn)

        組成樂曲的每個音符的頻率值(音調(diào))及其持續(xù)的時間(音長)是樂曲能夠連續(xù)演奏所需的兩個基本數(shù)據(jù).①音調(diào).因樂曲都是由一連串的音符組成,當(dāng)演奏電路按照樂曲的樂譜依次輸出這些音符所對應(yīng)的頻率時,蜂鳴器即可連續(xù)地發(fā)出音符的音調(diào)[9].這些音符的頻率是通過對基準(zhǔn)頻率進(jìn)行分頻得到的.②音長.音長是由樂曲的速度及每個音符的節(jié)拍數(shù)來確定的.為了實現(xiàn)節(jié)拍,需選擇一個時鐘頻率來控制音長.如:若將全音符的持續(xù)時間設(shè)為1 s,只需提供一個4 Hz的時鐘頻率即可產(chǎn)生四分音符的時長;對于節(jié)拍較長的音符,如二分音符,則連續(xù)讀取2次即可.因此,只要控制好輸出到蜂鳴器的激勵信號(包括頻率的高低和持續(xù)時間)就可以使蜂鳴器發(fā)出連續(xù)的樂曲聲[10].

        根據(jù)上述樂曲演奏的原理,本文將樂曲演奏模塊劃分為4個子模塊:音符數(shù)據(jù)ROM模塊、地址發(fā)生器模塊、樂譜碼查表模塊、數(shù)控分頻器模塊.

        3.2 音符數(shù)據(jù)ROM模塊

        音符數(shù)據(jù)ROM模塊的功能是存放樂曲中的音符數(shù)據(jù).該功能是利用Quartus軟件自帶的IP核LPM-ROM來實現(xiàn)的,即將樂譜中相應(yīng)的音符按照一定的規(guī)則放在一個連續(xù)的地址上.將音符轉(zhuǎn)換為代碼的規(guī)則為:采用8位二級制數(shù)表示音符,低4位用1(do)、2(re)、3(mi)、4(fa)、5(sol)、6(la)、7(si)代表音階中的7個基本音級,高4位用1、2、3分別表示每個音級的低音、中音和高音,休止符用0表示.本文選用的ROM的容量為8×512 bits,并選擇3首樂曲(《兩只老虎》《送別》和《布娃娃和小熊跳舞》)分別儲存在ROM中,各樂曲的地址值分別為0~71、88~215、240~367.

        3.3 地址發(fā)生器模塊

        本文將一個9位二進(jìn)制計數(shù)器(計數(shù)最大值為512)作為音符數(shù)據(jù)ROM模塊的地址發(fā)生器,以此實現(xiàn)按節(jié)拍讀取樂譜.該模塊每收到1次時鐘信號,計數(shù)器就會計數(shù)1次;計數(shù)結(jié)果停留的時間越長,該音符演奏的時間就越長.

        3.4 樂譜碼查表模塊

        樂譜碼查表模塊中包含樂曲全部音符所對應(yīng)的頻率,如表1所示.表1中的計算結(jié)果是四舍五入所得,因此與每個音符的實際頻率相比會出現(xiàn)小于1 Hz的誤差.

        表1 簡譜中的音符與頻率的關(guān)系

        3.5 數(shù)控分頻器模塊

        數(shù)控分頻器模塊的功能是通過對某個基準(zhǔn)時鐘頻率進(jìn)行分頻,獲得與各個音符所對應(yīng)的頻率輸出.

        3.6 樂曲演奏模塊程序的設(shè)計

        圖5為樂曲演奏模塊的RTL級視圖.樂器演奏模塊的端口定義如下:

        1) clk為系統(tǒng)時鐘輸入端,輸入頻率為50 MHz;

        2) rst_n為系統(tǒng)復(fù)位信號輸入端;

        3) key_cnt為控制信號輸入端,用來選擇ROM中不同的地址段.選擇第1首樂曲,key_cnt的值為“8’h30”,計數(shù)器從位置0~71循環(huán)計數(shù),由此實現(xiàn)樂曲的循環(huán)演奏;

        4) beep為驅(qū)動蜂鳴器的輸出信號.

        圖5 樂曲演奏模塊的RTL級視圖

        為了實現(xiàn)樂曲的播放,首先需要將曲譜數(shù)據(jù)存儲到音符數(shù)據(jù)ROM模塊中,然后按照一定的節(jié)拍從ROM中讀出曲譜.在時鐘的驅(qū)動下,音符數(shù)據(jù)ROM模塊依次輸出該曲譜的音符數(shù)據(jù)并發(fā)送至樂譜碼查表模塊;樂譜碼查表模塊輸出音符的相應(yīng)頻率,并將此頻率輸送至數(shù)控分頻器模塊;數(shù)控分頻器模塊通過對50 MHz時鐘進(jìn)行分頻,輸出此音符所對應(yīng)的發(fā)聲頻率,由此驅(qū)動蜂鳴器發(fā)出連續(xù)的樂曲聲.當(dāng)樂曲被演奏完一遍后,樂曲演奏模塊能自動從頭開始循環(huán)演奏.樂曲演奏模塊根據(jù)key_cnt取值,選擇的地址段不同,演奏不同的樂曲.樂曲演奏的實現(xiàn)過程如圖6所示.

        3.7 仿真測試

        圖7為樂曲演奏模塊的時序仿真圖.圖7中輸入的控制信號key_cnt為“30”,演奏的樂曲為《兩只老虎》.其中第1個音符是中音do,它的輸出頻率是523 Hz,占了2個狀態(tài)的時間(不包括0時刻之前的狀態(tài));第2個音符是中音re,它的輸出頻率是587 Hz,占了2個狀態(tài)的時間;第3個音符是中音mi,它的輸出頻率是659 Hz,占了2個狀態(tài)的時間;第4個音符是中音do,占了4個狀態(tài)的時間.對照《兩只老虎》樂曲的樂譜可知,仿真結(jié)果正確.

        圖6 樂曲演奏流程

        圖7 樂曲演奏模塊的仿真時序

        4 系統(tǒng)調(diào)試

        測試完SignalTap II后,還需進(jìn)行硬件測試.本設(shè)計采用芯航線AC620開發(fā)板(Altera Cyclone IV EP4CE10F17C8N)進(jìn)行系統(tǒng)的調(diào)試和功能驗證.調(diào)試過程為:首先打開串口調(diào)試工具助手,配置串口通信參數(shù);然后根據(jù)用戶需求發(fā)送控制指令給FPGA,F(xiàn)PGA根據(jù)此命令控制樂曲演奏器播放不同的樂曲.經(jīng)測試,系統(tǒng)可實現(xiàn)智能化控制演奏過程,表明本文系統(tǒng)符合設(shè)計要求.

        5 結(jié)語

        本文在EDA開發(fā)平臺上,利用FPGA技術(shù)設(shè)計了一款基于UART數(shù)據(jù)傳輸?shù)臉非葑嚯娐?測試結(jié)果表明:通過PC機(jī)串口調(diào)試助手發(fā)送控制指令給FPGA,F(xiàn)PGA可以準(zhǔn)確地接收相應(yīng)指令,并確定出與該指令相對應(yīng)的樂曲,然后通過蜂鳴器即可完成音樂播放.本文方案穩(wěn)定可靠,使用便捷,因此具有很好的實用性.另外,本系統(tǒng)在實際運(yùn)行中可根據(jù)外設(shè)和處理器的不同需要,通過調(diào)整波特率和改變數(shù)據(jù)幀的格式設(shè)置等即可將本系統(tǒng)運(yùn)用于不同的數(shù)字演奏系統(tǒng).

        猜你喜歡
        波特率蜂鳴器樂譜
        電動自行車產(chǎn)品車速提示音檢測現(xiàn)狀和整改技術(shù)研究(2)
        是你一直想著我
        CAN 總線波特率自適應(yīng)程序設(shè)計
        智能制造(2020年5期)2020-07-03 06:24:00
        掌控板制作簡易鋼琴
        電腦報(2020年12期)2020-06-30 19:56:42
        樂譜:放飛夢想
        北方音樂(2019年20期)2019-12-04 04:07:14
        樂譜
        單片機(jī)驅(qū)動蜂鳴器的程序設(shè)計
        基于FPGA的異步串行通信波特率容錯設(shè)計
        電子測試(2018年7期)2018-05-16 06:27:18
        一毛學(xué)琴記——樂譜失蹤
        琴童(2018年11期)2018-01-23 11:34:08
        豐田凱美瑞240V車間隙警告蜂鳴器異常鳴響
        亚洲av永久无码精品放毛片| 久久国产精品免费一区二区| 久久国产综合精品欧美| 亚洲AⅤ樱花无码| 极品人妻少妇一区二区| 色av色婷婷18人妻久久久| 强迫人妻hd中文字幕| 久久精品不卡一区二区三区| 在线麻豆精东9制片厂av影现网| 欧美寡妇xxxx黑人猛交| 亲子乱aⅴ一区二区三区下载| 久99久热只有精品国产男同| 久久无码高潮喷水抽搐| 亚洲av日韩av天堂久久不卡| 毛片在线播放亚洲免费中文网| 国产亚洲一区二区在线观看| 精品成人av一区二区三区| 精品爆乳一区二区三区无码av| 久久综合给合久久狠狠狠9| 青青自拍视频成人免费观看| 日韩一二三四区在线观看| 亚洲成人免费av影院| 少妇被爽到高潮喷水久久欧美精品| 一本大道久久东京热无码av| 欧美午夜a级精美理论片| 亚州毛色毛片免费观看| 亚洲天码一区二区三区| 亚洲国产美女精品久久久久∴| 精品亚洲成在人线av无码| 中文无码精品一区二区三区| 在线观看亚洲精品国产 | 色男色女午夜福利影院| 国产日产韩国av在线| 又粗又黄又猛又爽大片app| av网站免费线看| 成年男人裸j照无遮挡无码| 美女偷拍一区二区三区| 丁香五月缴情在线| 日日碰狠狠添天天爽超碰97| 国产成人久久精品77777综合| 亚洲一区二区三区高清视频|