8x930Ax/Hx USB控制器芯片及其在数字音频中的应用
2009-05-31
作者:王省书 秦石乔 邵福球
摘 要: 介绍了INTEL公司推出的符合USB1.0规范的USB控制器芯片8x930Ax/Hx,给出了该芯片的特性和功能描述,最后介绍了USB音频的特点及8x930Ax/Hx在数字音频中的应用。
关键词: 8x930Ax/Hx 数字音频 USB音频 USB控制器
1 通用串行总线和数字音频
1.1 通用串行总线
通用串行总线(USB)是一种工业标准连接总线,用于支持宽范围的PC外设的设计。USB拓扑有三个元素:主机(Host),集线器(Hub)和功能块(Function)。PC是主机,而外设是功能块。外设通过USB电缆和协议与主机PC接口。为使能外设的多样性,USB协议定义了4种传输类型:控制、同步、中断和块。
每种外设都应支持控制传送以便配置和命令/状态信息流能在主机PC和外设之间流动。同步传送提供可靠的总线访问和恒定的数据率以支持CTI(Computer Telephony Integration)和音频系统。中断传送支持像游戏杆、鼠标和键盘之类的HID(Human Input Device),这些设备不经常地传送少量的数据,但带有确定的服务周期。块传送支持像打印机和数字相机之类的外设,这些设备当总线带宽有效时传送大量数据给PC。
USB实行一种分块的带宽分配方案,如果外设超过当前带宽分配或等待时间要求,那么将拒绝访问外设。在同步和中断传输中可使用高达90%的总线带宽,剩余的10%被保留用于控制传输。块传输只能在带宽有效时进行。
1.2 Intel8x930Ax/Hx USB控制器
计算机外设的丰富及消费电子设备与计算机连接的实现,扩展了PC机的应用空间,同时外设的日益丰富也给用户造成了连接上的困难。USB技术的提出是基于采用通用连接技术实现外设的简单快速连接,达到方便用户、降低成本、扩展PC机连接外设的范围之目的。USB外设需通过USB与PC接口,8x930Ax/Hx便是一种将PC和外设沟通的器件。8x930Ax/Hx芯片是INTEL公司开发的具有USB功能的微控制器,既符合USB规范,又具有USB器件的某些结构特征。它基于INTEL MCS251微控制器内核,其高性能和低价格的组合使它成为PC图象外设、数字音频、PC电话及存储设备的理想解决方案。
8x930Ax和8x930Hx这两类芯片除了与USB的接口有点不同外,其余的功能完全相同。它们都为PC外设提供了一个USB接口。另外,8x930Hx还提供了Hub功能,允许连接另外的PC外设或HUB。下面以8x930Ax为例说明其功能和特性。
Intel8x930Ax USB外设控制器除集成了USB的特征外还提供了高性能大存储器合装和寻址、低功耗、低噪声、有效的高级语言支持和增强的指令集以及综合的特性和功能。Intel8x930Ax芯片为68引脚的PLCC封装,其引脚排列如图1所示,8x930Ax中的USB结构如图2所示。
1.2.1 收发器
USB电缆只包含4根电线:Vbus、D+、D-和GND。数据以12Mbs的全速信号率或1.5Mbs的低速率在D+和D-线上被差分驱动。收发器建在芯片上,不需要外部电路,除了在D+或D-线上用来选择全速或低速设备的上拉限定电阻之外。
1.2.2 SIE
SIE(Serial Interface Engine)通过包排序、信号产生/检测、CRC产生/校验、NRZI数据编码、位填充和包标识(PID)产生/解码来处理USB通信协议,并保证传送到USB电缆上的数据字节以LSb开头。
1.2.3 FIU
FIU(Function Interface Unit)管理基于传送类型和FIFO状态来接收和发送USB数据。它监视事务状态、管理FIFO和通过中断请求转播控制事件给8x930Ax的CPU。
1.2.4 FIFO
8x930Ax CPU控制器总共有8个FIFO:4个发送FIFO和4个接收FIFO。发送/接收FIFO支持4个功能块端点(0~3)。端点0为16字节,专门用于控制传送。端点1可配置到1024个字节,端点2和3每个为16字节,它们可用于中断、同步或块传送。发送和接收FIFO是循环存放的堆栈,支持两个大小可变的分立数据组和作为存放数据组中的字节数用的一字节计数寄存器。FIFO还有检测FIFO空或满的标记且具有重新发送和接收当前数据组的能力。
1.2.5 Firmware
Firmware是USB和用户应用代码之间的接口。8x930Ax的代码可使用Intel MCS51指令集以保护用户以往的软件投资、也可用MCS251指令集以便使应用得到最佳的性能。
8x930Ax具有的其它特征为:
·256K字节外部代码/数据存储器;
·1K字节片上数据RAM;
·CPU中40字节通用目的寄存器;
·增强的串口(MCS51 UART);
·3个16位定时器/计数器;
·硬件看门狗计时器(WDT);
·4个8位I/O口;
·2种节电模式:空闲和掉电;
·256K字节地址空间;
·外部总线(复合)
地址:16、17或18位
数据:8位
·0、8或16K字节片上ROM;
·1024字节片上RAM;
·40字节寄存器文件;
·8个中断矢量,与USB相关的有4个;
·用户可选配置:外部地址范围、等待状态、页模式;
·实时等待状态;
·MCS51和MCS251微控制器代码级兼容;
8x930Ax USB控制器的可编程计数阵列(PCA),为要求实时比较/捕获、高速I/O及脉宽调制(PWM)功能的应用增加了灵活性。集成在8x930Ax芯片上的外设有多样的组合,使之成为功能强大的微控制器。
1.3 USB音频
目前用PC产生音频有两种方法。第一种是CD音频,与家庭立体声压缩光盘播放机类似,CD-ROM驱动读压缩光盘和产生模拟信号输出。此模拟信号输入PC声卡,经进一步处理后,用标准RCA插头从PC机输出。通过PC产生音频的第二种方法是通过从内存读文件给声卡来完成,声卡完成解码或处理,将数字数据转换为模拟量,并用标准RCA插头从PC输出此模拟信号,这是当一个用户下载一个音频文件或从硬件驱动播放时的使用过程。
使用PC声卡可能存在下列缺点:在将声卡装入PC插槽时,声卡将占用像中断、端口地址一样的PC资源。另外,声卡必须被插入PC机箱内,因此必须重新配置,这在许多用户看来是困难的。机箱内还有电磁干扰(EMI)噪声,这会限制机箱内音频方案的声音质量。在从CD-ROM到声卡的过程中存在模拟信号,因为设计的复杂性,声卡限制了通道数目。这会妨碍它们的音阶能力,而且在没有给音箱增加功率时无法在多通道环绕声系统中使用。
USB位于机箱外,因此很适合于音频应用。音频数据在PC机内是数字的,它转换为模拟量时恰好位于音箱放大电路前面,这将改善声音的质量。数字音频具有更高的逼真性,这在音频的高端更明显。基于USB的音频方案很容易被改变以允许音箱厂商在主机PC和USB控制器之间不用增加任何硬件就可提高音频的质量。例如,具有多于两个音频数据通道是可能的,以丰富用户的多媒体终端。类似地,易于即插即用的特性使USB结构更吸引人。这样,数据处理可在主机上完成,为音箱制造商提供了一个降低存储成本的方法,用户只需买一对有USB兼容能力的音箱即可。
USB也具有处理音频应用要求的带宽,CD具有44.1kHz的采样率,每个采样为16位。因为USB的帧速率是10ms内,音频外设将接收包含44个采样的9帧数据及包含45个采样的1帧数据。也就是说,在10ms的时间周期内,外设将接收9×44+45=441个采样,平均每毫秒接收44.1个采样,等于44.1kHz的采样率。
假设音频数据为二个通道,加上协议开销10个字节,和最坏情况下16%的位填充,播放系统需控制(45×16×2+10)×1.16=1682位/ms,或接近210字节/ms。每个USB帧具有1024字节的数据负荷。因此,立体声音频信号的播放大约会消耗可用USB带宽的20%。每个210字节包中,有(45×16×2)/8=180字节的原始音频数据。
2 8x930Ax/Hx接口
2.1 8x930Ax/Hx与USB的接口
8x930Ax/Hx与USB除了上述接口外,对于音频应用还具有以下特点:①对于给定数据有效载荷大小,音频应用将使用8x930Ax/Hx的端点1,且8x930Ax/Hx端点1的1024字节FIFO将被配置成2个512字节。②数据传送类型采用同步传送。在音频流发送期间,从帧X来的数据将被读入A。在帧(X+1)的开始点,A中的数据将变为无效,而从主机来的数据被读入B。在帧(X+2)的开始点,B中的数据无效,从主机来的数据将覆盖A。需注意的是,在同步传送中不使用重新发送的特性。③USB协议要求传输的数据必须以LSb和LSB开头。在一个给定字节内由SIE负责从LSb到MSb进行发送,因此用户不必担心LSb开头,但用户需保证多字节数据包以LSB开头进行传送。
2.2 8x930Ax/Hx与音频编解码器的接口
一旦数据从USB电缆上俘获进入收发器FIFO,有二种方法将数据从8x930Ax/Hx传送到音频编解码器。第一种是通过串行I/O端口。第二种是通过系统总线(8位I/O端口0和2)。对于同步传送,8x930Ax/Hx被配置成高速设备,运行在12MHz。
串行I/O端口支持与Modem和其它外部外设的通信。它能工作在3个全双工异步模式或1个半双工同步模式。在半双工模式(模式0),时钟由RXD引脚输出,同时数据也由RXD引脚发送和接收。通过使用串行端口控制(SCON)和串行缓冲(SBUFF)寄存器来控制传送。与发送/接收FIFO类似,数据以LSb开头传送。
另外的接口信号通过使用剩余的I/O端口(端口1和3)来控制,SCON寄存器中的TI位能被登记以决定一个数据采样传送的完成,由此触发LRCLK信号。因为8x930Ax/Hx只有一个串行I/O口,控制信息的传送需被明确编程。系统总线(端口0和2)用来与外部存储器进行通信。外部总线通过使用接口的8位端口支持16位寻址和8位数据。一个端口用于8位地址信息而另8位端口则是地址和数据复合使用的,从音频编解码的观点来看,不管8x930Ax/Hx是否被配置成页模式或非页模式。
使用并行接口的音频编解码器可看作是第二个存储设备。音频编解码器可使用控制接口请求数据样品或控制信息,在控制器检测到请求后,它把数据写入到系统总线上。应特别注意地址解码和总线定时。
8x930Ax/Hx的第17和18位寻址模式是非常有用的。外部PAL或逻辑门能解码这二个信号以产生音频编解码器的使能信号。控制信号的传送可用端口1和3来进行。与串口I/O方法类似,在这些引脚上的信号转换都应被明确编程。
8x930Ax/Hx与Analog Device公司16位并行立体声音频编解码器AD1845的接口框图如图3所示。
8x930Ax/Hx提供了1K的片上数据存储器。所有执行码都在外部存储器(ROM或RAM)或片上ROM上。与WR#有关的数据字节的建立和保持时间对于AD1845是10ns和15ns,对于8x930Ax/Hx是68ns和28ns,即它们的建立和保持时间是兼容的。然而在写脉冲宽度时有差异,AD1845要求最少宽度为100ns,而8x930Ax/Hx的缺省配置只提供71.8ns。因此,8x930Ax/Hx须用外部等待状态来配置,这将增加WR#宽度到154ns。因为程序在ROM外执行,所以8x930Ax/Hx的WR#信号只连接到音频编解码器。
参考文献
1 8x930Ax/Hx USB Microcontroller User's Manual.http://www.Intel.com
2 Parallel-Port 16-Bit SoundportStereo Codec AD1845. http://www.Analog.com