基于I2S的USB 声卡系统设计
发布时间:2008/5/27 0:00:00 访问次数:1179
    
    
    来源:电子设计应用 作者:武汉科技大学计算机学院 闵华松 孙程建
    
    摘 要:本文介绍了基于s3c2410处理器平台,利用i2s总线的usb声卡系统设计。详细阐述了usb声卡通讯的实现,并且根据i2s总线dma传输的特点实现了环形缓冲区,以提高系统性能,满足音频实时性的要求。
    关键词: usb声卡;s3c2410;i2s
    
    引言
    近年来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音频控制
    
    
    来源:电子设计应用 作者:武汉科技大学计算机学院 闵华松 孙程建
    
    摘 要:本文介绍了基于s3c2410处理器平台,利用i2s总线的usb声卡系统设计。详细阐述了usb声卡通讯的实现,并且根据i2s总线dma传输的特点实现了环形缓冲区,以提高系统性能,满足音频实时性的要求。
    关键词: usb声卡;s3c2410;i2s
    
    引言
    近年来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音频控制