简易音频播放处理系统的设计理工.docx
- 文档编号:17875851
- 上传时间:2023-08-04
- 格式:DOCX
- 页数:44
- 大小:351.13KB
简易音频播放处理系统的设计理工.docx
《简易音频播放处理系统的设计理工.docx》由会员分享,可在线阅读,更多相关《简易音频播放处理系统的设计理工.docx(44页珍藏版)》请在冰点文库上搜索。
简易音频播放处理系统的设计理工
第十一章简易音频播放/处理系统的设计实例
本章介绍了基于TI公司的一款高性能、低价格和低功耗的16位定点DSP——TMS320VC5501(简称C5501),来描述一个简易音频播放/处理系统的设计实例。
该系统能够实现对音频信号的录音、播放及效果处理等应用。
C5501主要负责执行音频流的输入/输出及音频算法;系统采用TLV320AIC32音频编解码器(CODEC)对音频信号采样成数字音频流(AudioStream),以及对音频流进行回放(Playback);系统还用到了Silabs公司的高性能混合信号USB闪存单片机——C8051F340,主要负责一些辅助工作,如管理SD/MMC卡文件系统、以及提供点阵LCD用户图形界面(GUI)等;TMS320VC5501与C8051F340之间的通信采用的是DSP的主机接口(HPI),实现了主机C8051F340对TMS320VC5501的控制。
11.1系统结构概述
11.1.1系统硬件结构概述
该系统的硬件结构可分为以下部分:
TI公司的TMS320VC550116位定点数字信号处理器(DSP),最高处理速度为300MIPS@300MHz,芯片采用LQFP-176封装;
SiliconLaboratoriesC8051F340高性能增强型MCS-51系列单片机,与TMS320VC5501通过16-bitHPI(HostPortInterface)接口连接,作为DSP的主机(Host),芯片采用TQFP-48封装;
点阵液晶显示模块(Dot-MatrixLCDModule),其内部控制芯片为韩国Samsung公司S6B1713,屏幕分辩率为128x64,由C8051F340单片机控制,通过16针插座与单片机连接,传输方式为8位并行(8-bitParalleled);
模拟键盘,作为输入设备,其内部由电阻串并联网络构成,通过C8051F340的集成A/D转换器进行电平采样及按键识别,用以完成对图形界面的操作,因此它与主机的连接只有2根线;
SD/MMC卡座,可插入SD/MMC卡,作为该系统的海量存储载体,通过SPI四线接口与C8051F340单片机连接;
USB2.0接口,与PC机连接,可供上传下载文件到SD/MMC卡;
RS-232接口,与PC机通过超级终端通信,可供在线调试单片机系统的程序;
Hynix(韩国现代公司)HY57V281620同步动态随机存储器(SDRAM),与DSP的16-bitEMIF接口连接,作为DSP的外部扩展存储器,其容量为128M-bit(16Mbytes);
TexasInstrumentsTLV320AIC32可编程低功耗立体声音频编/解码器(CODEC–Coder&Decoder),可提供16/20/24/32-bitA/DD/A采样精度,采样频率范围为8kHz~96kHz,通过McBSP及I2C接口与DSP连接。
该系统的硬件结构框图如图11-1所示。
图11-1硬件系统结构框图
本系统的固件可分两部分——单片机固件和DSP固件。
1.单片机固件
单片机固件的开发环境为KEILµVision2,用C语言编写。
该固件基于KEIL提供的RTX-51Tiny实时操作系统(Real-timeOperatingSystem–RTOS),以及SiliconLaboratories提供的USB海量存储设备参考设计(USBMassStorageDeviceReferenceDesign-USB-MSD-RDAN282)。
该固件要完成的主要任务有:
1)控制LCD显示,提供图形界面支持,如文字、窗口、滚动菜单的显示等;
2)监视识别模拟键盘的输入,由A/D采样值判断是哪个键按下,以执行相应的操作(滚动菜单、选择菜单、退出等);
3)驱动SD/MMC存储卡的存取操作,并在SD/MMC上提供FAT文件系统支持;
4)执行USB2.0协议中的海量存储设备(MassStorageDevice)协议;
5)驱动RS-232程序调试接口,通过该接口向PC输出显示系统状态,支持简单的命令行操作;
6)作为DSP的主机,该固件还要负责复位DSP、启动DSP——通过HPI向DSP的引导区写入程序代码,启动后还要给DSP提供音频数据及一些简单的命令。
2.DSP固件
DSP固件的开发环境为CCSv3.1,固件基于TI公司提供的DSP/BIOS实时操作系统、及芯片支持库(ChipSupportLibrary-CSL)。
该固件要完成的主要任务有:
1)与TLV320AIC32通信来实现音频的采样与播放,其连接是通过两个总线来完成:
I2C作为控制总线,McBSP作为数据总线;
2)接收来自MCU的音频数据及指令,实现音频文件的播放;
3)向MCU反馈信息,如程序运行状态,以及要在LCD上显示的数据等(如想要在LCD上以图形方式显示的FFT结果);
4)控制SDRAM时序(其实这主要是是由EMIF硬件来完成的,但是软件需要对EMIF进行初始化工作,设定SDRAM的时序参数,比如CAStoRASlatency等);
5)对音频数据按照一定的算法进行处理(如FIR,FFT等)。
同时为了提高开发效率,还使用了TI公司专门为TLV320AIC32设计的一个开发工具AIC32ConfigurationTool,基于JAVA语言,该工具提供了TLV320AIC32的所有内部寄存器的图形化设置,从而大大简化了程序的开发。
11.1.2SD/MMC存储卡
SD/MMC卡是专门为满足消费类电子产品的数据存储需求而产生的,近年来得到众多厂商与消费者的广泛支持。
它具有高容量、高速度、体积小巧、价格低和数据安全性高等诸多优点,是便携式数字产品的理想数据载体,特别适合用于存放大容量音/视频数据(如数码相机,手机等)。
由于SD卡与MMC卡在一般应用场合下都是兼容的(下文将阐述一些特例),因此为简明起见,以下称SD/MMC卡为SD卡。
除非特殊说明,SD卡的特性同样适用于MMC卡。
1.SD卡系统特性
整体来说,通常SD卡具有以下特性:
最大支持1GB容量(本系统目前不支持更高容量的SD卡);兼容SD卡协议;支持SPI接口传输模式;电源电压范围:
2.7~3.6V;SPI时钟频率范围:
0~25MHz;具有写保护开关(仅通过机械开关支持,系统必须根据开关的位置来决定是否对其进行写保护);卡状态检测(插入/拔除,仅通过机械开关支持);最多可重写约10,000次。
2.SD卡物理特性
SD卡的物理特性主要包括有重量:
<2.0g;长度:
32mm±0.1mm;宽度:
24mm±0.1mm;厚度:
2.1mm±0.15mm。
其详细尺寸及各引脚的位置如图11-2所示。
图11-2SD卡详细尺寸及各引脚的位置
3.SD卡总线拓扑结构
SD卡有两种总线模式:
分别为SD模式和SPI模式,本系统采用SPI模式。
在SPI模式下,SD卡的SPI接口与市场上的大多数主机(单片机)的SPI接口兼容,其中包括以下四根线:
1)CS:
主机到卡线选信号(HosttocardChipSelectsignal);
2)CLK:
主机到卡时钟信号(Hosttocardclocksignal);
3)DataIn:
主机到卡数据信号(Hosttocarddatasignal);
4)DataOut:
卡到主机数据信号(Cardtohostdatasignal);
可见,在SPI模式下数据是串行传输的,而且是全双工的(收/发线独立)。
而在SD模式下,则有4根数据线(DAT[0..3])构成4-bit并行接口,收/发线复用。
这种传输模式理论上可以达到4倍于SPI模式的传输率(12MB/s),但是它违背了“串行化”的大方向,是一种颇有争议的接口。
更由于MMC卡不支持SD模式,这种模式如今已很少有人使用,本文将不再叙述。
4.SPI模式下的SD卡引脚定义
SD卡上共有9个引脚,这与MMC卡的引脚(7个)有所不同,但是在SPI模式下,SD卡比MMC卡多的两个引脚(Pin-8,Pin-9)是保留的,没有定义。
因此SD卡与MMC卡只有在SPI模式下才互相兼容,这也是为什么大多数SD卡读卡器(或其它设备)都选用SPI模式而不用SD模式的原因。
SPI模式下的SD卡引脚定义如表11-1所示。
表11-1SPI模式下的SD卡引脚定义
引脚号
名称
电气类型
SPI定义
1
CS
输入
片选ChipSelect(低电平有效)
2
DataIn
输入
主机到卡命令与数据
HosttoCardCommandsandData
3
VSS1
电源
电源地SupplyVoltageGround
4
VDD
电源
电源SupplyVoltage
5
CLK
输入
时钟Clock
6
VSS2
电源
电源地SupplyVoltageGround
7
DataOut
输出
卡到主机命令与数据
CardtoHostCommandsandData
8
保留
输入
保留Reserved
9
保留
输入
保留Reserved
5.SD卡座
容易理解SD卡座就是用于承载SD卡的一个插座,需要将它焊到电路板上。
由于各个厂家生产的卡座都不完全一样,在制作PCB时需要将所有的卡座引脚按实际尺寸准确地画出来,从而生成PCB引脚图(Footprint)。
还要说明的是SD卡座除了引出SD卡上的9个引脚之外,还有一个写保护开关脚(写保护关闭时接地,否则悬空),卡检测脚(卡插入时接地,否则悬空),这些脚可以接到单片机的输入PORT上,并接上拉电阻,程序在对卡进行操作前需要检测这些管脚上的逻辑值。
其余4个脚容易看出是固定脚(其实严格来说只有3个,有一个是插拔动作检测脚,但是一般情况不用)。
11.1.3有关USB海量存储设备(USB-MSD-RD)简介
前面提到了本系统的单片机固件主要基于SiliconLaboratories提供的USB海量存储设备参考设计(USBMassStorageDeviceReferenceDesign-USB-MSD-RDAN282,以下简称USB-MSD-RD
)。
顾名思义,这是官方提供的为了简化开发过程的现成程序,供开发人员参考,程序可用于C8051F340单片机。
在此简要地介绍一下USB-MSD-RD。
在众多流行操作系统支持的USB设备中,USB海量存储设备(USBMassStorageDevice,以下简称USB-MSD)得到了最广泛的支持,我们常说的U盘就是USB-MSD类的一种。
这一类的USB设备可以使用PC操作系统(如WindowsXP)上自带的驱动程序,因此在很多操作系统上不用安装驱动程序就可以使用,更不需要专门开发驱动程序,非常方便。
USB-MSD-RD固件可以工作在以下两种方式下:
1)海量存储设备模式(MassStorageDeviceMode),连接到PC机的USB接口;
2)独立的嵌入式系统模式(IndependentEmbeddedSystemMode),连接到PC机的RS-232接口。
在海量存储设备模式中,系统将会以USB海量存储设备(U盘)的形式出现在PC机上,该模式用到的模块有:
“USB”、“MassStorageDevice”、“SCSI”、“SectorServer”和“MediaAccess”。
在嵌入式系统模式中,系统可以通过UART外壳(Shell)接受来自连接到PC机上的RS-232接口命令,该模式会用到外部RS232收发器(如MAX232,MAX3221)、一些片上外设(如ADC,UART)以及模块:
“ExampleApplication”、“FileSystem”、“SectorServer”和“MediaAccess”。
USB-MSD-RD(AN282)提供的一些用来访问SD卡上的文件系统的应用程序接口(ApplicationProgramInterface-API),是以C语言函数的形式出现的。
编程人员不需要知道这些程序内部是具体怎样实现的(如SD卡的时序如何,怎样设诸多寄存器等等),只要知道它的接口是怎样的,也就是怎样调用这些API函数,产生怎样的结果等等。
USB-MSD-RD在这里提供的API比较类似与计算机C语言中的磁盘I/O头文件
有关USB-MSD-RD中提供的与SD卡相关的API函数(摘USB-MSD-RD编程者手册,见参考文献[1])。
有关程序作者是经过修改的,若有需要请与作者联系,我们会提供光盘给读者。
由于本系统是基于USB-MSD-RD的,也就是说我们除了要USB-MSD-RD的功能之外还要加一些自己的应用程序,即以下要讲的LCD图形界面、模拟键盘、HPI控制等。
可见任务很多,很难用C语言的循环体来实现,因此我们用了KEIL提供的多任务实时操作系统小型版RTX51Tiny,用以支配多任务之间的配合。
因篇幅所限,这里不作详述。
11.1.4S6B1713点阵LCD显示及用户图形界面(GUI)
1.S6B1713液晶模块与单片机的接口
本设计使用大连天马公司的液晶模块,内部编号是TM90AQ,用到的控制芯片是韩国三星S6B1713(以下称本液晶模块为S6B1713)。
S6B1713液晶模块与C8051F340单片机通过16针双排插座连接,其引脚功能定义如表11-2。
表11-2S6B1713液晶模块引脚功能定义
引脚号
名称
电气类型
SPI功能定义
1
GND
电源
电源地
2
VDD
电源
电源
3
NC
悬空
无
4
A0(RS)
输入
地址线0(寄存器选择)
5
RES
输入
复位(低电平有效)
6
WR
输入
写信号(低电平有效)
7~14
DB[0..7]
输入/输出
8位双向数据总线
CS为高时该总线呈高阻
15
CS
输入
片选(低电平有效)
16
RD
输入
读信号(低电平有效)
单片机与LCD的连接如图11-3所示,连接方式如下:
1)DB[0..7]与单片机的P2口连接,用于单片机和LCD之间并行数据的双向传送;
2)RES与单片机P3.3口连接,用于复位LCD,上电时必须由单片机给出10ms低电平复位信号;
3)CS与单片机的P3.0口连接,用于片选LCD;
4)A0与单片机的P3.3口连接,用于区分控制寄存器(0)与地址寄存器
(1);
5)RD与单片机的P3.1口连接,用于从LCD读出数据(低电平有效);
6)WR与单片机的P1.8口连接,用于向LCD写入数据(低电平有效)。
S6B1713用总线保持器(BusHolder)和内部数据总线(InternalDataBus)来进行数据传输。
S6B1713用总线保持器(BusHolder)和内部数据总线(InternalDataBus)来进行数据传输,其读/写时序如图11-4所示。
11.1.5用户图形界面(GUI)的实现
目前,嵌入式系统中大多数的用户图形化界面(GUI)都是在操作系统的支持下,调用系统的各种API函数实现的。
这些操作系统为实现GUI提供了大量的库函数,也为编程人员提供了界面设计的良好平台。
本系统的LCD图形界面全部在KEIL环境下用C语言编写,按程序层次从低向高排列,可划分为LCD时序驱动层、图形支持层、字体支持层、用户图形界面层和简易文件浏览器,以下是一些简单介绍。
1.LCD时序驱动层(LCDDrivingLayer)
单片机对LCD的操作是通过一些特定的时序来完成的,每一个对LCD的指令或数据都需要通过这种特定的时序来完成,如换行,清屏,写数据等,然而这些时序对于每个不同型号的LCD来说都是不一样的。
为了使程序具有很强的适应性和兼容性,我们需要对硬件的一些细节进行隔离,使下一层不必了解对LCD硬件操作的细节,只要访问驱动程序就行了。
本层主要负责操作LCD接口时序,如写一个字节,读取状态等,以及对LCD内部寄存器进行设置。
2.图形支持层(GraphicSuppotLayer)
本层为图形显示层提供一个显示缓存(DisplayBuffer),由于S6B1713横向分为8页,每页8行,共64行,纵向分为128列,因此整个屏幕的像素数为128*64,这也就需要8*128字节来存放整个屏幕的显示数据。
在C程序里声明一个长度为8*128=1024字符的二维数组,并定期(约50ms)将显示缓存内的全部显示数据写入到LCD的DDRAM内,完成显示刷新。
因此本层对硬件操作进行了隔离,使下一层不必了解对LCD硬件操作的细节。
利用上一层(LCD时序驱动层),本层为下一层(高层)提供了一个128*64点的一个绘图平面坐标系,从而高层程序可以间接地使LCD屏幕上的每一点亮(写1)或灭(写0),这样一来,任何对LCD的操作将都可以转化为对坐标系中像素(点)的操作(坐标的原点在屏幕的左上角)。
除此之外,此层还提供了一些画线,画方等操作,由于篇幅所限在这里不一一介绍。
3.字体支持层(FontSupportLayer)
利用图形支持层,本层可以在LCD的任何位置显示出5种不同大小的字体,其中还含有变宽字体。
在坐标系上,点(x,y)为左上角,以字体sysfont8显示字符c,着色为color,返回宽度。
4.用户图形界面层(GUILayer)
利用图形支持层和字体支持层,本层为用户提供了一个简单的图形界面,如显示一个对话框(Dialogbox),弹出窗口(Pop-upMessage),滚动菜单(ScrollMenu)等。
5.简易文件浏览器(SimpleFileExplorer)
建立在所有层之上,并且用到了USB-MSD-RDAPI函数,本应用层对文件系统进行分级显示。
用于启动文件浏览器,用户通过键盘在图形界面中选择文件,文件被选定后这个函数将返回被选定文件的指针。
11.2TMS320VC5501与C8051F340的连接及通信协议
TMS320VC5501是为实现低功耗、高性能而专门设计的定点DSP芯片,该芯片的内部结构与TMS320C54x不同,它是属于TI公司TMS320C5000系列的定点DSP芯片,其应用软件的开发可在TI公司提供的开发环境中进行。
首先用户用C/C++语言或汇编语言编写源文件,经C编译器、汇编器生成COFF格式的目标文件,再用链接器进行链接,生成在C55x上可执行的目标代码,然后利用调试工具对可执行的目标代码进行仿真和调试。
当调试完成后,通过Hex代码转换工具,将调试后的可执行目标代码转换成EPROM编程器能接受的代码,并将该代码固化到EPROM中或加载到用户的应用系统中,以便DSP目标系统脱离计算机单独运行。
11.2.1TMS320C5501的主要特点及内部结构
1.TMS320C5501的主要特点
TMS320VC5501芯片是一种特殊结构的微处理器,为了快速地实现数字信号处理运算,它采用了流水线指令执行结构和相应的并行处理结构,可在一个周期内对数据进行高速算术运算和逻辑运算,其具有以下特点:
1)高性能、低功耗、定点TMS320C55x数字信号处理器(DSP);
2)16K*16-Bit(32KB)片内RAM,由4块4K*16-Bit双访RAM(DARAM)组成;
3)16K*16-Bit(32KB)片内单等待周期只读存储器(ROM);
4)最大8M*16-Bit(16MB)可寻址内存空间;
5)采用1.26V核心电源,3.3VI/O电源。
2.TMS320C5501的CPU主要结构
1)优化的CPU结构。
内部有4个40位的基本逻辑单元(A单元、D单元、P单元和I单元),4个40位的累加器,2个17×17的乘法器;
2)有6条内部总线。
1条程序总路线、3条内部数据/操作数读总线、2条内部数据/操作数写总线;
3)3.33ns指令周期,工作于300MHz主频;
4)16KB指令缓存(I-Cache);
5)每指令周期执行单/双指令;
6)双乘法器,最多每秒钟可以执行600M条乘累加(MMAC);
7)两个算术逻辑单元(ALU);
8)内部集成了维特比加速器,用于提高维特比编译码的速度。
3.TMS320C5501的片上外设
1)6通道直接内存访问(DMA)控制器;
2)2个多通道续存串口(McBSP);
3)可编程模拟锁相环(APLL);
4)通用I/O(GPIO)引脚和一个专用输出引脚(XF);
5)8-Bit主机接口(HPI);
6)4个定时器,包括2个64位通用定时器;
7)64位可编程看门狗;
8)64位DSP/BIOS计数器。
4.TMS320C5501的芯片封装
该芯片采用LQFP(Low-profileQuadFlatPack)封装,有176个引脚,脚间距为0.5mm,封装俯视图如图11-5所示。
图11-5TMS320VC5501的芯片封装
11.2.2TMS320C5501的主机接口(HPI)
1.TMS320C5501主机接口HPI组成
DSP芯片中的HPI(主机接口)是为了满足DSP与其它微处理器接口而专门设计的。
它分为HPI-8和HPI-16,分别针对具有8位和16位数据线的单片机。
每一种又分为标准型和增强型,两者的区别在于标准型只可以访问固定的地址空间,而增强型可以访问整个DSP的片内存储器。
HPI主机由以下几个部分组成:
9)HPI存储器(DARAM)。
HPIRAM主要用于DSP与主机之间传送数据,也可以用作通用的双寻址数据RAM或程序RAM。
10)HPI地址寄存器(HPIA)。
它只能由主机对其直接访问,该寄存器中存放着当前寻址的HPI存储单元的地址。
11)HPI数据锁存器(HPID)。
它也只能由主机对其直接访问,如果当前进行读操作,则HPID中存放的是要从HPI存储器中读出的数据;如果当前进行写操作,则HPID中存放的是将要写到HPI存储器的数据。
12)HPI控制寄存器(HPIC)。
DSP和主机都能对它直接访问。
13)HPI控制逻辑。
用于处理HPI与主机之间的接口信号。
HPI有两种工作方式:
14)共用寻址方式(SAM),这是常用的操作方式。
在SAM方式下,主机和DSP都能寻址HPI寄存器,异步工作主机的寻址可以在HPI内部得到同步。
如果DSP与主机的周期发生冲突,主机有优先权。
15)仅主机寻址方式(HOM)。
在HOM方式下,只能让主机寻址HPI存储器,DSP则处于复位状态或所有内部和外部时钟都停止的IDLE2空转状态(最小功耗状态);
下面主要介绍TMS320VC5501与C8051F340的连接及通信协议。
标准HPI口是一个8位并行接口,可以用来实现和主设备或者处理器接口。
双方通过共享TMS320VC5501的片上处理器完成通信。
单片机为主控部分,采用端口方式直接访问HPI口。
HPI口主要由地址寄存器(HPIA)、控制寄存器(HPIC)、数据寄存器(HPID)、HPI存储器和HPI控制逻辑组成。
对单片机进行读和写需要三个步骤:
设置控制寄存器,写地址寄存器,读写数据寄存器。
在寄存器读写过程中,单片机通过端口发送控制信号,检测
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 简易 音频 播放 处理 系统 设计 理工
![提示](https://static.bingdoc.com/images/bang_tan.gif)