DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1287|回复: 0
打印 上一主题 下一主题

[接口电路] 基于DSP的USB语音传输接口设计

[复制链接]
跳转到指定楼层
楼主
发表于 2012-1-27 20:11:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

  
         
    摘 要:介绍了一种基于DSP的USB语音传输接口的设计。通过USB在DSP和PC机之间进行串行通信,实现PC机对设备的命令控制及语音数据的双向传输。本设计中使用了USB的3种数据传输方式:控制传输、中断传输和等时传输,为扩充设备的应用范围打下了基础。
    关键词:语音传输;USB;DSP;串行通信
1 引 言
  USB把所有的输入和输出外设都置于机箱之外,而不用任何扩展槽。他是快速、双向、同步、动态连接且价格低廉的串行接口,可以满足PC机发展的现在和未来的需要。本设计就是充分发挥了USB这些优点,利用当今先进的电子技术研制出来的一种新型的高性能的语音传输接口装置。
  本设计选用TI公司的TMS320VC5402(以下简称DSP,DigitalSignalProcessor)作为本设计的主控制器芯片,NS公司的USBN9603(以下简称USB,Universal Serial Bus)作为USB控制器芯片,NEWAVE公司的NW1034(以下简称CODEC)作为语音编解码器芯片,MITEL公司的MH88634(以下简称 COIC)作为电话机接口芯片。
2 DSP和USB简介
  TMS320VC5402是定点芯片TMS320C54X系列的一种,是为实现低功耗和高性能而专门设计的定点 DSP芯片,主要应用在无线通信和语音处理等方面。TMS320VC5402的主要特点包括:处理性能好,运算速度达100 MI/s;优化的CPU结构,内部有1个40 b的算术逻辑单元,2个独立的40 b的加法器,1个17×17的的乘法器和1个40 b的桶形移位寄存器,有4条内部总线和2个地址产生器;低功耗方式,可以在3.3 VI/O电压和1.8 V内核电压下工作;智能外设,除了标准的串行口和时分复用(tdM)串行口外, TMS320VC5402还提供了自动缓冲串行口BSP(auto- BufferedSeroal Port和与外部处理器通信的HPI(HostPort Interface)接口;内部有16 k片内RAM和4 k片内ROM。
  TMS320VC5402其独特的高性能、低功耗和低价格优势,是我们选择他作为本设计的主处理器的原因。  USB自1995年实现标准化后,经过了数年的飞速发展,已经从最初1.0规范发展到现在的2.0规范,最大传输速率可达480 Mb/s。本设计使用的USBN9603支持USB1.1规范,低速传输速率为1.5 Mb/s,全速传输速率为12 Mb/s。USB提供了4种传输方式,以适应各种设备的需要。这4种传输方式分别是控制传输、NS的USBN9603是一个集成的USB端点控制器,具有增强的DMA功能。USBN9603集成了一个带有3.3 V的调节器的收发器,1个SIE(串行接口引擎),1个8 b并行接口,1个时钟发生器和1个MICROWIRE/PLUS接口。USBN9603可以进行7个端点的数据传输,除了端点0必须为控制传输端点以外,其他的6个端点可以被配置成中断传输端点、批量传输端点或者等时传输端点。每一个端点都有一个专门的FIFO,控制端点的FIFO长度为8 B,其他的为64 B。8 b并行接口可以支持多路复用或者非多路复用2种与CPU的接口方式。USBN9603的突出特点为:低EMI(电磁干扰),低等待电流,24 M晶振,增强的DMA功能;可使用5 V或3.3 V电源;总线操作具有异步唤醒的全速静态HALT模式;改进的3.3 V电压输入的电压调节器,所有非双向端点都有64 B的FIFO;外部控制器接口简单,编程方便。
3 语音传输的思想
  本设计的目的是给普通电话机和PC机之间提供一个数字接口。在本设计中,PC机是主机,DSP系统是USB设备。
  当有来电时,COIC向DSP申请中断,DSP收到中断后就使用USB的中断传输向主机报告有来电,主机应用软件会弹出一个对话框要求用户选择摘机还是拒接,同时耳机或音箱里会传出电话铃声,如果选择摘机,主机就会使用USB的控制传输发送一个摘机命令给DSP,DSP在接到命令后就会接通电话,同时启动CODEC,然后语音数据就通过USB的等时传输(也叫同步传输)进行双向传送,而主机用户插上耳机(或音箱)和话筒就可以与电话另一端通话,通话完毕,主机发送一个挂机命令给DSP。如果选择拒接,主机就发送一个拒接命令给DSP,DSP会执行相应的动作。
  当用户需要往外拨号时,也无需拿起电话机,只要在应用软件中选择拨号功能,输入被叫号码,点击确认键即可。剩下来的执行过程与有来电时的情况是一样的。
4 电路原理设计
  本设计由DSP构成核心控制器,控制对象是USB,CODEC和COIC。图1是整个系统的硬件框图。本设计的USB部分使用了USB的3种传输方式:
    (1)控制传输 
    用于实现设备枚举主机的标准请求还有厂商自定义请求(即主机命令)。
    (2)中断传输 
  用于实现设备对主机的唤醒,是惟一的设备主动向主机发送数据的传输方式。
    (3)等时传输 
用于实现语音数据的双向同步传输。



  图2是USB与DSP的接口原理图,如图所示,USB使用24 M晶振,本设备是全速(高速)设备,所以在D+上加0.5 kΩ上拉电阻,如果是低速设备,则在D-上加1.5 kΩ上拉电阻。MODE0和MODE1是选择8 b并行接口方式的,本设计中选用非多路复用方式,所以MODE0和MODE1都接地,如果要选择成多路复用方式,则使MODE0接3.3 V电源,MODE1接地即可。CLKOUT是时钟输出,可供测试用,正常上电复位后,CLKOUT就应该输出4 MHz的方波。然后可以在主程序中对USB的时钟寄存器进行配置,以产生需要的时钟,然后用示波器就可以在CLKOUT上看到相应的输出,可以用来判断读写操作是否正确等。




  CODEC与DSP的接口为标准的串行通信接口。
COIC把普通电话的两线制转换为四线制后实现与CODEC的无缝连接,另外和DSP接口只需几根简单的控制线即可实现。
5 系统软件的设计
  系统软件主要由3个部分组成:Firmware,USB驱动程序,主机应用软件。图3是系统软件框图。




5.1 Firmware
  固件程序,是写在DSP的ROM中的程序,由主程序和中断服务程序组成。使用TI提供的CCS(CodeComposer Studio)来完成Firmware的编写。CCS是TI推出的代码编译调试的集成环境,调试方便、易于使用,为本设计的顺利进行创造有利条件。
    (1)主程序 
  图4为主程序流程图。主程序只做初始化和检测一些状态位的变化,以转入相应的处理子程序中。




    (2)中断服务程序 
  包括COIC的中断服务程序、CODEC的中断服务程序和USB中断服务程序3部分。Firmware的大部分工作是在中断服务程序中完成的。
  COIC只有一个中断,就是把振铃信息传送给DSP。
  CODEC有3个中断:首先是接收振铃信息,在振铃中断服务子程序中,把振铃标志位置位;然后是接收中断,在中断服务子程序中把从电话接收到的语音数据装载到相应的FIFO中去;还有就是发送中断,在 中断服务子程序中把从PC机侧发过来的语音数据发送至电话终端。
  USB有4个中断,所有的数据交换都是在中断服务子程序中完成的,而且除中断传输外每次传输都是由客户启动的,主机应用软件调用USB功能驱动程序开始一个传输过程,然后USB产生一个中断请求,向DSP申请中断,在得到DSP的响应之后才进入中断服务子程序进行数据的接收或者发送。
5.2 USB驱动程序
  USB的驱动程序属于WDM(Windows DriverModel)类型,Windows 98/2000等操作系统均支持该类型的驱动程序。WDM首先定义了一个基本的核心驱动程序模型,处理所有类型的数据,使驱动程序模型的内核实现更加的固定。WDM驱动程序还是一种分层的程序结构,可以看做是Windows NT驱动程序的改进,WDM驱动程序支持即插即用、电源管理和WMI(Windows Management Instrument)特性。Windows 98/2000提供了一系列的系统驱动程序,他们具有为许多标准类型设备服务所需的所有基本功能。图5是USB的WDM接口框图(也是USB驱动程序总体框图)。




  Windows提供了USB的系统类驱动程序,他处理USB上的所有底层通信,这样其他驱动程序就有了一个定义好的接口可以使用。图5中USB类驱动程序使用UHCD.SYS或OHCI.SYS分别驱动两种类型的控制器UHCI(USBHost Controller Driver)和OHCI(Open Host Controller Interface)。当PCI枚举器发现USB主机控制器后,就会装入相关的驱动程序。
  需要自己做的驱动程序实际上是USB功能驱动程序(也叫客户驱动程序),他控制一个给定的USB功能设备,例如我们的语音传输设备。连接到USB设备的每一种类型的功能单元都必须要有功能驱动程序。这些功能单元不知道和USB传输机制相关的细节,而且必须依赖于USB的主机应用软件才能管理他们基于 USB的能力和限制的传输请求。功能驱动程序的理想实现是基于设备类而定义的。功能驱动程序把USB设备看作是一个可以被访问的端点的集合,他可以被控制并与他的功能单元进行通信。USB功能驱动程序可以在VC++下编写,但需使用微软提供的NtdDK(Windows NtdriverDevelop Kit)来编译驱动程序。
5.3 主机应用软件
  主机应用软件所完成的主要工作为:打开和关闭USB设备;读取设备描述符等;向设备发送摘机、挂机和拨号等命令;主动向用户发声并弹出对话框提示有来电;进行拨号;拨号或摘机后的双向语音同步传输。
  主机应用软件在VC++6.0下完成,应用软件所操作的对象就是USB功能驱动程序,由于功能驱动程序提供与应用软件的接口,因此编写应用软件的难度要远远低于功能驱动程序的开发难度。
6 结 语
  在当今的数字化时代背景下,DSP已成为通信、计算机、消费类电子产品等领域的基础器件,被誉为 信息社会革命的旗手。USB为PC外围设备输入输出提供了新的接口标准。他使得设备具有了热插拔、即插即用、自动配置的能力,并标准化了设备连接。USB的级联星型拓扑结构大大扩充了外设数量,使增加、使用外设更加便捷、快速。
  本文所介绍的USB设备其实是一个数字电话机的模型,本系统软硬件都具有模块化特性,易于改造成其他应用场合的语音控制系统:从大的方面讲,可以组成数字电话网;从小的方面讲,在一个局域网内部,所有成员就都可以通过局域网方便地接听和拨打电话,而无需大量的分机。该设计节省了大量的人力和物力,具有较强的使用价值和推广意义。

 
参考文献
[1] 张雄伟,曹铁勇,等.DSP芯片的原理与开发应用[M].北京:电子工业出版社,2000.
[2] 张念淮,江浩,等.USB总线接口开发指南[M].北京:国防工业出版社,2001.
[3] Chris Cant.Windows WDM设备驱动程序开发指南[M].北京:机械工业出版社,2001.
         
          [/td]
        [/tr]
      
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-4-25 21:14 , 耗时 0.090307 秒, 18 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表