微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于USB总线的多路电话录音系统的设计

基于USB总线的多路电话录音系统的设计

时间:12-28 来源:互联网 点击:

  1 概述

  现在市场上的录音系统大致可分为电话录音卡和电话录音盒两种。电话录音卡是以板卡的形式插入电脑主板插槽与主机连接的,安装极为不便。大部分的录音卡为PCI插槽形式,不仅价格昂贵,而且受计算机插槽数量、地址及中断资源的限制,可扩展性较差。尤其是在电磁干扰较强的环境中,无法专门对其作电磁屏蔽,容易导致数据丢失,使声音失真。电话录音盒一般为外置式设备,通过接口线直接接入计算机外置接口,使用非常方便;但是,计算机提供的接口毕竟有限,传统的串并口都是点对点连接,即一个接口只能支持一个设备,而且串并口一般不能满足系统的实时性要求。在这种情况下,采用USB作为录音系统的接口,是一个相当好的选择。设计一种基于USB接口技术的电话录音系统,不仅充分利用USB规范的各种优越条件,很好地解决了上述问题,而且具有支持即插即用、使用方便的功能,市场前景广阔。

  本文阐述一种基于USB总线的多路电话录音系统的实现方法,录音系统采用高性能的混合信号微控制器芯片C8051F320作为控制器内核。该微控制器内部集成有USB控制器来控制USB的传输,简化了系统硬件电路的设计;软件方面利用Cygnal/Silicon Laboratories公司提供的USBXpress软件开发包进行PC端应用程序和微控制器端固件程序的编程。该方法充分利用已有资源,开发简单,易于实现。 录音系统采用外置录音盒的形式,连接在电脑的USB接口上,并连上要管理的电话线,即插即用,无须外接电源,可热插拔,使用方便。录音系统以软硬件相结合的方式对电话进行录音,并将录音文件录制于电脑硬盘,弥补了传统电话录音时间短、不便管理、声卡采集器录音不稳定的缺陷。

  2 系统的硬件实现

  2.1 USB总线及C8051F320微控制器简介

  通用串行总线(USB)是近年来发展起来的一种新的总线接口技术,以其低成本、高速度、易扩展、支持热插拔和即插即用等一系列优点,获得了迅猛发展。USB接口已经和串口/并口一样,成为PC机的标准接口。USB2.0接口的最高传输速度可达480 Mbps,远远高于传统的串/并接口,可以满足绝大部分情况下大数据量实时传输的要求。USB接口采用树型拓扑结构,一个USB接口可以最多连接127个设备,由于单独使用自己保留的中断,因此基于USB的通信克服了通常串并口通信中遇到的IQR冲突问题。另外,USB接口支持热插拔的特性,极大地方便了系统的开发调试和实际应用;USB设备不需要单独的电源,只需用计算机或集线器提供电源。

  C8051F320是Cygnal公司推出的一款具有全速USB功能的混合信号Flash微控制器。芯片内部集成有2 304字节的RAM和16 KB的Flash存储器;具有较快的处理速度和较大的存储容量,而且具有在系统可编程的功能。实际上,C8051F320是一个完整的小型片上系统(SoC)。C8051F320具有以下特点:

全速的USB2.0功能控制器;
可支持8个USB端点;
带有1 KB的USB缓冲存储器;
内部集成了 USB接口的数据收发器,设计中无需外部上拉电阻;
具有高速增强性8051 MCU内核,该MCU内核采用流水线式指令结构,处理速度可达25 MIPS(时钟频率为25 MHz时)。

  基于上述特点,录音系统采用了C8051F320微控制器芯片。

  2.2 系统的硬件构成

  录音系统实现四路电话同时录音。系统总体框架如图1所示。


图1 系统总体框架

  录音盒内部为以C8051F320微控制器芯片为核心的单片机系统;通过USB电缆与主机连接;微控制器芯片的P0~P3四个端口用于输入电话线路产生的直流信号,以获取电话线路的状态;P4~P7四个端口用于输入电话线路产生的交流信号,即语音信号,然后通过A/D转换器转换为数字信号,作为 USB传输的录音数据。

  系统所采用的A/D转换器为C8051F320微控制器内部集成,具有10位精度,最高采样率可达200 ksps。

  3 系统的软件实现

  系统的软件基于Silicon Laboratories公司提供的USBXpress软件开发包开发设计,USBXpress通过动态链接库和库函数提供应用程序接口。由于 USBXpress已提供有设备的驱动程序,因而,开发的主要任务是下位机固件程序和上位机应用程序的开发。

  3.1 USBXpress软件开发包

  USBXpress软件开发包包括Windows公司设备驱动程序、INF驱动安装文件、主机接口函数库(以Windows DLL的形式提供)以及设备固件接口函数库。

  录音系统使用到的主机接口函数为:

F32x_GetNumDevic

es( )返回主机所连接的USB设备的个数
F32x_GetProductString( )返回所连USB设备的描述符
F32x_Open( )打开USB设备
F32x_Close( )关闭USB设备
F32x_Read( )读设备
F32x_Write( )写设备
F32x_SetTimeouts()设置读/写超时值
F32x_GetTimeouts()获取读/写超时值
F32x_CheckRXQueue()返回设备接收队列的字节数

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top