基于ARM的音频播放器设计毕业论文
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于ARM的⾳频播放器设计毕业论⽂
基于ARM的⾳频播放器设计毕业论⽂
⼀、概述
⾳频播放⼀直是⼈们所钟爱的,琳琅满⽬的各种个样的MP3播放器随处可见,但其相应的驱动能⼒有限。
本设计是采⽤
S3C44B0X处理器的IIS⾳频接⼝和⾳频编码解码芯⽚UDA1341TS,并⽤DMA⽅式⾼效地来实现录⾳和播放声⾳时的数据传输。
⼆、⾳频播放器硬件设计
2.1 硬件体系结构设计
UDA1314TS和S3C44B0X通过IIS总线传输⾳频数据,控制数据通过UDA1314的L3接⼝传输,但S3C44B0X没有提供标准的L3接⼝,可以通过3个GPIO引脚模拟L3接⼝时序,实现与UDA1314TS的L3接⼝相联。
UDA1314TS芯⽚集成了数字化⾳频和混频器功能,可以播放器数字化声⾳和录制声⾳(常把此类芯⽚称为CODEC编码译码器设备),它可以外接麦克风和扬声器。
由于⾳频数据传输量⼤,数据传输通常采⽤BDMA⽅式。
放⾳系统的过程是:⾳频数据⾸先传输到部缓冲区,然后BDMA控制器将缓冲区的数据通过IIS总线传输给⾳频芯⽚。
⾳频芯⽚经过解码及D/A转换给扬声器。
三星公司的BDMA控制器没有置的存储区域,在驱动程序中必须
2.2.1 IIS总线简介
S3C44B0X IIS(Intel –IC Sound,置集成电路⾳频总线)接⼝能⽤来连接⼀个外部8/16位⽴体声⾳CODEC。
IIS总线接⼝对FIFO存取提供DMA传输模式代替中断模式,它可以同时发送数据和接收数据,也可以只发送数据。
1.特征
(1)⽀持IIS格式与MSB_justified格式,每个通道⽀持16fs,32fs和48fs的穿⾏位时钟频率。
(2)每个通道可以⽀持8位或者16数据格式。
(3) 256fs 和384fs 主时钟
(4)时钟和外部CODEC 时钟的可编程的频率分频器。
(5) 32字节的发送和接收FIFO
(6)⽀持正常传输模式和DMA 传输模式。
2. IIS 总线结构 ADDR IISDI DATA IISDO
ONTL
BRFC 包括总线接⼝、部寄存器、状态机、控制总线接⼝和FIFO 访问;3位的双向分频器包括⼀个作为IIS 总线的主设备时钟发⽣器,另⼀个作为外部时钟编码器的时钟发⽣器;16字节发送和接收FIFO 完成发送数据写⼊发送FIFO ,接收数据从接收FIFO 中读出功能;主设备串⾏⽐特时钟发⽣器(主设备模块)将从主设备时钟中分频得到串⾏⽐特数时钟;声道发⽣器和状态器⽣成和控制IISCLK 和IISLRCK ,并且控制数据的接收和发送;16位移位寄存器在发送数据时将数据由并变串,接收数据时将数据由串变并。
IISCLK IISLRC 发⽣器和声道控制器
(CHN C )
16字节发送FIFO
16字节接收FIFO
IIS 主时钟发⽣器
总线接⼝
FIFO 控制(BRFC )
16
位移
位寄存器
3.系统的IIS总线的连接⽅式
IIS总线上最多只能有⼀个主控设备,由它产⽣所有的时钟信号。
数据总是在时钟的触发下从发送端流向接收端。
4.数据传输⽅式的选择
IIS总线有三种传输⽅式,即:正常传输模式、DMA传输⽅式以及发送和接收同时模式。
⾳频数据的发送和接收都通过了⼀个FIFO队列,但是只靠FIFO来保证声⾳的连续播放是困难的,有时根本不可能保证数据的连续播放,所以必须采取传输效率更⾼的DMA传输⽅式进⾏数据的传输,保证⾳频数据传输的⾼效性,保证⾳频播放的连续性。
播放⾳频数据时,系统⼀次设置完成DMA控制器的源数据地址(存中的数据),⽬的地址(⾳频FIFO)和数据长度等信
息,DMA控制器就会⾃动发送缓冲区中的数据⾃动到FIFO中,直到发送完成设定的数据长度才向系统中申请中断,这样即可实现⾳频数据的连续播放。
5.声⾳串⼝数据格式的设计
本系统采⽤IIS总线格式。
IIS总线格式,IIS有4条线,即串⾏数据输⼊(IISDI),串⾏数据输⼊(IISDO),左右声道选择(IISLRCK)和串⾏位时钟(IISCLK);产⽣IISLRCK和IISCLK信号的为主设备。
串⾏数据以2的补码发送,并且⾸先发送⾼位数据。
发送器总是在IISLRCK变化的下⼀个时钟周期发送下⼀个字的⾼位。
发送器的串⾏数据发送可以在时钟信号的上升沿或下降沿被同步。
可是串⾏数据必须在串⾏时钟信号的上沿锁存进接收器,所以当⽤发送数据⽤上升沿来同步有⼀些限制。
LR通道选择线指⽰当前正发送的通道。
IISLRCK既可以在串⾏时钟的上升沿变化,也可以在时钟的下降沿变化,但不需要同步,在从模式的这个信号在串⾏时钟的上升沿被锁存。
IISLRCK在⾼位发送之前变化⼀个时钟周期,这允许从发送⽅可以同步发送串⾏数据,更进⼀步,他允许接收放存储先前的字和清楚输⼊来接收下⼀个字。
6.采样频率和主时钟设计
IIS包含了左右两个声道的数据,IISLRCK的频率就是两个声道的采样频率(fs)。
⾳频系统主时钟CODECLK⼀般为采样频率的256fs或者384fs倍,其中fs为采样频率。
CODECLK通过处理器主时钟分频得到,可以通过程序设定分频寄存器获得。
分频因⼦可以为1-16。
CODECLK与采样频率的对应关系如下表。
应⽤中需要正确的选择IISLRCK和CODECLK。
串⾏时钟频率IISCLK可以为采样频率的16倍、32倍、48倍。
对于16位的数据,IISCLK⾄少要有32倍的采样频率,⽽通常要求提供给编码芯⽚的系统时钟为
256fs或者384fs,这⾥3个时钟要求同步。
例如。
声⾳的采样频率为44.1khz,则必须提供⼤概为256*44.1khz=11.290mhz或者384*44.1khz16.936mhz的CODECLK时钟。
时钟越准确,声⾳的失真就越⼩。
Iis接⼝的所有时钟信号都是由主控芯⽚产⽣的,与编解码器⽆关。
另外,处理器时钟可以通过配置锁相环寄存器进⾏调整。
结合CODECLK的分频寄存器设置,可以获得所需要的CODECLK。
7.IIS操作
启动IIS操作需执⾏⼀下过程
(1)允许IISFCON寄存器的FIFO
(2)允许IISFCON寄存器的DMA请求
(3)允许IISFCON寄存器的启动
结束IIS操作
(1)不允许IISFCON寄存器的FIFO,如果还想发送FIFO的剩余数据,则跳过这⼀步。
(2)步允许IISFCON寄存器的DMA请求。
(3)步允许IISFCON寄存器的启动。
IIS总线接⼝寄存器
1、控制寄存器
IISCON 位描述初始化状态
左右通道索引(只读)[8] 0=左通道
1=右通道
1
发送 FIFO 准备好
标志(只读)
[7] 0=没有准备好
1=准备好(⾮空)
接收 FIFO 准备好
标志(只读)
[6] 0=没有准备好(未满)
1=准备好(满)
发送 DMA 服务请求使能[5] 0=请求未使能
1=请求使能
接收DMA 服务请求使能[4] 0=请求未使能
1=请求使能
发送通道空闲命令[3] 空闲状态IISLRCK 未激
活的(暂停Rx)。
这个位
仅在作为 IIS主机时有
效0=IISLRCK产⽣
2.IIS模式寄存器
3 IIS预定标寄存器
定标因⼦与分频因⼦的对应关系
4.IIS FIFO 控制寄存器
5 IIS FIFO寄存器
IIS总线接⼝包含两个16字节发送和接收FIFO,每个FIFO有8个16位单元,可以通过IISFIF 寄存器来存取和接收FIFO的数据。
IISFIF 位描述初始值
FENTRY(FIFO⼊⼝) [0:15] IIS发送、接收数据 0。