APP下载

高音质MP3播放器的设计

2011-06-02

重庆理工大学学报(自然科学) 2011年10期
关键词:寄存器解码时钟

马 俊

(上海海事大学信息工程学院,上海 201306)

MP3的全称是Moving Picture Experts Group Audio Layer III,它是利用 MPEG Audio Layer 3技术,将音乐以1∶10甚至1∶12的压缩率压缩成容量较小的文件。换句话说,它能够在音质丢失很小的情况下把文件压缩到更小的程度,而且还非常好地保持了原来的音质。正是因为MP3具有体积小、音质高的特点,使得MP3格式几乎成为网上音乐的代名词。

MP3播放器,顾名思义也就是可播放MP3格式的音乐播放工具。它通常由微控制器、存储器、解码芯片、音频放大电路、按键及LCD显示屏等几个部分组成。MP3播放器通过USB接口与电脑建立通讯联系,将MP3编码格式的文件存储于存储器中。播放时,在微控制器系统的作用下,提取存储器中的音乐文件通过解码芯片进行解码。解码后的数字信号再进行数模转换,形成模拟音频信号,然后经过音频放大器放大,再由耳机信号端口输出,最后就可以通过接在音频端口的耳机听到动听的音乐。

1 系统总体设计方案

作为一个完整MP3播放系统,其系统将会涉及到硬件和软件2方面。其中,硬件系统的设计主要包括硬件系统的结构、器件选择和相互间的接口设计,各模块的划分、相互关系以及具体功能的设定等[1]。软件系统的设计包括外部总线的实现,以及在此基础上对各外设的驱动,并通过C语言编程控制数据流的走向和各组件的协调工作[2]。

音乐播放器的特点是实用性、便携性和稳定性。正是因为如此,在设计上尽量让电路精简、体积小、功耗低。为了方便对系统进行修改、功能升级以及进行测试和调试,系统采用了模块化设计的思想[3]。从功能方面来看,本系统可以分为音频解码模块、微控制器模块、液晶模块、键盘模块、电源模块、JTAG编程接口模块几个部分。整个系统框图如图1所示。

2 系统硬件设计

2.1 单片机系统

本系统采用Silicon Laboratories公司的SOC型单片机C8051F020。C8051F系列单片机是完全集成的混合信号系统级芯片,具有与传统MCS-51单片机完全兼容的指令内核。除此之外,它采用了流水线处理技术,不再区分时钟周期和机器周期,能在执行指令期间预处理下一条指令,提高了指令的执行效率,且大部分指令都能在一个时钟周期内完成,最大处理速度达到25MIPS[4]。该单片机包括丰富的模拟和数字外设,如AD、DA、PGA、比较器、电压基准、温度传感器、WDT、定时器、PCA、PWM接口,以及多种串行接口,如UART、I2C、SPI,同时集成有 JTAG,方便在线编程和调试。此外,该单片机的存储器资源丰富,集成有256B的片内RAM和4k的片外RAM,以及64k的FLASH。因此,总的说来该单片机完全可以满足一般的系统设计要求。

图1 系统框图

2.2 音频编解码模块

音频编解码模块是本设计的核心之一。为了使系统对MP3、WMA、MIDI等格式的音频文件均能进行播放,本设计选用 VLSI公司出品的VS1003B这款音频编解码芯片。该芯片是一款单芯片的MP3、WMA、MIDI音频解码和ADPCM编码芯片,其拥有一个高性能低功耗的DSP处理器核VS_DSP,5k的指令 RAM,0.5k的数据 RAM,串行的数据输入接口,4个通用I/O口,1个UART口,同时片内带1个可变采样率的ADC,1个立体声DAC以及音频耳机放大器,非常符合本系统的设计要求。

VS1003对电源的要求较高,正常工作时需要2种不同的电压2.5 V和3.3 V同时对其供电,且同一电源电压下模拟电源和数字电源之间为免相互之间发生干扰要用电感相隔[5]。其供电电路如图2所示。

图2 VS1003供电电源原理

如图3所示,系统的输入电源是9 V,经过LM7805稳压后变为5 V。LM7805的输出端并有2个电容到地,起滤波作用。其后5 V电压分成2路,一路给AMS117-3.3V,稳压后输出3.3 V电压,另一路给AMS117-2.5 V,稳压后输出2.5 V电压。2路输出电压后面分别经过∏型滤波,进一步降低电压纹波,最后再给芯片供电。图中为避免AVDD和IOVDD之间相互干扰,二者之间使用0欧姆电阻R1起加以隔离。另外,VS1003B除了电源引脚之外,其他引脚都可以与单片机的通用I/O口相连。它与单片机的连接可参见其典型应用。

图3 NOKIA5110显示模块与单片机的连接

2.3 音频文件存取模块

本设计中的音频文件存取模块电路以美国SanDisk公司生产的SD卡为核心。该SD卡支持SPI总线[6],只需要3根线和单片机相连,使用起来非常方便。除此之外,SD卡通过外接SD卡专用的USB读写控制芯片AU6331可以方便地实现SD卡与上位机之间的USB通信。

SD卡的内部结构主要包括片上控制器、FLASH存储模块、控制和状态寄存器、内部时钟、电源管理以及引脚接口部分。SD卡上所有单元由内部时钟发生器提供时钟,接口驱动单元同步外部时钟的DAT和CMD信号到内部所用时钟。SD卡共有6个寄存器,通过读写这些寄存器可对SD卡进行设置并获得其状态。SD卡有2个可选的通信协议:SD模式和SPI模式。SD模式下总共需要6条线,1条时钟线,1条命令线,4条数据线。此模式下的数据传输是受保护的。SPI模式下共需要4条线,3条SPI总线(时钟,数据输入,数据输出),1条片选信号线。此模式下的数据传输是不受保护的。SD卡以块为单位对数据进行读写。在设定块大小为512字节时,一次可以读写1个扇区。本系统中单片机读写SD卡采用的是SPI总线。

2.4 液晶显示模块

本系统属于便携式设备,在系统的使用中,液晶显示模块除了能够满足显示要求之外,还应当具有体积小、功耗低等特点。LPH7366是NOKIA公司生产的可用于该公司的5110系列移动电话的液晶显示模块,所以习惯称该显示模块为NOKIA5110液晶显示模块。与类似产品相比较,NOKIA5110显示模块具有如下特点:①84×48的点阵LCD,可以显示4行汉字、字符及图片;② 采用串行接口与控制器进行通讯,对I/O口资源的占用大大减少,传输速率高达4Mb/s,可全速写入显示数据,无需等待时间;③ LCD控制器/驱动器芯片(PCD8544)已经绑定到LCD晶片上,模块体积进一步减小;④采用低电压供电,正常显示时工作电流在200 μA以下,且具有掉电模式。正是由于NOKIA5110有以上特点,所以非常适合应用在电池供电的便携式设备中。NOKIA5110显示模块采用串行口与控制器进行通讯。它与微控制器的连接如图3所示。

3 系统软件设计

在一个完整的系统设计中,除了硬件之外,软件设计也是一项非常重要的内容。本系统的软件设计主要分为4个部分,即 SD卡读取软件,VS1003B解码单元软件,液晶显示软件,键盘控制软件。

3.1 从SD卡中读取文件的实现

要想成功从SD卡中读取所需文件或把外界文件存储在SD卡中,除了按照规定的通信方式和SD卡通信外,还要遵从SD卡中已有的文件存储方式来进行,即按照通常所说的文件系统来存取文件。在本系统中,单片机对SD卡的读写采用SPI总线模式,所选SD卡采用FAT32文件系统进行数据的存储。因此,从SD卡中读取文件的实现主要分为2个部分:单片机与SD卡间SPI通信的实现和FAT32文件系统读写的实现。

本设计中所选用的单片机C8051F020含有一个串行外设接口SPI0[7],对它的访问和控制是通过系统控制寄存器中的配置寄存器SPI0CFG、控制寄存器SPI0CN、数据寄存器SPI0DAT和时钟频率寄存器SPI0CKR这4个特殊功能寄存器来实现的。而在SD卡内部包含1个片上控制器[8],它通过9脚和外部微控制器通信,接口可采用SPI模式或SD模式。当SD卡收到复位命令(CMD0)时,并且CS信号有效(低电平),SPI模式将启动。

操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。文件系统由3部分组成:与文件管理有关的软件、被管理的文件以及实施文件管理所需的数据结构。从系统角度来看,文件系统是对文件存储器空间进行组织和分配,负责文件的存储并对存入的文件进行保护和检索的系统[9]。具体地说,它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取,当用户不再使用时撤销文件等。其中,常见的文件系统有FAT和NTFS。在本系统中,SD卡内的数据存储采用的FAT32文件系统。对FAT32文件统读写的软件实现是本系统软件设计部分的难点和核心内容。为了能更为直观的了解这些分区中数据的存储,可以借助一款专门用于磁盘数据保护和恢复的软件WinHex。从SD卡中读取文件流程如图4所示。

图4 读取FAT32文件系统数据流程

3.2 VS1003B解码的实现

如前所述,VS1003B用SPI总线来与单片机进行通信,其解码过程的实现是通过单片机操作其内部相应寄存器的值来完成的。VS1003B的解码初始化的流程:①将XRESET引脚电平置为0,对VS1003B进行硬件复位;② 延时一段时间后,将XDCS、XCS、XRESET引脚电平置为1;③ 等待DREQ引脚电平变高,即表示VS1003B可以接收数据;④ 设置 SPI总线为低速模式;⑤ 将 SPI_MODE寄存器值设为0X0804,对VS1003B进行软件复位;⑥等待DREQ引脚电平变高,表示软件复位结束;⑦ 给 SCI_CLOCKF寄存器赋值,设置VS1003B的时钟频率;⑧给SPI_AUDATA寄存器赋值,设置VS1003B的采样率;⑨ 给SCI_VOL寄存器赋值,设置音量;⑩ 设置 SPI总线为高速模式。

至此,VS1003B的解码初始化结束,接下来只要按正确的方式将音频文件数据发送给VS1003B,就能自动识别其码率,然后通过一定的解码速率进行解码[10]。由于解码的速率已经确定,为了能流畅地播放出音乐,VS1003为用户准备了0.5k的数据缓冲区作为音频数据的缓冲。另外,为了实时确定数据缓冲区里有无数据[10],VS1003专门设定了一个中断脚DREQ,只需要判断其引脚电平的高低即可。解码电路单元的程序设计流程如图5所示。

图5 VS1003解码流程

3.3 液晶显示模块的实现

液晶显示模块选用的是NOKIA5110,它的控制器是PCD8544。由于该控制器无内部字库,因此全部西文及中文字库均需自制,由于可通过字模软件自由生成字模代码,因此显示字体可灵活多变。关于显示程序,主要包括基本的读写操作和初始化操作。

PCD8544的初始化过程分为几部分:给复位电平,复位电平的脉宽最多为100 ms;设置显示模块的工作模式;设置显示模块的工作偏置电压;配置功能寄存器,进行温度校正;清屏;开显示(CE引脚置为低电平)。

4 结束语

给出了一款高音质MP3播放器的设计方案。经过实际制作和测试,该系统完成了对 MP3、WMA、MIDI等格式音频文件的播放,且音质较好。系统设有矩阵键盘输入,可供多种不同的播放形式的选择,从而实现了人机交互。显示屏选用NOKIA5110,界面友好。总的说来,该方案具有便于携带、电路简单、成本低廉的特点,性价比较高。

[1]何立民.单片机高级教程[M].北京:北京航空航天大学出版社,2007.

[2]马忠梅.单片机的C语言应用程序设计[M].4版.北京:北京航空航天大学出版社,2007.

[3]潘永雄,刘殊.单片机原理与应用[M].西安:西安电子科技大学出版社,2000.

[4]张培仁.基于C语言C8051F系列微控制器原理与应用[M].北京:清华大学出版社,2007.

[5]康华光,邹寿彬.电子技术基础数字部分[M].4版.北京:高等教育出版社,2000.

[6]SanDisk Corporation.SanDIsk Secure Digital Card Product Manual[M].[S.l.]:[s.n.],2004.

[7]万光毅.SOC单片机试验、实践与应用设计—基于C8051F系列[M].北京:北京航空航天大学出版社,2006.

[8]SanDisk Corporation.SanDIsk Secure Digital Card Product Manual[M].[S.l.]:[s.n.],2004.

[9]Microsoft Corporation.Microsoft Extensible Firmware Initiative FAT32 File System Specification[M].[S.l.]:[s.n.],2000.

[10]VLSI Solution Oy.VS1003MP3/WMA AUDIO CODEC[Z].[S.l.]:VLSI Solution Oy,2005.

猜你喜欢

寄存器解码时钟
《解码万吨站》
STM32和51单片机寄存器映射原理异同分析
别样的“时钟”
古代的时钟
Lite寄存器模型的设计与实现
解码eUCP2.0
NAD C368解码/放大器一体机
Quad(国都)Vena解码/放大器一体机
有趣的时钟
时钟会开“花”