基于USB主机结构的数字录音技术研究
扫描二维码
随时随地手机看文章
随着数字技术的发展,录音技术也进入了数字化阶段。目前数字录音系统应用已非常广泛,如电力、铁路、石油等行业的指挥调度,机场、港口、公安、军事等要害部门的录音和监听,金融行业授权指令的实时录音,无线寻呼台、电信局、服务行业的服务等。数字录音系统为及时了解和发现事故原因以及提供准确可靠的原始录音记录发挥了巨大作用。
目前,很多数字录音系统是基于PC实现的。语音数据采集后通过串口实时传送到PC进行数字语音的存储,再由PC对数字语音数据进行后期处理。但是在很多应用场合(如移动装置、野外作业、窃听等),由于受布线、成本、安装空间及环境等影响,基于PC的数字录音方案受到限制。这些应用场合下,如何实现语音数据的存储就成为关键。
方案一是采用无线传输。实时将采集到的语音数据传送。但是由于受无线数据传输的距离、速度以及实现成本的限制,这种方案的可行性不高;
方案二是采用可移动的存储体。目前应用较广的有CF、SD等存储卡和基于USB接口的移动存储设备。从单位字节存储成本考虑,存储卡的成本明显高于基于USB接口的移动存储设备。
另外,PC与存储卡进行数据交换时必须购买相应的读卡器,这意味着要增加额外的成本且使用不灵活。随着USB技术的发展与不断成熟,目前几乎所有PC主板都带有多个USB接口,且操作系统对USB设备的支持也非常完备。这样数字语音数据可与任意PC进行数据交换,从而使应用变得非常方便和灵活。因此,研究嵌入式环境下基于USB主机结构的数字录音技术就具有实际意义和应用前景。
1 数字录音系统的设计和工作原理
整个录音系统主要由两大部分组成。一是语音数据的PCM编码电路,实现语音的AD转换;二是USB主机的接口电路。单片机P89C51RD2HBA实现USB-HOST主机协议和语音数据的采集功能,系统原理如图l所示。
2 语音编解码电路设计
2.1 MCl4LC5480芯片简介
语音的PCM编码是将模拟语音信号转变为数字语音信号。它是语音数字化的第一步,也是语音压缩的基础。MCl4LC5480是Motorola公司生产的μ/A律PCM芯片,具有以下特点:低功耗;低噪声的全差分模拟电路设计;片内集成有发送带通滤波器和接收低通滤波器;具有RC预滤波器后滤波器;μ/A律可选择。MCl4LC5480的原理如图2所示。
图2中,RO+、RO-和TI+、TI-分别是PCM模拟语音信号的差分输出和输入;PI、PO+、PO-用来放大模拟信号以驱动模拟语音设备;同步控制部分主要用于控制帧同步和位同步,控制引脚主要用于μ/A律的选择和低功耗模式的选择。
2.2 语音编解码应用电路设计
基于MCl4LC5480的语音编解码应用电路如图3所示。其中输入的8kHz时钟源用于帧同步,2.048MHz的时钟源用于位同步。PCM输出即为编码后的串行输出数据,再经过SN74HC595转换为并行数据与单片机的8位数据总线连接;PCM输入则为串行输入的数字语音数据。在图3中,8kHz、2.048MHz时钟源可用Motorola公司的MC74HC4060产生。具体实现如图4所示。
3 USB主机接口电路设计
3.1 USB-HOST接口芯片SL811HS简介
SL811HS是Cypress公司推出的一种遵从USB1.1协议的嵌入式USB Host/Slave芯片。该芯片既能与USB低速设备通信,也能与USB高速设备通信。由于提供了8位宽的数据总线及中断支持,使得该芯片能方便地与微处理器、微控制器以及DSP连接。SL811HS可以在Host/Slave两种模式下工作。该芯片具有以下特点:
(1)自动探测所接设备是低速设备还是高速设备;
(2)具有8位双向数据总线及片上SIE、USB收发器;
(3)自动产生SOF令牌包及自动生成令牌包、数据包中所需要的CRCS/CRCl6数据;
(4)内部256B RAM,支持乒乓操作;
(5)支持SUSPEND/RESUME、WAKE UP、LDW-POW-ER模式。
3.2 USB-HOST接口电路设计
SL811HS的接口电路原理如图5所示。
由于系统只需要具有USB主机的功能,因此只需将控制SL811HS为主机或从机工作方式的M/S管脚接地。SL811HS的地址数据复用总线AD[7:0]与单片机P89C51RD2HBA的P0口连接。其中SL811HS的A0功能较为灵活。AO=0时表示数据线上的数据是SL811HS的RAM空间的地址指针;A0=1时则读写指定地址的RAM数据,从而实现数据的传输。
而且它支持地址自增模式,即可读写连续地址单元中的数据,而不需要多次写入地址,从而大大提高传输速度。为了提高系统的抗干扰能力和稳定性,VDD引脚的去耦电容采用103电容。并且在设计PCB时DATA+和DATA-的走线尽量短,整个PEB板做覆铜处理。
4 软件设计与实现
4.1 USB主机对设备的枚举软件框架设计
枚举是任何USB设备使用前必经的过程,因此枚举作为整个USB通信的前提显得非常关键。下面依照自底向上的软件设计方法实现USB主机对设备的枚举。整个USB主机系统的实现也是按照层次由底向上的设计思路,这样便于系统移植。
(1)MCU与sL811HST的底层通信。这是整个USBHost模块的基础,它主要包括对SL8llHS字节的读/写和字节串的读/写等函数。
(2)USB最底层数据包发送的实现。这是一个发送数据包的函数,参数包括发送的数据包类型、端点地址、端点负载、传输长度和数据缓存区地址指针。
(3)控制传输和USB协议栈标准请求命令的实现。控制传输主要用于发送和接收与USB设备的配置信息相关的数据,包括建立阶段、可选数据阶段和状态阶段。每个阶段都由特定的事务(USB最底层数据包的发送)组成。建立阶段发送规定格式的USB标准请求命令;数据阶段是可选的,它根据建立阶段指明的传输方向传输具有USB定义的数据,该阶段包含一个或多个IN/OUT事务;状态阶段用于报告建立阶段和数据阶段的传输结果。[!--empirenews.page--]
(4)USB设备的枚举。根据USB协议的规定,在调用标准请求命令函数的基础上,实现主机对USB设备的枚举。首先通过缺省地址0获取设备描述符,如厂商ID、产品ID、设备类等信息;之后为设备分配新的地址;然后通过这个新地址与设备通信,获取配置描述符、接口描述符、端点描述符等;根据获取的配置描述符信息,为设备设定一个配置。
(5)整个USB的协议框架。至此,整个USB主机的活动特性已了解。从(1)~(4),层层递进,一级比一级高级。最简单地说,就是(4)中宏观的USB主机活动是由最底层的(1)实现。
而(1)中的函数是完全与硬件相关的部分,且越往上与硬件的关系越小,以至于在(4)中的层次就完全是与硬件无关的软件平台。这也为整个系统的移植奠定了基础,只需修改与硬件紧密相关的函数体即可。
4.2 主机与存储设备之间的数据传输
数字语音存储应用中采用的移动存储设备是Mass Storage类(海量存储类)。Mass Storage类主要用于软磁盘接口、ATA接口、IDE硬盘接口及Flash存储器等设备建立的USB接口。
不同的数据存储载体接口构成了Mass Storage类的子类,UFI即为实现软磁盘接口的Mass Storage类的子类。各个子类都有一套自己的协议,并通过命令的形式实现各种功能。这些命令都是各子类所特
有的,与USB没有任何关系,只是在uSB传输时被打包成一系列的命令包进行传输。而真正与Mass Storage的传输方式相关的是其传输协议。
BULK-ONLY协议没有使用中断和控制端点,仅使用BULK(批量)端点进行命令、数据和状态的传输。批量传输方式不受时间限制并能保证数据的完整性。在这种传输方式下,有三种类型的数据在USB与设备之间传送:CBW、CSW和普通数据。
图6描述了主机端数据传输方式。从图6可以看到数据段一分为二,一个是数据输出(主机发送数据到设备),另一个是数据输入(主机从设备获取数据)。主机发送CBW,这个CBW本身作为描述符的负载数据传输到设备。CBW的封包也包括封包头和 图6 BULK-ONLY传输方式命令块两部分。封包头表征了数据传输方向传输的逻辑单元和命令块长度,命令块是真正需要实现的命令。
4.3 数字语音数据存储
(1)单片机对移动存储设备的读写
USB移动存储设备的读写需要对存储体的存储格式有一定了解。FAT文件系统通过Mass Storage类的UFI子类命令与u盘建立联系,并在系统中建立一个U盘的空间结构实现写文件、读文件等功能。对于只有一个分区的FATl6格式的U盘,其结构依次是主引导记录(MBR)、系统引导记录(DBR)、文件分配表(FAT)、文件目录表(FDT)和数据区(DATA)。
MBR包括446字节的主引导代码、64字节的DPT(Disk Partition Table,磁盘分区表)和“55.AA”的结束标志。DBR是操作系统可以直接访问的第一扇区,它包括一个引导程序和一个被称为BPB(Bios Parameter Block)的本分区参数记录表。
BPB含有对文件系统操作的关键信息,因此非常重要。在对U盘进行读写前首先要读取MBR扇区和DBR扇区,以获取DPT和BPB信息作为文件系统操作的基础;然后根据FAT表中簇的使用情况为相应文件进行分配(回收)并在FDT表中注册(删除)文件属性等信息,即可实现对文件写、删除等操作。
(2)数字语音文件的实时存储
在本应用系统中,把实时采集编码后的数字语音按文件格式存储到uSB接口的移动存储设备上,以实现嵌入式环境下实时语音数据的存储与交换。对于存储后的数字语音文件可在PC环境下作后期处理,非常方便和灵活。整个系统的主循环程序设计流程如图7所示。根据实际应用需求,设计了两路实时语音的采集编码,每路语音的数据速率为8kbps。
由于语音数据是恒定速率输入且长时间存储的数据量比较大,因此如何提高存储速度以保证语音数据的实时存储就非常重要。为此系统采用前后台操作方式,即语音数据的缓存在中断服务程序中完成,并且每路语音数据均采用双缓冲区形式。其中一个用于实时采集的语音数据缓存,另一个用于USB主机发送到U盘的数据缓存。
在系统运行中两个缓冲区的角色动态切换。在系统缓存容量允许的情况下,每个缓冲区大小尽可能大一些。因为对U盘一次性写入的文件容量越大,平均字节的系统开销越小,速度越快。数字语音文件存储到u盘的操作在后台主循环中实现,主循环对两个缓冲区满标志进行查询来决定当前待发送的缓冲区,发送完毕后清除相应的缓冲区满标志。所以通过有效分配缓冲区大小和双缓冲方式能有效提高数据存储速度,再通过采用前后台的操作方式更好地保证数据存储的实时性能。
本文主要研究了嵌入式环境下基于USB-HOST结构的数字录音技术及其实现,目前已通过系统调试。系统能够完成设计预期的对两路语音的实时存储,且长时间运行稳定性较好。在设计中由于USB主机协议框架部分按自底向上的层次设计方法,因此系统具有很好的移植性,稍做修改即可移植到如数据采集系统、工控领域等应用场合。
更多计算机与外设信息请关注:21ic计算机与外设频道