基于IIS总线的嵌入式音频系统设计

2008-03-04 13:11:49 来源:电子设计信息网
标签:

        嵌入式音频系统广泛应用于GPS自动导航、PDA、3G手机等嵌入式领域,但目前国内在这方面的研究较少。音频系统设计包括软件设计和硬件设计两方面,在硬件上使用了基于IIS总线的音频系统体系结构。IIS(Inter-IC Sound bus)是菲利浦公司提出的串行数字音频总线协议。目前很多音频芯片和MCU都提供了对IIS的支持。    

        在软件上,作为一个功能复杂的嵌入式系统,需要有嵌入式操作系统支撑。Linux是一个源代码开放的类UNIX系统,由于其具有内核可裁剪性,且提供对包括ARM、PPC在内的多种嵌入式处理器的支持,所以广泛应用于嵌入式高端产品中。虽然Linux提供了众多API来降低驱动程序制作的复杂度,但是由于音频应用对实时性有很高的要求,且需要处理的数据量较大,所以必须合理分配资源,使用合适的算法。本文针对三星公司的S3C44B0 ARM处理器构造了基于IIS的音频系统,并介绍了该音频系统基于Linux2.4.0内核的驱动程序构造技术。    

        1 硬件体系结构 

        IIS总线只处理声音数据。其他信号(如控制信号)必须单独传输。为了使芯片的引出管脚尽可能少,IIS只使用了三根串行总线。这三根线分别是:提供分时复用功能的数据线、字段选择线(声道选择)、时钟信号线。    

        在三星公司的ARM芯片中,为了实现全双工模式,使用了两条串行数据线,分别作为输入和输出。此外三星公司的IIS接口提供三种数据传输模式:    

        ·正常传输模式。此模式基于FIFO寄存器。该模式下CPU将通过轮询方式访问FIFO寄存器,通过IISCON寄存器的第七位控制FIFO。    

        ·DMA模式。此模式是一种外部设备控制方式。它使用窃取总线控制权的方法使外部设备与主存交换数据,从而提高系统的吞吐能力。    

        在三星公司的ARM芯片中有4个通道DMA控制器用于控制各种外部设备,其中IIS与其他串行外设共用两个桥联DMA(BDMA)类型的DMA通道。通过设置CPU的IISFCON寄存器可以使IIS接口工作在DMA模式下。此模式下FIFO寄存器组的控制权掌握在DMA控制器上。当FIFO满时,由DMA控制器对FIFO中的数据进行处理。DMA模式的选择由IISCON寄存器的第四和第五位控制。    

        ·传输/接收模式。该模式下,IIS数据线将通过双通道DMA同时接收和发送音频数据。本系统使用该数据传输模式。   

图1是44B0X芯片与菲利浦公司的UDA1341TS音频芯片的连接示意图。

        在这个体系结构中,为了实现全双工,数据传输使用两个BDMA通道。数据传输(以回放为例)先由内部总线送到内存,然后传到BDMA控制器通道0,再通过IIS控制器写入IIS总线并传输给音频芯片。通道1用来录音。    

        三星公司的BDMA控制器没有内置的存储区域,在驱动程序中必须为音频设备分配DMA缓存区。缓存区的地址在通道DMA控制器的地址寄存器中设置。    

        UDA1341TS芯片除了提供IIS接口和麦克风扬声器接口,还提供L3接口控制音量等。L3接口分别连到S3C44B0的3个通用数据输出引脚上。    

        2 音频设备底层软件设计 

        嵌入式系统硬件设备种类繁多,且缺乏PC中标准的体系结构,所以必须为各种设备编写驱动程序。驱动程序的主要任务是控制音频数据在硬件中流动,并为音频应用提供标准接口。由于嵌入式系统资源有限,且处理器能力不强,所以在音频设备的驱动程序设计中,合理分配系统资源是难点。    

        需要注意的是,在三星公司的ARM芯片中,I/O设备的寄存器作为内存空间的一部分,可以使用普通的内存访问语句读写I/O寄存器,进而控制外部设备。这是该嵌入式系统与传统的基于Intel处理器的PC最大的不同。    

        2.1 驱动程序功能 

        设备驱动程序中需要完成的任务包括:对设备以及对应资源初始化和释放;读取应用程序传送给设备文件的数据并回送应用程序请求的数据。这需要在用户空间、内核空间、总线及外设之间传输数据。    

        2.2 驱动程序构架 

        Linux驱动程序中将音频设备按功能分成不同类型,每种类型对应不同的驱动程序。UDA1341TS音频芯片提供如下功能:    

        ·数字化音频。这个功能有时被称为DSP或Codec设备。其功能是实现播放数字化声音文件或录制声音。    

        ·混频器。用来控制各种输入输出的音量大小,在本系统中对应L3接口。    

        在Linux设备驱动程序将设备看成文件,在驱动程序中将结构file_operations中的各个函数指针与驱动程序对应例程函数绑定,以实现虚拟文件系统VFS对逻辑文件的操作。数字音频设备(audio)、混频器(mixer)对应的设备文件分别是/dev/dsp和/dev/mixer。    

        2.3 设备的初始化和卸载 

        /dev/dsp的驱动设计主要包含:设备的初始化和卸载、内存与DMA缓存区的管理、设备无关操作(例程)的实现以及中断处理程序。    

        在设备初始化中对音频设备的相关寄存器初始化,并在设备注册中使用了两个设备注册函数register_sound_dsp() 和 regiter_sound_mixer()注册音频设备和混频器设备。这两个函数在2.2以上版本的内核drivers/sound/sound_core.c文件中实现。其作用是注册设备,得到设备标识,并且实现设备无关操作的绑定。在这些注册函数里使用的第一个参数都是struct file_operations类型的参数。该参数定义了设备无关接口的操作[3]。   设备卸载时使用注销函数。注销时用输入注册时得到的设备号即可。在注销时还必须释放驱动程序使用的各种系统资源包括DMA、设备中断等。    

        2.4 DMA缓存区设计和内存管理 

        在音频设备的驱动程序设计中,DMA缓存区设计和内存管理部分最为复杂。由于音频设备有很高的实时性要求,所以合理地使用内存能加快对音频数据的处理,并减少时延。    

        三星公司的BDMA控制器没有内置DMA存储区域,在驱动程序中必须为音频设备分配DMA缓存区。这样就能通过DMA直接将需要回放或是录制的声音数据存放在内核的DMA缓存区中。    

 
关注与非网微信 ( ee-focus )
限量版产业观察、行业动态、技术大餐每日推荐
享受快时代的精品慢阅读
 

 

继续阅读
IIS接口的FPGA实现

一种为嵌入式系统扩展音频功能的方法,采用带IIS总线和L3控制接口的专用芯片UDA1341TS,用FPGA设计实现所需要的接口和时序,在基于S3C4510B的嵌入式系统下通过FPGA操作UDA1341TS,实验结果表明这种方法是正确的。

基于IIS总线的嵌入式音频系统设计

介绍了基于IIS总线的嵌入式音频设备的硬件体系结构及其Linux驱动程序的设计。在音频驱动程序设计综合使用了DMA、分段多缓存区和内存映射技术以提高系统性能,满足音频实时性的要求。

更多资讯
千家公司角逐智能门锁市场,市场迎来爆发

是什么推动了智能门锁市场的繁荣,这个行业为何能快速增长呢?本文从市场供需、门锁技术和行业突破点3个角度对智能门锁的市场现状进行了研究。

高通推出单芯片DDFA放大器CSRA6640 助力便携式音箱

高通子公司Qualcomm Technologies, Inc.今日宣布推出CSRA6640,它是一款集成Qualcomm® DDFA™数字放大器技术且设计灵活、高度集成的单芯片放大器解决方案。CSRA6640采用的单芯片架构可以带来全新水平的集成度,让出众的D类放大器更适用于外形更小、较低层级的商用产品,助力制造商打

你有想过为什么外卖软件的推送如此精确?究竟是谁泄露了你的隐私?

有用户反映,手机上安装的美团与饿了么会“偷听”。刚说了想吃什么后,打开美团与饿了么,就会看到平台对相关店铺的推荐。记者经过多轮测试后,发现美团、饿了么出现相关推荐的概率高达到60%-70%。

应用材料公司为京东方提供全套10.5代线生产设备

应用材料公司今日发布显示行业龙头企业正使用其10.5代线全套生产设备生产更逼真、更鲜明、色彩更加丰富的大尺寸8K电视。

魅族新机皇16T来临?新机通过3C认证

在看完小米的性价比之后,魅友都替魅族感到着急。虽然魅族16S已经被曝光多次,但是丝毫没有看到魅族要发布的意思。而就在最近,随着魅族旗下新机通过3C认证,这也意味着魅族新旗舰终于要来了。

电路方案