基于DSP技术的MP3播放器的研究与设计
摘要:随着数字编解码及压缩技术的发展,语音文件也朝着高压缩比、高保真的方向发展,从MP1、MP2到目前的MP3格式。本文设计了一种廉价基于DSP的MP3播放器,利用硬件存储语音文件,并能够从PC 机下载,从而可以随时更新MP3音乐。该MP3播放器同时附加了文本阅读的功能,可做到语音和文本的同步输出。
关键词: MP3播放器 DSP 编码
前言
现在市场上推出了各种型号的MP3随身听,它们采用先进的智能控制技术,利用先进的芯片,不仅实现了MP3格式语音的播放,而且集多种功能于一身。
但这些精巧的随身听价格较昂贵,因此本文根据要求设计了一种廉价MP3播放器,利用硬件存储语音文件,并能够从PC 机下载,从而可随时更新MP3音乐。该MP3播放器同时附加了文本阅读的功能,可做到语音和文本的同步输出。
MP3播放器系统构成
MP3播放器系统结构由图1所示,根据MP3播放器特点要求选择了TI公司的TMS320VC5402芯片,该DSP芯片优越的效价比既可充分胜任本设计的信号处理又能满足本设计要求的价廉目的。而主机选用功能较强的AT89C51芯片。
设计原理上,C5402芯片的信号处理部分和89C51的智能控制部分来分别完成电路设计,并相应制作两块PCB,可以明确设计思路,实物的大小也减半。
javascript:window.open(this.src);" style="cursor:pointer;"/>
由图1,MP3播放器系统选用大容量的FLASH MEMORY作为主存储器硬件存储语音文件,DSP程序也存储在FLASH中,运行时再引导到DSP的高速RAM,从而省去DSP芯片部分的程序存储空间。利用串口通信电路可以实现由PC机下载语音文件功能,利用液晶显示屏LCD,还可以从PC机下载小说并在LCD上阅读。
DSP、MPU硬件设计
MP3播放器中,DSP芯片的Bootloader采用了HPI口方式。由于在硬件上HPI引脚与DSP的数据、地址总线引脚是相互独立的,同时HPI口内部又有控制机制,所以外部主机通过HPI口访问DSP内部RAM时不会影响DSP的正常运行。HPI利用DSP芯片上1000H地址开始的一块具有共享存储器功能的2K字RAM,来实现主机与从机间的数据交换。
DSP扩展了一片64K字高速静态RAM(CY7C1021V33-10),作为DSP芯片的片外RAM,用以适应各种音频处理算法对存储器容量的要求。
DSP芯片处理后的信号由D/A输出到耳机,我们就可听到MP3音乐。D/A变换由LM4545实现,它具有48K字转换速度,可直接和DSP芯片的输出相连。
而MPU主要完成三项功能,分别是LCD显示,控制DSP芯片的运行和文件的串口下载。89C51与29F040B的连接电路如图2所示。
javascript:window.open(this.src);" style="cursor:pointer;"/>
MPU用来访问FLASH的地址线由P0口和P2.0~P2.5组成。这14根地址线既提供14位页内地址又提供5位的页码地址,P0口同时与两片74LS373相连,分别以P3.5和ALE作为这两个芯片的片选信号;第一片74LS373A输出信号的低5位作为5位页码地址与29F040B的A14~A18连接,第6位作为片选信号连接29F040B的CS,后两位则留作以后扩展用;第二片74LS373B的8位输出连接29F040B的A0~A7;89C51的P2.0~P2.5直接连接29F040B的A8~A13,和74LS373B的8位输出共同构作14位的页内地址。
相应的寻址过程(假设访问地址1FFFFH)是:第一步,先将P3.5置1,打开74LS373A,再向 P0口写入所要寻址的页码地址,1FFFFH的页码为7H;第二步,再将P3.5置0,关闭74LS373A,向P0口和P2口写入14位页内地址,1FFFFH的页内地址为3FFFH。因为74LS373B由ALE片选,每次MPU访问外设时自动打开,所以这两步骤次序不能颠倒,否则访问的地址就出错。
软件设计
能够从PC机下载音乐是MP3播放器的特点,这一功能由MPU与PC机的串口通信来实现。而且设计所需的下载软件要求能够下载书籍文本,要求能够中文字符的串口通信。因此实现中文传输也是本设计的程序部分的关键。
图3是用VB实现MP3播放器的下载软件。
javascript:window.open(this.src);" style="cursor:pointer;"/>
图3的文件下载软件,由Mscomm控件来实现。Setting设置为"9600,N,8,1",89C51的串口寄存器SCON和PCON也做对应的设置。用Mscomm控件可以实现发送中文字符功能,具体方法如下:
(1)直接发送
直接发送即把中文字符等同于英文字符。如:MSComm1.output="这是一行中文数据!",但这种方法发送的中文数据不能太长,发送缓冲区和接收缓冲区的大小需设定为中文字符的两倍以上,否则会出现接收或发送缓冲区溢出之类的错误。这种方法可用于一般要求不太高的场合。
(2)间接发送
在发送端将汉字或字符转换为机器内码或区位码数据数组,然后将转换后的数据发送到串口,在接收端接收到数据后,按照相反的顺序将得到的数据转换为相应的汉字或字符,对于MPU这端要求能有较大容量的汉字表。在转换过程中,我们采用位运算,在取得汉字的内码后将高字节和低字节分开,求整数高、低字节的函数如下:
Public Function HiByte(a As Integer)
Dim b
b = a And &HFF00
b = b / 256
If b < 0 Then b = b + 256
HiByte = b
End Function
Public Function LowByte(a As Integer)
Dim b
b = a And &HFF
LowByte = b
End Function
结语
该MP3播放器基于DSP技术,采用慢速大容量外存加高速小容量外存的组合方式,音乐文件先从慢速外存下载至高速外存再载入DSP的高速RAM,下载一部分处理一部分。采用与PC机的串口通信方式实现文件的下载速度较慢,也可利用USB接口进行高速的通信。另外系统中连接的电话线可充作电话的录音。
实践证明,这种方法设计的MP3播放器成本较低,同时附加文本阅读的功能做到语音和文本的同步输出,能满足特殊的需要。