0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于AsixOS和MC68EZ328处理器实现手持信息终端的设计

电子设计 来源:电子产品世界 作者:缪爱国;刘昊;严菊 2021-06-11 17:08 次阅读

作者: 缪爱国;刘昊;严菊明

引言

MIDI(乐器数字接口)是一种电子乐器之间以及电子乐器与电脑等设备之间的统一交流协议。该协议是一个二进制形式的音乐描述语言,每一个描述乐器演播动作的字都赋给一个特定的二进制代码,通过它指示乐器即MIDI设备做什么和怎样做,如演奏音符、加大音量、生成音响效果等。

由于MIDI本身不是声音信号,而只是让声音设备产生声音的一系列的指令,所以MIDI文件本身非常小,特别适用于对存储容量有限制的手持设备,如手机和掌上电脑。本文将着重介绍如何在手持信息终端嵌入式系统平台上实现MIDI的播放。

MIDI的基本原理

MIDI文件主要由MIDI消息组成。MIDI消息又可分成通道消息和系统消息两大类,如图1所示。

图1 MID I消息的组成 从上面的描述中,

可以看到MIDI实际上只是一组数字信号,并不包括声音信号,它记录的是音乐在什么时间用什么音色发多长的音等等。MIDI音乐每个乐音是由三个要素组成的:音色、音高(音调)和音长。可以把各种乐器的音色先录下来,然后给每个音色编号,如钢琴编为00;再给音高编号,如C5编为49;然后是音符播放的时间的编码,如把8分音符编号为60。此时,数字串“00 49 60”就表示演奏的是钢琴的C5音,演奏时间为8分音符。MIDI在播放时,会根据MIDI文件纪录的乐曲信息向预先录制好的乐器(如钢琴)的波表发出指令,从波表中找出对应的声音信息,经过合成、加工后再回放出来,就形成了美妙的音乐。

手持信息终端软硬件平台

手持信息终端包括手机、个人数字助理(PDA)、掌上电脑(HPC)等等,它们可以实现多种功能,如PIM(电话簿、日程安排、备忘录、记事本、时钟)、计算器、录音、辞典、游戏和播放音乐等功能;也可以加入无线通信的功能,如电话、短信、无线Email等等;还可以通过数据线与PC相连,互通数据、进行备份和数据交换。

该手持信息终端平台采用的是业界流行的Motorola公司的MC68EZ328处理器;存储模块由4M字节的Flash闪存和2M字节的EDO DRAM组成;显示模块采用160×240的16级灰度的黑白屏,屏上合成有四线电阻式触摸屏。音频处理模块的作用是用来播放音乐,它由两部分构成:滤波电路和音频功率放大电路。该模块接受来自处理器内部输出的PWM脉冲信号和音频模块的开启关闭的控制信号。硬件平台的结构如图2所示。

图2 手持信息终端的硬件平台结构

该手持信息终端是以自主研发的多任务嵌入式操作系统AsixOS为基础,包括操作系统(Asix OS)、驱动程序包(Driver)、应用程序包(Application)、图形用户接口(AsixWIN)、图形库软件包(AsixGPC)、嵌入式数据库(AsixDB)、嵌入式文件系统(AsixFS)、网络协议软件包(Asixnet)等等。Asix模块原理框图如图3所示。

图3 Asix模块原理框图

由图可以看出,音频驱动模块是播放MIDI音乐的基础,它控制硬件设备的打开关闭等等操作;音频服务层是连接应用程序和底层驱动的枢纽,它包含了对底层操作的接口;应用程序是整个手持终端产品的具体功能的体现,MIDI播放器是其中一个用来测试MIDI播放的小应用程序,它是建立在音频服务模块和音频驱动模块基础之上的。

MIDI播放的实现

MIDI的播放需要软硬件协同工作,要播放MIDI文件,首先必须对MIDI文件进行解码:若是控制信息(如节拍、时间格式等等),则进行相应的控制;若遇到音符信息,则将相应的数据(音符代码、时间值)存储在音频缓冲区。

解码完成后,声音处理程序将对音频缓冲区中的音频数据进行处理,根据音符代码从各个软波表中取出相应音符的真实采样值送往音频设备,再由音频设备的滤波电路进行滤波排除电路中的高低频干扰,然后再经过音频放大电路对音频信号进行放大,驱动喇叭放出音乐,音乐时间的长短则根据音频缓冲区中记录音符长短的数据来控制音频设备的开启和关闭来实现。

由于手持信息终端存储容量的限制,该手持信息终端的软波表只包含了大钢琴(Acoustic Grand Piano)的一种音色,具有3阶音色(12×3个音符)。该软波表采用16kb/s和8bit的采样率进行录制,每个音符采样0.5秒,即每个音符占有8000个字节,所以整个软波表的大小为12×3×8000=288K字节,这样的大小对于手持信息终端来说应该是可以承受的。

声音处理程序是利用MC 68EZ328的定时功能和PWM输出功能来实现的。PWM具有三种工作模式:回放(playback)模式、单音调(tone)模式、D/A模式。由于tone模式发出的声音的频率比较单一,不能达到真实乐器的效果,所以采用了回放模式。回放模式是利用软波表来实现的,它根据真实乐器的采样值进行回放,从而能达到比较真实的效果。

MIDI播放的实现在硬件上是由两部分组成的:M68EZ328内部的PWM模块和外部滤波放大电路。具体原理如下:

PWM(脉冲宽度调制)是一种对模拟信号电平进行数字编码的方法。通过对方波的占空比调制来对一个模拟信号的电平进行编码。

音频处理的外围电路比较简单,它主要用来处理由PWM输出的MIDI音乐,由滤波电路和音频功率放大电路组成。MC68EZ328内部具有PWM输出电路,经过一个由两级运算放大器构成的滤波电路,滤除噪声后取出音乐信号;滤波后的信号,在经过功率放大电路放大后,推动扬声器发出音乐声。为了减小功耗,音频功率放大电路和滤波电路都有使能控制信号控制,当需要播放音乐时将电路使能,平常关闭该模块。

软件的实现

通过对软件平台的介绍,可以知道Asix OS是一个嵌入式的多任务实时操作系统,所有应用程序都是通过任务调度机制来实现的。因此要实现MIDI的播放需要软件在以下三个层次给予支持:音频驱动模块、音频服务模块、应用程序(MIDI播放器)。当点击应用程序(如MIDI播放器)后,操作系统就会进行任务调度,然后启动相应的服务模块(音频服务模块),通过服务模块再调用底层驱动来播放MIDI音乐。下面将具体阐述一下各模块的功能和实现:

该模块是MIDI能够播放声音的基础,它直接和底层硬件相关,通过CPU中PWM模块的一些寄存器来实现声音设备的打开关闭等操作。它通过声音服务模块被所有的需要发音的程序所调用,是所有发音程序得以正常工作的基础。

它由以下几个子模块组成:PWM音频设备初始化模块;PWM音频设备回放率配置模块;PWM音频设备启动模块和关闭模块;PWM音频设备工作模式选择模块。

该模块屏蔽了底层的驱动,为应用程序访问音频设备提供了统一的接口,使用户无需关心底层的具体实现即可以完成声音设备的控制,使之具有较好的移植性。它主要通过消息机制来实现,为应用程序和底层驱动模块的通信提供了一个桥梁,从而避免了直接和硬件打交道。服务层主要由定时播放模块、定长播放模块和配置模块组成。

音频服务模块是播放MIDI的关键,它处于承上启下的作用,用于连接上层的应用程序和底层的设备驱动。该模块中MIDI解码子模块完成对MIDI文件的解释,并得到最终要播放的音符信息和各种控制信息链表,由于MIDI的解码涉及到MIDI文件的规范协议和具体的算法,这里不作详细的描述。

音频服务模块提供两个层次的接口,面向应用程序的接口和面向底层的接口。

服务模块的接口工作原理如图4所示。

图4 服务模块接口

MIDI播放模块包括MIDI播放器(用来测试MIDI播放的应用程序之一),此外还可以在手机铃声、信息提示音、笔触音等等程序中实现MIDI的播放,但其实现原理基本上都是一样的。除了界面上的设计,主要就是调用MIDI服务模块提供的几个接口函数即可实现MIDI的播放,这里不作详细介绍。

结语

本文的手持信息终端平台经过实际测试,播放效果令人满意,能够和一般的手机铃声相媲美。由于MIDI文件的体积较小,正好可以弥补手持信息终端存储容量小的缺陷,因此它具有广阔的应用前景。

责任编辑:gt

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 处理器
    +关注

    关注

    68

    文章

    18210

    浏览量

    221928
  • 接口
    +关注

    关注

    33

    文章

    7611

    浏览量

    148376
  • 操作系统
    +关注

    关注

    37

    文章

    6264

    浏览量

    121841
收藏 人收藏

    评论

    相关推荐

    Cortex-A9处理器的精妙应用

    与耗能较低的特点,比较多应用在智能手机,也配置在各大智能终端上。  1.智能手机  市面上除了部分如htc和小米这种用高通的cpu的手机商,其他双核手机基本采用ARM Cortex-A9处理器。比较著名的有MOTO里程碑3代、Atrix4G,LG擎天柱2X,三星9100,
    发表于 11-03 17:02

    S3C2410处理器

    S3C2410处理器通过GPD端口连接LED1-4四个灯,试着画出其电路连接图,并变成实现其逐一点亮功能。
    发表于 11-23 21:50

    适用于Motorola 68040,68EC040和68LC040处理器的HP 64783A/B仿真

    适用于Motorola 68040,68EC040和68LC040处理器的HP 64783A/B仿真
    发表于 01-29 14:15

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

    适用于Motorola 68020/68EC020和68030/68EC030处理器的HP 64700系列仿真
    发表于 02-27 16:59

    32位处理器可以装64位系统吗 32位处理器能否装64位系统分析

    32位处理器可以装64位系统吗?从技术角度看,32位处理器是不能装64位系统的,因为不支持,不确定的用户可以使用下面的两种方法来检查32位处理器是否能装64位系统。方法:通过计算机评分查看1、以
    发表于 06-28 09:57

    处理器MC68HC908JL8相关资料下载

    处理器MC68HC908JL8资料下载内容主要介绍了:MC68HC908JL8引脚功能MC68HC908JL8内部方框图
    发表于 04-16 07:55

    32位处理器的开发与8位处理器的开发有哪些明显的不同?

    32位处理器的开发与8位处理器的开发有哪些明显的不同?开发一个32位的嵌入式系统需要哪些工具和环境呢?32位嵌入式系统的开发过程中存在哪些技术难点?有什么方法去应对呢?
    发表于 04-19 08:11

    如何利用PXA255处理器的Sitsang开发平台实现红外模块的设计?

    本文将详细讲解基于Inte1的PXA255处理器的Sitsang开发平台红外模块的设计,其中包括Linux下的IrDA驱动程序的开发和基于MC68HC908AP64红外发射的软硬件设计两个部分。
    发表于 04-27 06:03

    Cortex-M3处理器是什么

    STM32单片机STM32的核心Cortex-M3处理器是一个标准化的微控制结构,希望思考一下,何为标准化?简言之,Cortex-M3处理器拥有32位CPU,并行总线结构,嵌套中断向量
    发表于 07-16 06:33

    Cortex™-M3处理器

    2.1STM32F103xx增强型LQFP48引脚分布2.2 STM32F103xx概述2.2.1ARM®的Cortex™-M3核心并内嵌闪存和SRAMARM的Cortex™-M3处理器是最新一代
    发表于 08-11 07:03

    MSM8940处理器有哪些特点

    MSM8940处理器是什么?MSM8940处理器有哪些特点?
    发表于 11-09 07:09

    双内核Cortex-A9处理器设计实现

    类别:嵌入式系统处理器知识产权许可商ARMHoldingsplc已经成功开发出双内核Cortex-A9处理器设计(被称为Osprey)的两个实现。Cortex-A9处理器能与其他Cor
    发表于 12-13 06:03

    RK3399处理器与AR9201处理器有哪些不同之处呢

    RK3399处理器与AR9201处理器有哪些不同之处呢?hi3559A处理器与RV1126处理器有哪些不同之处呢?
    发表于 02-21 07:29

    请问RISC处理器和ARM7处理器的区别在哪

    请问RISC处理器和ARM7处理器的区别在哪?求大神解答
    发表于 06-30 17:51

    Sitara AM62处理器的资料分享

    和预测性维护),有助于赋予HMI全新的意义,而不是仅限于实现人机交互的界面。AM62处理器能够以低功耗实现边缘器件的分析功能(挂起状态功耗低至7mW且无需特殊考虑散热设计),支持工程师灵活地在尺寸受限
    发表于 11-03 06:11