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

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

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

基于AsixOS和MC68EZ328處理器實現(xiàn)手持信息終端的設(shè)計

電子設(shè)計 ? 來源:電子產(chǎn)品世界 ? 作者:繆愛國;劉昊;嚴(yán)菊 ? 2021-06-11 17:08 ? 次閱讀

作者: 繆愛國;劉昊;嚴(yán)菊明

引言

MIDI(樂器數(shù)字接口)是一種電子樂器之間以及電子樂器與電腦等設(shè)備之間的統(tǒng)一交流協(xié)議。該協(xié)議是一個二進(jìn)制形式的音樂描述語言,每一個描述樂器演播動作的字都賦給一個特定的二進(jìn)制代碼,通過它指示樂器即MIDI設(shè)備做什么和怎樣做,如演奏音符、加大音量、生成音響效果等。

由于MIDI本身不是聲音信號,而只是讓聲音設(shè)備產(chǎn)生聲音的一系列的指令,所以MIDI文件本身非常小,特別適用于對存儲容量有限制的手持設(shè)備,如手機(jī)和掌上電腦。本文將著重介紹如何在手持信息終端嵌入式系統(tǒng)平臺上實現(xiàn)MIDI的播放。

MIDI的基本原理

MIDI文件主要由MIDI消息組成。MIDI消息又可分成通道消息和系統(tǒng)消息兩大類,如圖1所示。

圖1 MID I消息的組成 從上面的描述中,

可以看到MIDI實際上只是一組數(shù)字信號,并不包括聲音信號,它記錄的是音樂在什么時間用什么音色發(fā)多長的音等等。MIDI音樂每個樂音是由三個要素組成的:音色、音高(音調(diào))和音長。可以把各種樂器的音色先錄下來,然后給每個音色編號,如鋼琴編為00;再給音高編號,如C5編為49;然后是音符播放的時間的編碼,如把8分音符編號為60。此時,數(shù)字串“00 49 60”就表示演奏的是鋼琴的C5音,演奏時間為8分音符。MIDI在播放時,會根據(jù)MIDI文件紀(jì)錄的樂曲信息向預(yù)先錄制好的樂器(如鋼琴)的波表發(fā)出指令,從波表中找出對應(yīng)的聲音信息,經(jīng)過合成、加工后再回放出來,就形成了美妙的音樂。

手持信息終端軟硬件平臺

手持信息終端包括手機(jī)、個人數(shù)字助理(PDA)、掌上電腦(HPC)等等,它們可以實現(xiàn)多種功能,如PIM(電話簿、日程安排、備忘錄、記事本、時鐘)、計算器、錄音、辭典、游戲和播放音樂等功能;也可以加入無線通信的功能,如電話、短信、無線Email等等;還可以通過數(shù)據(jù)線與PC相連,互通數(shù)據(jù)、進(jìn)行備份和數(shù)據(jù)交換。

該手持信息終端平臺采用的是業(yè)界流行的Motorola公司的MC68EZ328處理器;存儲模塊由4M字節(jié)的Flash閃存和2M字節(jié)的EDO DRAM組成;顯示模塊采用160×240的16級灰度的黑白屏,屏上合成有四線電阻式觸摸屏。音頻處理模塊的作用是用來播放音樂,它由兩部分構(gòu)成:濾波電路和音頻功率放大電路。該模塊接受來自處理器內(nèi)部輸出的PWM脈沖信號和音頻模塊的開啟關(guān)閉的控制信號。硬件平臺的結(jié)構(gòu)如圖2所示。

圖2 手持信息終端的硬件平臺結(jié)構(gòu)

該手持信息終端是以自主研發(fā)的多任務(wù)嵌入式操作系統(tǒng)AsixOS為基礎(chǔ),包括操作系統(tǒng)(Asix OS)、驅(qū)動程序包(Driver)、應(yīng)用程序包(Application)、圖形用戶接口(AsixWIN)、圖形庫軟件包(AsixGPC)、嵌入式數(shù)據(jù)庫(AsixDB)、嵌入式文件系統(tǒng)(AsixFS)、網(wǎng)絡(luò)協(xié)議軟件包(Asixnet)等等。Asix模塊原理框圖如圖3所示。

圖3 Asix模塊原理框圖

由圖可以看出,音頻驅(qū)動模塊是播放MIDI音樂的基礎(chǔ),它控制硬件設(shè)備的打開關(guān)閉等等操作;音頻服務(wù)層是連接應(yīng)用程序和底層驅(qū)動的樞紐,它包含了對底層操作的接口;應(yīng)用程序是整個手持終端產(chǎn)品的具體功能的體現(xiàn),MIDI播放器是其中一個用來測試MIDI播放的小應(yīng)用程序,它是建立在音頻服務(wù)模塊和音頻驅(qū)動模塊基礎(chǔ)之上的。

MIDI播放的實現(xiàn)

MIDI的播放需要軟硬件協(xié)同工作,要播放MIDI文件,首先必須對MIDI文件進(jìn)行解碼:若是控制信息(如節(jié)拍、時間格式等等),則進(jìn)行相應(yīng)的控制;若遇到音符信息,則將相應(yīng)的數(shù)據(jù)(音符代碼、時間值)存儲在音頻緩沖區(qū)。

解碼完成后,聲音處理程序?qū)σ纛l緩沖區(qū)中的音頻數(shù)據(jù)進(jìn)行處理,根據(jù)音符代碼從各個軟波表中取出相應(yīng)音符的真實采樣值送往音頻設(shè)備,再由音頻設(shè)備的濾波電路進(jìn)行濾波排除電路中的高低頻干擾,然后再經(jīng)過音頻放大電路對音頻信號進(jìn)行放大,驅(qū)動喇叭放出音樂,音樂時間的長短則根據(jù)音頻緩沖區(qū)中記錄音符長短的數(shù)據(jù)來控制音頻設(shè)備的開啟和關(guān)閉來實現(xiàn)。

由于手持信息終端存儲容量的限制,該手持信息終端的軟波表只包含了大鋼琴(Acoustic Grand Piano)的一種音色,具有3階音色(12×3個音符)。該軟波表采用16kb/s和8bit的采樣率進(jìn)行錄制,每個音符采樣0.5秒,即每個音符占有8000個字節(jié),所以整個軟波表的大小為12×3×8000=288K字節(jié),這樣的大小對于手持信息終端來說應(yīng)該是可以承受的。

聲音處理程序是利用MC 68EZ328的定時功能和PWM輸出功能來實現(xiàn)的。PWM具有三種工作模式:回放(playback)模式、單音調(diào)(tone)模式、D/A模式。由于tone模式發(fā)出的聲音的頻率比較單一,不能達(dá)到真實樂器的效果,所以采用了回放模式?;胤拍J绞抢密洸ū韥韺崿F(xiàn)的,它根據(jù)真實樂器的采樣值進(jìn)行回放,從而能達(dá)到比較真實的效果。

MIDI播放的實現(xiàn)在硬件上是由兩部分組成的:M68EZ328內(nèi)部的PWM模塊和外部濾波放大電路。具體原理如下:

PWM(脈沖寬度調(diào)制)是一種對模擬信號電平進(jìn)行數(shù)字編碼的方法。通過對方波的占空比調(diào)制來對一個模擬信號的電平進(jìn)行編碼。

音頻處理的外圍電路比較簡單,它主要用來處理由PWM輸出的MIDI音樂,由濾波電路和音頻功率放大電路組成。MC68EZ328內(nèi)部具有PWM輸出電路,經(jīng)過一個由兩級運(yùn)算放大器構(gòu)成的濾波電路,濾除噪聲后取出音樂信號;濾波后的信號,在經(jīng)過功率放大電路放大后,推動揚(yáng)聲器發(fā)出音樂聲。為了減小功耗,音頻功率放大電路和濾波電路都有使能控制信號控制,當(dāng)需要播放音樂時將電路使能,平常關(guān)閉該模塊。

軟件的實現(xiàn)

通過對軟件平臺的介紹,可以知道Asix OS是一個嵌入式的多任務(wù)實時操作系統(tǒng),所有應(yīng)用程序都是通過任務(wù)調(diào)度機(jī)制來實現(xiàn)的。因此要實現(xiàn)MIDI的播放需要軟件在以下三個層次給予支持:音頻驅(qū)動模塊、音頻服務(wù)模塊、應(yīng)用程序(MIDI播放器)。當(dāng)點擊應(yīng)用程序(如MIDI播放器)后,操作系統(tǒng)就會進(jìn)行任務(wù)調(diào)度,然后啟動相應(yīng)的服務(wù)模塊(音頻服務(wù)模塊),通過服務(wù)模塊再調(diào)用底層驅(qū)動來播放MIDI音樂。下面將具體闡述一下各模塊的功能和實現(xiàn):

該模塊是MIDI能夠播放聲音的基礎(chǔ),它直接和底層硬件相關(guān),通過CPU中PWM模塊的一些寄存器來實現(xiàn)聲音設(shè)備的打開關(guān)閉等操作。它通過聲音服務(wù)模塊被所有的需要發(fā)音的程序所調(diào)用,是所有發(fā)音程序得以正常工作的基礎(chǔ)。

它由以下幾個子模塊組成:PWM音頻設(shè)備初始化模塊;PWM音頻設(shè)備回放率配置模塊;PWM音頻設(shè)備啟動模塊和關(guān)閉模塊;PWM音頻設(shè)備工作模式選擇模塊。

該模塊屏蔽了底層的驅(qū)動,為應(yīng)用程序訪問音頻設(shè)備提供了統(tǒng)一的接口,使用戶無需關(guān)心底層的具體實現(xiàn)即可以完成聲音設(shè)備的控制,使之具有較好的移植性。它主要通過消息機(jī)制來實現(xiàn),為應(yīng)用程序和底層驅(qū)動模塊的通信提供了一個橋梁,從而避免了直接和硬件打交道。服務(wù)層主要由定時播放模塊、定長播放模塊和配置模塊組成。

音頻服務(wù)模塊是播放MIDI的關(guān)鍵,它處于承上啟下的作用,用于連接上層的應(yīng)用程序和底層的設(shè)備驅(qū)動。該模塊中MIDI解碼子模塊完成對MIDI文件的解釋,并得到最終要播放的音符信息和各種控制信息鏈表,由于MIDI的解碼涉及到MIDI文件的規(guī)范協(xié)議和具體的算法,這里不作詳細(xì)的描述。

音頻服務(wù)模塊提供兩個層次的接口,面向應(yīng)用程序的接口和面向底層的接口。

服務(wù)模塊的接口工作原理如圖4所示。

圖4 服務(wù)模塊接口

MIDI播放模塊包括MIDI播放器(用來測試MIDI播放的應(yīng)用程序之一),此外還可以在手機(jī)鈴聲、信息提示音、筆觸音等等程序中實現(xiàn)MIDI的播放,但其實現(xiàn)原理基本上都是一樣的。除了界面上的設(shè)計,主要就是調(diào)用MIDI服務(wù)模塊提供的幾個接口函數(shù)即可實現(xiàn)MIDI的播放,這里不作詳細(xì)介紹。

結(jié)語

本文的手持信息終端平臺經(jīng)過實際測試,播放效果令人滿意,能夠和一般的手機(jī)鈴聲相媲美。由于MIDI文件的體積較小,正好可以彌補(bǔ)手持信息終端存儲容量小的缺陷,因此它具有廣闊的應(yīng)用前景。

責(zé)任編輯:gt

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

    關(guān)注

    68

    文章

    18948

    瀏覽量

    227380
  • 接口
    +關(guān)注

    關(guān)注

    33

    文章

    8279

    瀏覽量

    150030
  • 操作系統(tǒng)
    +關(guān)注

    關(guān)注

    37

    文章

    6556

    瀏覽量

    122796
收藏 人收藏

    評論

    相關(guān)推薦

    Cortex-A9處理器的精妙應(yīng)用

    與耗能較低的特點,比較多應(yīng)用在智能手機(jī),也配置在各大智能終端上?! ?.智能手機(jī)  市面上除了部分如htc和小米這種用高通的cpu的手機(jī)商,其他雙核手機(jī)基本采用ARM Cortex-A9處理器。比較著名的有MOTO里程碑3代、Atrix4G,LG擎天柱2X,三星9100,
    發(fā)表于 11-03 17:02

    適用于Motorola 68020/68EC020和68030/68EC030處理器的HP 64700系列仿真

    適用于Motorola 68020/68EC020和68030/68EC030處理器的HP 64700系列仿真
    發(fā)表于 02-27 16:59

    32位處理器的開發(fā)與8位處理器的開發(fā)有哪些明顯的不同?

    32位處理器的開發(fā)與8位處理器的開發(fā)有哪些明顯的不同?開發(fā)一個32位的嵌入式系統(tǒng)需要哪些工具和環(huán)境呢?32位嵌入式系統(tǒng)的開發(fā)過程中存在哪些技術(shù)難點?有什么方法去應(yīng)對呢?
    發(fā)表于 04-19 08:11

    如何利用PXA255處理器的Sitsang開發(fā)平臺實現(xiàn)紅外模塊的設(shè)計?

    本文將詳細(xì)講解基于Inte1的PXA255處理器的Sitsang開發(fā)平臺紅外模塊的設(shè)計,其中包括Linux下的IrDA驅(qū)動程序的開發(fā)和基于MC68HC908AP64紅外發(fā)射的軟硬件設(shè)計兩個部分。
    發(fā)表于 04-27 06:03

    MSM8940處理器有哪些特點

    MSM8940處理器是什么?MSM8940處理器有哪些特點?
    發(fā)表于 11-09 07:09

    RK3399處理器與AR9201處理器有哪些不同之處呢

    RK3399處理器與AR9201處理器有哪些不同之處呢?hi3559A處理器與RV1126處理器有哪些不同之處呢?
    發(fā)表于 02-21 07:29

    Sitara AM62處理器的資料分享

    和預(yù)測性維護(hù)),有助于賦予HMI全新的意義,而不是僅限于實現(xiàn)人機(jī)交互的界面。AM62處理器能夠以低功耗實現(xiàn)邊緣器件的分析功能(掛起狀態(tài)功耗低至7mW且無需特殊考慮散熱設(shè)計),支持工程師靈活地在尺寸受限
    發(fā)表于 11-03 06:11

    基于ARM的PC/104處理器模塊設(shè)計

    提出了一種低成本的PC/104處理器模塊的設(shè)計。該模塊硬件上以ARM處理器為核心實現(xiàn)了PC/104處理模塊的基本結(jié)構(gòu)、總線接口,軟件上構(gòu)建了嵌入式Linux操作系統(tǒng)。以ARM
    發(fā)表于 08-25 10:36 ?20次下載

    Intel 64位處理器,Intel 64位處理器結(jié)構(gòu)原理

    Intel 64位處理器,Intel 64位處理器結(jié)構(gòu)原理 現(xiàn)在人們廣泛使用的是由32位微處理器構(gòu)成的計算系統(tǒng),但是32位的計算和操作系統(tǒng)不能支持
    發(fā)表于 03-26 15:07 ?3250次閱讀

    蘋果a6處理器怎么樣_a6處理器參數(shù)

    蘋果正式發(fā)布iphone5,iphone5采用A6處理器,那么A6處理器怎么樣?a6處理器參數(shù)是什么呢?a6處理器四核的嗎?帶著這些疑問,我們來一起了解下A6
    發(fā)表于 09-13 14:29 ?2.6w次閱讀

    基于ARM11處理器的嵌入式視頻處理終端設(shè)計與實現(xiàn)

    首先對嵌入式系統(tǒng)和視頻處理進(jìn)行了簡單的介紹,指出了采用$3C6410處理器設(shè)計的視頻處理終端具有的優(yōu)勢。其次,對$3C6410多格式視頻編解碼的使用進(jìn)行了仔細(xì)分析,為多格式視頻編解碼
    發(fā)表于 12-17 14:56 ?21次下載
    基于ARM11<b class='flag-5'>處理器</b>的嵌入式視頻<b class='flag-5'>處理</b><b class='flag-5'>終端</b>設(shè)計與<b class='flag-5'>實現(xiàn)</b>

    麒麟9000處理器和高通驍龍875處理器相比如何?

    隨著華為mate10系列的發(fā)布,華為最后一代旗艦處理器,麒麟9000也就此亮相,大家對于麒麟9000處理器十分的看好。因為麒麟9000處理器在安兔兔的跑分竟然高達(dá)72萬分,較上一代麒麟990
    的頭像 發(fā)表于 11-03 11:31 ?5777次閱讀

    vivo將首發(fā)搭載Exynos 1080處理器終端產(chǎn)品

    芯片將由vivo首發(fā)?,F(xiàn)在有最新消息,近日三星官方正式予以證實,vivo將首發(fā)搭載Exynos 1080處理器終端產(chǎn)品。
    的頭像 發(fā)表于 11-29 10:42 ?2303次閱讀

    基于Linux和XScale PXA270處理器實現(xiàn)信息交互系統(tǒng)的設(shè)計

    本系統(tǒng)采用Client-Server結(jié)構(gòu),包含兩大功能模塊:嵌入式信息終端模塊和PC服務(wù)模塊。信息終端以基于XScale PXA270
    的頭像 發(fā)表于 06-22 16:00 ?2051次閱讀
    基于Linux和XScale PXA270<b class='flag-5'>處理器</b><b class='flag-5'>實現(xiàn)</b><b class='flag-5'>信息</b>交互系統(tǒng)的設(shè)計

    rk3566處理器屬于什么檔次?

    rk3566處理器屬于什么檔次? RK3566處理器是一款由瑞芯微公司推出的高性能處理器,在硬件配置和性能上都表現(xiàn)出了很強(qiáng)大的實力。目前市場上已經(jīng)有了很多的RK3566處理器,相信大多
    的頭像 發(fā)表于 08-15 17:25 ?3.1w次閱讀