基于I2S的USB声卡系统设计

发布者:lqs1975最新更新时间:2007-02-06 来源: 电子设计应用关键字:DAC  ARM  处理器 手机看文章 扫描二维码
随时随地手机看文章

引言

近年来USB产品层出不穷,USB音频类在USB开发者论坛的努力下,成为一种标准的规范,USB声卡也开始在市场上悄然出现。因为USB声卡内置了DAC和有源功放,音频数据以数字方式进入USB声卡,完全杜绝了PC的内部干扰,所以,USB声卡将有可能成为现有内置声卡的替代品。本文介绍了一种基于ARM处理器的USB声卡设计。
  
USB声卡原理

由USB声卡数据流图(见图1)可以看出USB声卡的工作原理。在主机端播放音乐时,应用软件或驱动程序把各类音频信号转换为统一的格式,如PCM、MPEG等格式的数据流,通过主机的USB接口发送给USB声卡。声卡的USB接口接收到数据后,通过I2S接口把并行音频数据转为串行,再发送给音频编解码芯片进行D/A转换,即可在音频芯片连接的扬声器中发音。录音过程和播放过程正好相反。

 
图1 USB 声卡数据流

硬件设计

USB声卡硬件主要包括MCU和音频编解码芯片。MCU采用三星公司的处理器S3C2410,S3C2410内置I2S总线控制器和USB Slaver控制器。S3C2410的I2S控制器实现了一个外部8/16位立体声音频CODEC IC的接口,支持I2S总线数据格式和MSB-justified数据格式,并且支持DMA传输模式。

音频芯片采用UDA1341TS。UDA1341TS提供标准的I2S接口,可以直接和S3C2410的I2S引脚连接。另外,此芯片还提供标准的L3、麦克风和扬声器接口。L3接口的引脚分别连到S3C2410的3个GPIO输出引脚上,通过GPIO控制L3接口。UDA1341TS音频芯片集成数字化音频和混频器功能。数字化音频功能可以播放数字化声音或录制声音,因为包括这个功能,所以常把此类芯片称为CODEC设备。混频器用来控制各种输入/输出的音量大小等,在本芯片中通过L3接口进行控制。



图2 USB声卡拓扑图

软件设计

软件设计包括两部分:USB声卡固件程序设计和主机端Windows驱动设计。因为USB音频类设备是一种标准设备,在Windows 操作系统上有标准的USB音频驱动,所以只需要开发者根据USB音频类的协议开发固件程序。

USB声卡的固件程序主要包括两部分,第一部分主要是USB通讯,第二部分实现I2S接口数据传输以及数据流的缓冲区控制等。

USB通讯

USB声卡描述符

为了有效地定义出USB声卡的描述符,可先根据USB音频类协议,并结合需要实现的USB声卡功能,确定出USB声卡的拓扑图(见图2),然后再根据拓扑图和USB音频类描述符的协议,写出USB声卡的描述符。

USB声卡的描述符包括5部分,分别为设备描述符、配置描述符、接口描述符、端点描述符和字符串描述符。接口描述符是其中的难点。USB声卡的接口描述符包括两部分:音频控制(AudioControl)接口描述符和音频数据流(AudioStreaming)接口描述符。

1. USB音频控制接口描述符。根据USB声卡的拓扑图所示,当声卡用于回放功能时,其声卡功能的控制流程,通过IT1(Input Teminal),OT3(Out Teminal)和Feature单元表示,IT1表示的是PC向USB声卡发送的音频数据流,OT3表示的是发向DAC的数据流,在IT1和OT3之间的Feature单元用于调节音量和音效功能等。当声卡执行录音功能时,USB的功能拓扑通过IT2,OT4表示,IT2表示A/D采样的音频数据流,OT4表示的是通过USB接口发向PC的数据流。USB音频控制接口的数据传输一般使用默认端点0。
在USB声卡的拓扑图中,F表示的是USB音频类的Feature单元,Feature单元的主要作用是控制音量、静音、低音等。如果在描述符中声明了Feature单元,在Windows操作系统下,控制面板中的声音和音频设备的一些功能才能使用。那么在Windows中进行调节音量等控制时,就会触发固件程序对UDA1341TS芯片L3接口的控制。

2. USB音频数据流接口描述符。因为USB 音频有回放和录音两种功能,所以需要两个同步数据流接口,两个接口使用双向端点1进行数据传输。

通过USB声卡的拓扑图,可以分析出音频接口的流程和功能,从而得出USB声卡的描述符。

USB通讯的程序实现

S3C2410有5个双向FIFO端点,其中0端点是控制传输端点,其他4个端点支持批量、中断、同步传输等方式。在本系统中使用0、1两个双向传输端点。端点0执行控制传输(CONTROL),一方面传输USB协议的控制信息,例如Setup事件、握手信号、枚举信息等,另一方面传输音频控制信息,例如采样率控制、音量控制等。端点1采用同步传输方式( ISOCHRONOUS),传输时间间隔为1ms,用于实时传递主机和I2S之间的录音或放音数据。

根据USB协议,USB设备的任何数据传输,都由USB主机分配,然后USB设备响应相应的USB主机总线请求。S3C2410的USB控制器采用的是中断方式响应,那么在S3C2410的USB中断服务程序中要作以下工作:
Isr_USB()
{
if(USB_INT_REG&RESET_INT)  Reset_USB(); //重启USB设备
if(USB_INT_REG&RESUME_INT) Resume_USB();//唤醒USB设备
if(USB_INT_REG&SUSPEND_INT) Suspend_USB();//挂起USB设备
if(EP_INT_REG&EP0_INT)    Handle_EP0();//执行控制传输端点0处理程序
if(EP_INT_REG&EP1_INT)    Handle_EP1();//执行同步传输端点1处理程序
}

USB声卡的控制传输

在主机端应用程序中,执行音量调节、静音等事件时,USB音频驱动通过默认端点0执行一个控制传输。一次控制传输主要包括两个步骤,第一步,由主机向设备发送一个建立(Setup)信息,描述控制访问的类型,设备将执行此控制访问。第二步,零个或多个控制数据信息的传送,这是访问的具体信息。根据USB音频类协议分解控制信息包,然后再根据控制信息,执行相应的操作。例如,在主机端应用程序中播放音乐前,USB声卡就会从主机端收到如下的两个包:

Setup包 22 01 00 01 01 00 03 00
控制数据包40 1F 00

根据USB音频类协议分解Setup包,可以得知,本次控制传输的作用是设置USB声卡的采样频率,并且收到的3字节控制数据信息是采样频率,即8KHz。那么在播放音乐前,必须把I2S和UDA1341TS芯片的采样频率设置为8kHz,才能和主机端保持同步。

I2S总线实现方法

在S3C2410芯片中,I2S接口提供三种数据传输模式:正常传输模式、DMA传输模式、传输/接收模式。本系统采用的是传输/接收模式,它具有双通道DMA功能,一方面窃取总线控制权,提高系统的吞吐能力,另一方面,可以实现同时接收和发送音频数据,即全双工模式。

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

为了使USB声卡的回放和录音可以同时进行,即实现全双工,数据传输使用两个BDMA通道,通道0用于回放,通道1用于录音,因为S3C2410的BDMA中没有内置DMA存储区域,所以需要在SDRAM中分配DMA缓冲区。音频数据回放时,先由USB总线取得音频数据,写入DMA缓冲区,由BDMA控制器通道0窃取总线控制权,通过I2S控制器写入I2S总线并传输给音频芯片。录音采用BDMA控制器的通道1,其数据流过程和回放相反。
由于处理的音频数据量比较大,并且PC端接收/发送数据的速度和I2S处理数据的速度不能完全匹配,这就导致了放音失真或者录音丢帧的现象。为了解决这个问题,最简单易行的方法是使用比较大的环形缓存。但实际上大的缓存区需要更长的填充时间,在使用时会出现延时。为了解决延时的问题,使用环形、多段缓存机制。在这种机制下,将缓存区分割成若干个相同大小的块,并使用算法实现环形缓冲。下面以8kHz/16位/单通道音频流的播放为例说明缓冲区的操作。

USB音频类规定的USB同步传输周期为1ms,即对于8kHz/16位/单通道PCM编码的音频流,每隔1ms,USB设备就会收到一次主机传来的数据,数据包大小为16字节,为了尽量保持I2S和USB传输同步,可以取16字节作为一个缓存区段的大小。当USB声卡接收到数据后,MCU先判断缓冲区中是否有空闲区域,如果没有足够缓冲区就跳过一个样本,然后再逐一把FIFO中的数据复制到SDRAM的缓冲区。

因为I2S的DMA控制器处理数据是按段进行,每段长度为16字节,在DMA取数据前,先判断缓冲区中的数据量,如果没有足够数据(16字节),则加入静音数据,然后再执行DMA传输。

结语

本文所阐述的基于I2S总线的USB声卡,已经在基于S3C2410处理器的开发板上成功实现,不过只是实现了USB声卡的最基本功能。可以尝试把MP4、U盘等和USB声卡集成在一体,会更有应用价值。

参考文献

1. Samsung Inc. S3C44B0X Risc Microprocessor Datasheet. http://www.samsung.com.? 2003
2.Philips Semiconductors. UDA1341TS datasheet.http://www. semiconductor. philips.com. 2002
3. Hyde, John, USB Design by Example. Intel. www.usb-by-example.com.2002.5

关键字:DAC  ARM  处理器 引用地址:基于I2S的USB声卡系统设计

上一篇:基于ISP1362的U盘MP3播放器设计
下一篇:非压缩数字视频传输系统的设计

推荐阅读最新更新时间:2024-05-03 10:58

ARM的DSP增强型扩展
  现在,很多新兴的应用领域涌现了许多新的算法标准,这些算法对于处理器提出了更高的性能和控制要求。信号处理需要处理器提供高峰值性能,但这部分在整个算法中的比例有减少的趋势。对于开发包含高性能算法的大规模应用的设计团队来说,有很多种可供选择的方案。市场竞争的压力使得选择一个对高性能有充分保障的处理器平台来实现高性能的功能变得非常重要。但是选择超出需求性能很多的处理器平台对于系统成本和电源消耗也是有着很大影响的,这会直接导致产品缺乏竞争力。   ARM在提供通用的RISC处理器架构的同时,为其增添了一些针对特定应用的高性能指令集,以期能够达到软件和硬件的一个优化平衡。这样,一些高度涉及信号处理的应用本来是要借助一块专用DSP来完成的,
[单片机]
<font color='red'>ARM</font>的DSP增强型扩展
基于可配置处理器的嵌入式系统ESL设计需求
虚拟系统原型工具提供单核或多核SoC平台的仿真模型,可以以数十MHz的速度仿真实际系统。系统架构师需要在这样的平台上运行大量的测试序列,并得到系统性能分析的结果,软件开发人员也可在接近实际的仿真模型中测试他们的嵌入式软件。 但现今提供的商业ESL工具没有一种可以在更早的阶段帮助工程师决定系统的基础架构,例如决定整个系统需要使用处理器的数量和种类;需要设计专门的通信机制还是使用传统的分级总线;如何将应用程序划分成多个任务,并分配到不同的处理器上运行;如何有效的探索各种可能的设计方案等。现在的SoC架构设计工具和ISS要在体系架构确定后才有用武之地。 今天的设计要比上世纪90年代末处理器加硬件模块的结构复杂许多。
[嵌入式]
基于ARM7和LM35的温度采集系统设计
0 引言 目前广泛应用的温度采集设备,其温控系统的内部芯片普遍采用单片机,其缺点是采集终端硬件功能简单、芯片性能低、软件设计复杂、任务调度麻烦、系统升级困难等。随着当今社会科技的发展,人们对温度采集系统也有了越来越高的要求,具体体现在系统的实时性、精度、软件设计、升级等方面。由于嵌入式操作系统的发展,本文设计了一种基于ARM7的温度采系统,其具有采集精度高,软件设计简单,软硬件功能修改方便、升级便利等优点,有效地解决了过去采用单片机作为内部芯片中的问题。该系统可用于温室、仓库等需要实时监控温度的场所,为人们的生活生产提供了便利的可靠的解决方案。 1 系统硬件结构 1.1 系统总体设计 该设计采用了Samsung公司所生产的S
[单片机]
芯旺微电子:自主处理器架构实现最大的竞争差异化
如果用简单一句话来介绍芯旺微电子的差异化,那就是:“自主IP KungFu内核处理器架构,打造高端芯片从内核设计、工具开发到开发环境全新生态圈。” 2021年3月,芯旺微宣布完成B轮融资。资金将主要用于车规芯片的研发,包括满足ASIL-D等级应用于汽车发动机和域控制器的多核MCU产品,以及射频、以太网和总线类车规产品,芯旺微电子致力成为汽车领域多方位的数字和模拟芯片供应商,同时布局汽车软件生态的建设。 日前,在慕尼黑上海电子展商,芯旺微FAE经理卢恒洋介绍了芯旺微的车规级MCU发展历程,以及自主KungFu内核处理器的优势,据悉目前芯旺微车规级MCU已覆盖智能座舱、车身控制、汽车电源与电机和汽车照明领域。 芯旺微FA
[单片机]
芯旺微电子:自主<font color='red'>处理器</font>架构实现最大的竞争差异化
兆芯国产自主可控业务巡展在京成功举办
2018年2月9日,兆芯、联想联合举办的“国产自主可控业务全国巡展”迎来北京站活动。“巡展”旨在通过一系列介绍和体验活动,加深全国各地党政办公人员对国产自主可控x86通用CPU及国产计算机的了解和认知,逐步推动各地党政办公领域的国产自主可控整机替换,在加强党政办公信息安全保障工作的同时,对国产高端通用CPU及相关产业的发展也将产生积极的促进作用。 北京市民政、税务、法院等政府相关部门及多家当地高新技术企业出席了此次巡展,各单位代表在听取介绍和亲自体验过后,纷纷对兆芯国产自主可控x86处理器,以及联想基于兆芯CPU设计生产的国产计算机、服务器表示了高度的认可。 兆芯工作人员发表现场演讲,向与会嘉宾介绍兆芯国产自主可控x
[嵌入式]
兆芯国产自主可控业务巡展在京成功举办
纽约时报:掘金物联网 ARM举足轻重
威胁英特尔 ARM公司总部坐落于充满诗情画意的英国大学城剑桥镇东南侧。无论是只有三栋建筑的园区,还是周围的环境,都很难让人将这里与最新科技的发源地联系起来。 但是当今世界出售的几乎每一部手机都使用该公司所设计的低能耗芯片。而在下一次重大的技术革命中,ARM也将占据举足轻重的地位。这就是所谓的物联网,在这个网络中,所有的日常事物都将内置芯片,从而具备处理信息并与网络交流的能力。 有些分析师认为,在后PC时代,英特尔那熟悉的广告声——嘣……嘣,嘣,嘣,嘣——将会随着计算技术的变革而消失,人们不会再听到任何声音。或者更确切地说,ARM将悄无声息地成长为全球最重要的科技公司之一。 ARM的业务是将芯片设计授权给苹果
[嵌入式]
英特尔:PC处理器出货量跌了2%,但我们价格涨了13%
英特尔昨天发布了2018年Q4季度财报,当季营收187亿美元,净利润52亿美元,全年营收达到了创纪录的708亿美元,净利润也有211亿美元,不过这份财报并没有让英特尔股价大涨,反而跌了5.5%,因为Q4季度的业绩没有达到华尔街分析师预期,英特尔也遭遇了半导体市场放缓的影响。在英特尔的业务部门中,CCG客户端计算部门占比是最高的,当季PC处理器出货下滑了2%,但是英特尔的营收完全没受到影响,因为ASP均价涨了13%,涨幅比上个季度还要高,简单来说就是英特尔处理器越来越贵。 英特尔的业务分为CCG客户端计算、DCG数据中心计算、IOTG物联网、NSG非易失性存储、PSG可编程解决方案等多个部门,在过去年的一年中所有业务部门业务都是
[家用电子]
英特尔:PC<font color='red'>处理器</font>出货量跌了2%,但我们价格涨了13%
ARM上市欲估值600亿美元 比英伟达交易价高50%
北京时间3月25日早间消息,据报道,在转让给英伟达的交易失败之后,日本软银集团正准备让旗下的英国芯片设计公司ARM独立上市,消息人士透露,软银集团希望在上市过程中获得ARM的600亿美元估值,这一估值目标也超过了给英伟达的转让价格。    该不愿具名消息人士表示,在上市之前,ARM将进行一次贷款融资,软银集团将邀请高盛集团、摩根大通银行和日本瑞穗金融集团来辅佐这次贷款融资交易。而此次帮助ARM贷款融资的三家金融机构,未来也极有可能担任上市交易的承销商,不过消息人士表示,上市承销商的名单尚未最终确定,也有可能会增加其他的投资银行。    2016年,日本软银集团斥资320亿美元买下了ARM公司,但后来又决定变卖。外媒指出,600亿美
[半导体设计/制造]
小广播
最新手机便携文章
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved