嵌入式语音通信系统中VxWorks BSP的设计实现

发布者:莫愁前路最新更新时间:2009-10-09 来源: 现代电子技术 关键字:VxWorks  BSP  嵌入式  语音通信系统 手机看文章 扫描二维码
随时随地手机看文章

  0 引 言

  当前普遍使用的DSP语音处理技术只能对语音进行简单处理,不能适应语音业务的多样化趋势。本文介绍利用MPC860和VxWorks实现综合语音通信平台,支持多板卡、多路语音实时传输,可扩展多路语音共听功能。利用MPC860的通信和信号处理功能,且Vx-Works具有占用空间小、执行效率高、方便进行个性化定制和较好的兼容性等特点,所以该综合语音通信平台在功能、硬件结构、体积、功耗以及灵活性上具有较大优势。

  在设计中尽量采用嵌入式开发中的常用器件,以便稍加改动即可应用于其他设计。可以根据实际需要更改系统中语音通道的数目和扩展多路语音共听功能等。

  1 系统结构及工作原理

  1.1 系统组成及特点

  整个通信平台由语音通信处理主板和语音采集回放子板组成。语音通信处理主板包括CPU MPC860、FLASH存储器、SDRAM存储器、10/100Mb/s网络接口、RS 232串口、BDM调试接口、Console接口、供电和复位电路及120pin连接器。通信处理主板的核心MPC860是Motorola公司的一款由MC68360演变而来的通用单片集成嵌入式微处理器,适用于通信和网络系统。该微处理器内部有两个处理器:PowerPC和32位RISC处理器。PowerPC核同内存管理单元(MMU)、指令和数据Cache一同处理高层次应用,CPM则负责完成低层数据通信。两个处理器主要通过共享内存交互。通信处理模块利用SCC,SMC,SPI和I2C串行通道与外部设备通信,其中SCC和SMC支持时分复用。设计中,SCC工作在QMC协议Trans-parent Mode。通信处理模块(CPM)新增了数字信号处理(DSP)功能。语音采集回放子板由语音采集电路、语音回放电路、基于FPGA实现的通信控制器和与语音通信处理主板连接的120pin连接器组成。

  由于MPC860的数据传输速度相比ADCDAC要快很多,设计相应的逻辑电路控制语音的采集和回放、协调MPC860和数据采集、回放电路之间的通信是保证系统正常工作的关键。文中设计了基于Altera公司的CycloneⅡEP2C8芯片实现的通信控制器来解决这一问题。

  将通信平台分为语音通信处理主板和语音采集回放子板分别设计实现,是为了降低系统开发难度和便于系统维护、升级和扩展。例如语音通信处理主板无需改动即可利用已有的连接器、FEC网络接口和SDRAM存储器等资源与视频编解码芯片、视频压缩/解压缩芯片组成网络视频服务器。

  1.2 功能结构和工作原理

  语音通信处理主板的功能结构如图1所示。

  系统上电后,语音通信处理主板复位电路产生复位信号,MPC860接收到复位信号后,跳转到0X100处开始执行启动代码。按照BSP配置逐步执行CPU初始化、板上其他硬件电路的初始化、操作系统运行所需数据结构的初始化、启动VxWorks WIND内核、创建UserRoot任务、初始化系统中用到的可选扩展模块(如I/O系统、文件系统、网络协议等)、创建任务usrAppInit(),此时语音通信平台准备就绪,可以执行语音通信任务。采集板的功能结构如图2所示,语音通信处理主板启动完毕后,语音采集回放子板可在通信控制器控制下采集和回放语音,并对语音数据进行压缩编解码和IP封装、解封装处理。

  1.3 数据处理流程

  MPC860T和ADC AD7825,DAC AD7305之间的通信由通信控制器控制。通信控制器由数据缓冲区(Rx FIFO,Tx FIFO),基于FSM(有限状态机)实现的控制逻辑(Rx control,Tx control)和8位串并、并串转换器,时钟电路组成。其数据接收过程为:接收控制逻辑(Rx control)控制ADC AD7825将各个通道的语音数字化,并把转换结果存入接收缓冲区(Rx FIFO),直至Rx FIFO满时Rx control开始向MPC860T提供周期性帧同步信号,频率为32 kHz。MPC860在帧同步信号和时钟信号的驱动下读取Rx FIFO中的数据到SCC数据接收缓冲区。Rx FIFO读空(即读指针追上了写指针)后,Rx control停止向MPC860发送帧同步信号终止数据传输,同时向MPC860发送中断信号IRQ3,MPC860响应中断把数据从接收缓冲区读到接收ring buffer中等待应用程序处理。其数据发送过程为:MPC860完成IP解封装、解压缩后的语音数据将会在检测到发送缓冲区可用时,输出到SCC发送缓冲区,通信控制器提供发送帧同步信号驱动数据传输到Tx FIFO(发送缓冲区),待到Tx FIFO满时停止发送帧同步信号。数据发送完后,CPM会清零,TxBD)中的R位表示MPC860可向SCC发送缓冲区中装入新的数据,为下次传输做准备。

  1.4 QMC通信协议

  多通道控制器(QUICC Multichannel Controler,QMC)是为了实现时分复用数据传输而设计的,它可以把时分复用帧的数据分发到多达64个逻辑通道。该模式下把每一帧的数据划分成若干个时隙(Timeslots),每时隙8 b。在时隙分配表中规定每时隙数据从属于某个通道,每个通道都有一组特定的缓冲区描述符和相应的缓冲区。一个时隙的数据在收发时被放置在特定的缓冲区里,MPC860T就可把分散的数据聚集在一起发送,或把聚集在一起的数据分发到各自专用的缓冲区,而不需要额外的处理来区分各种各样的数据流。

  2 BSP 设计实现

  设计中软件开发主要包括启动代码的编写、操作系统的移植、硬件驱动程序和语音编、解码和IP封装、解封装应用程序。篇幅有限,本文仅介绍BSP移植。BSP即板级支持包,其功能为硬件、软件初始化、工程影像的下载和设备驱动等。

  2.1 BSP的定制

  无论是BootRom还是VxWorks都要使用BSP代码,BSP定制需要根据硬板配置、系统设计需求、软件功能等实际情况。实际开发过程中,为了缩短产品开发周期,通常以WINDRIVER公司的BSP模板或者第三方公司提供的可供参考的BSP为基础,根据软硬件具体配置进行修改,添加新的程序驱动新增硬件和功能。本课题中先把APC860开发板的BSPMPC860TEVB拷贝到installdir:\Tornado\target\collfig\ppcs860目录下,主要做下列修改。

  2.1.1 config.h文件

  根据实际情况,需要修改启动行,内存地址、容量等配置,修改部分代码如下:

  2.1.2 makefile文件的修改

  makefile文件的修改,部分程序如下:

  2.1.3 romInit文件修改

  romlnit.s模块包含了VxWorks在ROM中的入口点romlnit(),它是单板上电以后最先执行的汇编程序代码。该函数功能包括处理器的复位、内存的初始化以及其他的最基本和必要的初始化工作。需要修改的内容如下:

  内部存储器映射寄存器IMMR。该寄存器用来标识内部地址空间的基址,将该寄存器设置为“FF000000”。

  SIU模式配置寄存器SIUMCR。包括有外部总线仲裁器配置,外部master的支持,DEBUG调试端口配置,系统接口引脚配置以及奇偶校验支持,将该寄存器设置为“00E10000”。

  BSP中讨论SDRAM的初始化过程,首先对MAMR寄存器的初始化,再得到UPM的RAM阵列表的地址,然后将RAM阵列表地址中的值写入MPC860 RAM WORDS ARRAY中,最后初始化OR以及BR寄存器。

[page]

  2.1.4 ppcs860.h

  ppcs860.h是参数配置头文件,该文件包含大量宏定义,为使MPC860T正常运行且SCC串口工作在QMC协议透明模式,根据实际需要做了如下配置:

  (1)修改系统常量对应的宏定义:SCCx参数在双端口RAM中存储的起始地址、缓冲区描述符(BD)的基地址、缓冲区和BD的数目等;

  (2)串口和时隙分配表的初始化,主要包括时隙分配、引脚分配等,通过设置SI RAM参数,规定了每个逻辑通道对应的时隙和数据路由,本系统中选择SCC2和TDMB接口实现QMC通信,引脚配置如下:

  PC6 RSYNC,PA2 RXC,PA10 RXD,PA0 TXC。PA11 TXD

  (3)SCC2初始化:设置SCC2工作在QMC模式;

  (4)QMC全局参数初始化:MCBASE(多通道基地址指针),初始化为SCC2对应外部BD表的基地址,MRBLR(最大接收缓冲区长度),接收、发送时隙分配表起始地址的指针(Rx S PTR,Tx S PTR),接收、发送时隙分配表当前时隙的指针(Rx PTR,TxPTR),中断循环表基地址(INTBASE),中断循环表下一可用入口的指针(INTPTR)等;

  (5)QMC特定通道参数初始化:TBASE,RBASE(该逻辑通道的缓冲区描述符的起始地址),TBPTR,RBPTR(当前发送、接收缓冲区描述符指针),TMR-BLR(最大接收帧长度)等。

  2.1.5 驱动程序

  驱动程序直接对硬件操作,实现硬件和操作系统、应用程序之间的交互。需要自行编写MPC860 SCC串口驱动程序ppcs860QmcSio.c,通信平台中SCC工作在QMC Transparent模式。ppcs860QmcSio.c文件中包含SIO_DRV_FUNCS结构体中定义的5个函数和中断处理函数ppc860QmcInt()、Qmc逻辑通道复位函数ppc860QmcChannelReset()。ppc860SccIoctl()提供了一些设备控制选项,包括停止数据传送、察看当前通信状态(空闲还是忙)、轮询或中断模式选择等;ppc860sccInt()处理QMC通道的中断请求,通过中断方式实现数据的收发功能;ppc860SccStartuP()函数启动一个发送周期;ppc860SccCallbackInstall()安装回调函数。中断处理函数的功能有:

  (1)提供接收、发送中断处理函数,调用回调函数完成设备和较高层协议之间的数据传送。

  (2)处理数据接收过程中出现的接收数据过长,数据传送被迫终止等异常。由于不需要QMC的轮询模式,因此ppc860SccPollInput()和ppc860SccPollOutput()以NULL函数的形式实现。同时还要编写sysSccSeri-al.c文件,修改sysLib.c文件和usrConfig.c文件。在sysSccQmc.c中提供SCC设备描述符的初始化例程、SCC中断连接例程等;通过修改sysLib.c和usrCon-fig.c文件以实现VxWorks对QMC驱动程序的调用和QMC驱动程序与TTY系统的挂接。

  2.1.6 通道中断处理过程

  数据收发的核心是中断处理函数。QMC中的所有逻辑通道共享SCC2的中断,SCC2维持有一个全局中断表,表中每一项里面都含有逻辑通道号和中断源,可以被驱动识别以处理不同情况下出现的事件。中断发生时,驱动从SCCE寄存器里面判断全局中断源,如果中断是由逻辑通道引起,中断服务程序便查找全局中断表以找到该逻辑通道,并从中断条目里面检查中断信息以确定是什么类型,再调用相应的收发和错误处理函数。

  2.1.7 数据接收和发送

  多通道语音通信系统中MPC860T SCC串口时分复用即工作在QMC模式,逻辑通道的通信协议为Trasparent mode,该协议仅传输二进制数据,不对数据流进行位级操作,不区分数据帧中的格式位、起止位和数据位等,不对接收的数据做检错处理,因而具有较高的数据传输速率。

  接收函数由中断服务例程调用。由于是每接收一帧产生一次中断,故接收函数也每次处理一帧的数据。数据的接收由接收描述符RxBD控制。当要接收数据时,接收函数首先需要确定RxBD有效;确定没有问题后,才将数据从接收缓冲区拷贝到接收Ring buffer,并复位RxBD;否则在进行相应错误处理后复位RxBD。接收函数流程如图3所示。

  数据发送不调用中断处理函数,发送函数检测到发送缓冲区可用(即TxBD中R位为1)后,调用回调函数将数据从发送Ring buffer拷贝到串口发送缓冲区(Txbuffer)。这里为发送功能开辟足够大的环形缓冲区(足以容纳应用程序每一帧的数据)。发送函数流程如图4所示。

  2.2 BSP调试方法和遇到的问题

  2.2.1 调试方法

  开发调试有两种方法,一种是使用仿真器通过BDM(后端调试模式)一步步地跟踪调试,另一种是通过点灯的方式进行所谓的“黑”调。“黑”调的方法是通过“灯”闪、用示波器测片选等,根据外部现象和所编的测试代码进行比较分析来调试程序。进行“黑”调的目的是调通信串口部分代码,宿主机可以通过串口与目标机的通信,然后再调试其他部分。调试流程分成两部分。首先是预内核启动代码(Pre-Kernel Initializa-tion),待最小内核启动正常后再添加I/O系统、文件系统、网络系统等组件和调试应用程序。使用仿真器Vi-sion Probe通过BDM方式调试BSP并将BootRom映像烧入FLASH。

  2.2.2 调试中遇到的问题

  (1)系统无法正常复位

  在调试过程中,发现MPC860T的CLKOUT引脚无输出信号,系统上电复位过程没有完成,系统无法正常工作。初步判断是硬件问题。用万用表和示波器逐步检查上电复位、硬件复位、软件复位、时钟输入和BDM调试等模块电路,发现正常。判断是BGA焊接出现问题,将芯片取下,重新焊接,系统复位正常,时钟信号输出稳定正常。

  (2)网络无法与外界通信

  100 Mb/s快速以太网驱动加载中,网络层协议无法运行,目标板无法与外界网络建立联系。目标板网络启动时发出的MAC地址信息帧外界无法收到。通过仿真器发现程序单步运行正常。经过反复试验和测试,最终发现因SDRAM初始化程序没有运行导致程序运行(需要SDRAM支持突发模式)出错。更改调试方式,将BootRom开始的所有程序烧入FLASH,上电启动,网络正常,目标板与外界建立良好的网络通信。

  3 结 语

  该系统在实际测试中话音质量稳定,测试时声音清晰,没有串扰和杂音,没有较大延迟,说明硬件设计正确完备,QMC驱动程序和语音编解码和IP封装与解封装应用程序性能优良。

如果板卡上语音通道更多,则每帧的时隙增多、长度增大,因为FPGA内部电路所提供的的帧同步信号周期并不改变,所以只是实际数据传输速率提高,可以保证各路语音的同步和实时性。系统中QMC工作在Transparent Mode限制了它的应用范围,如何改进使系统支持多种通信协议是需要进一步研究的问题。

关键字:VxWorks  BSP  嵌入式  语音通信系统 引用地址:嵌入式语音通信系统中VxWorks BSP的设计实现

上一篇:高性能路由器硬件抽象层的关键技术研究
下一篇:基于VxWorks的文件系统的研究与实现

推荐阅读最新更新时间:2024-05-02 20:53

基于OR1200的嵌入式SoPC硬件平台设计
摘要:针对现有商业SoPC系统的固有问题,提出了基于开源IP核与软件资源的SoPC系统硬件平台构建方案,并使用Cyclone FPGA进行了实际验证,证明了该硬件平台的实用性。探讨了该平台在普及SoPC技术和研究更高性能系统方面的积极作用。 关键词:OpenRISC1200可编程片上系统IP核 FPGA SoC(System on Chip)片上系统是现代电子系统设计的一个发展方向,它将原先分立的多个芯片集成在一块芯片上,通过提高芯片的集成度、减少系统芯片的数量和相互之间的PCB连线、减少PCB面积来降低整个系统的成本,同时使系统的性能、功能和可靠性都有很大的提高。随着新型的高性能、低成本FPGA的出现和综合技术的提高,基于
[嵌入式]
痞子衡嵌入式:ARM Cortex-M文件那些事(0)- 文件关联
本篇是文件系列第一篇,本系列文章会逐一介绍ARM Cortex-M开发过程中(以IAR集成开发环境为例,其他开发环境可触类旁通)所要接触的8种主要文件类型:源文件、链接文件、工程文件、可重定向文件、映射文件、可执行文件、反汇编文件、镜像文件。 在介绍具体各文件之前有必要先让大家对各文件之间的关联有一个初步了解,下面三张图很好的诠释了8种文件之间的关联: 编译阶段: 链接阶段: 下载阶段:
[单片机]
痞子衡<font color='red'>嵌入式</font>:ARM Cortex-M文件那些事(0)- 文件关联
DS28EL25 DeepCover嵌入式安全解决方案
DeepCover ™嵌入式安全解决方案多层次的先进的物理安全性,提供业界最安全的密钥存储的敏感数据。 DeepCover安全的认证(DS28EL25)结合了安全质询-响应认证功能的基础上的FIPS 180-3-指定的安全散列算法(SHA-256),4KB的用户可编程EEPROM。额外的安全存储器持有秘密/键SHA-256的操作。每个设备都有自己唯一的64位ROM识别号(ROM ID),在出厂时编程到芯片中。SHA-256消息认证码(MAC),,其中的DS28EL25生成,计算从用户存储器中的数据,SHA-256的秘密,一个主机控制器的随机挑战,和64位ROM ID。一个安全的和低成本的工厂编程服务进行预编程设备数据,包括SHA
[模拟电子]
DS28EL25 DeepCover<font color='red'>嵌入式</font>安全解决方案
T9输入法在嵌入式设备中的实现方案
引言 T9输入法全名为智能输入法,由美国特捷通讯(Tegic Communications)软件公司开发,是目前小型嵌入式人机交互设备中常用的文字输入法,可以直观、简捷、快速地输入简短文字。 在研制基于STM32F107VCT6(以下简称STM32)芯片的人机交互设备时,需要输入文字(主要是汉字)进行人机交互,但是可用的键盘已定型固化而且按键极其有限(仅有7个)。根据T9输 入法的基本原理,研究了一种利用有限键盘资源实现输入汉、英文字的方案。 1 总体设计方案 硬件由4部分组成:中心控制芯片STM32F107VCT6、驱动芯片SSD1963QL9AU315AF控制的7寸480×240像素的TFT显示屏、预装中文字库容量
[单片机]
T9输入法在<font color='red'>嵌入式</font>设备中的实现方案
支持网络传感器的嵌入式操作系统设计
  网络传感器是集传感器技术、嵌入式计算技术、现代网络及通信技术、分布式信息处理技术于一身的资源受限的嵌入式设备,是“普适计算”在微型嵌入式领域的一种重要应用模式。   网络传感器的研究过去一直受限于硬件平台而发展缓慢。随着半导体技术、通信技术、微电子技术和微机械技术的不断进步,低功耗、低价格、多功能的传感器网络系统得到了快速发展,使得制作微小、有弹性、低功耗的传感器节点成为现实。    背景    应用特点   网络传感器应用有其自身的特点,主要有以下几个方面:小尺寸和低功耗、并发密集操作、有限的物理并行性和控制层次、多样化的设计和使用。一方面,传感器资源极其有限,给底层嵌入式程序设计带来较大的限制;另一方面,传感器上运
[应用]
嵌入式 MRAM的高性能应用
翻译自——Semiwiki 总结 一种新型自旋转移转矩磁阻存储器(STT-MRAM) IP为高性能嵌入式应用提供了一个有吸引力的选择。 介绍 如今,社会上广泛的应用程序都迫切需要嵌入式非易失性内存IP。 然而,嵌入式非易失性闪存IP的未来扩展在更高级的节点上是无效的。一些替代的存储器技术已经被作为“闪存的替代品”来追求,例如相变存储器(PCM)材料,电阻变化存储器(RRAM),自旋转移转矩磁阻存储器(STT-MRAM)。这些技术提供了密集的位单元(“1T1R”),并通过改变单元的静态电阻来操作,这种电阻是通过材料的“Write1”和“Write0”脉冲电流和大小引起。当单元被访问时,读操作感知电阻大小,
[嵌入式]
<font color='red'>嵌入式</font> MRAM的高性能应用
32位嵌入式CPU中系统控制协处理器的设计与实现
  IPS体系结构中的系统控制协处理器简称CP0,它提供指令正常执行所需的环境,进行异常/中断处理、高速缓存填充、虚实地址转换、操作模式转换等操作。单从硬件的角度而言,系统控制协处理器对指令集的作用就相当于操作系统对应用程序的作用一样。   异常处理   CPU运行过程中常常需要中断正常执行的指令流程,跳转去执行某段特殊的指令段,接着再恢复原来的指令序列。MIPS体系结构中称这样的过程为异常(Exception)。所有的异常都采用统一的机制处理。   对于异常情况,需要采取以下3方面的措施:   1) 异常检测:CPU需要及时检测出哪个部件发生了什么异常;一般而言,异常检测由各个模块进行,如加法溢出由加法器在运算过程中
[嵌入式]
LAN91C111型控制器在嵌入式以太网接口中的应用
摘要:嵌入式以太网不仅可用于工业现场实现现场节点的自动上网功能,而且还可以用于信息家电的以太网接口实现远程控制,具有很好的发展前景。文章介绍基于TMS320LF2407型DSP的嵌入式系统与LAN91C111型自适应10Mb/s/100Mb/s嵌入式以太网控制的接口电路及软硬件实现方法。 关键词:数字信号处理 LAN91C111 TCP/IP 嵌入式以太网 1 引言 在电子设备日趋网络的背景下,目前广泛使用的以太网及TCP/IP协议已经成为事实上最常用的网络标准之一,它的高速、可靠、分层及可扩充性使得它在各个领域的应用越来越灵活,很多情况下运用以太网和TCP/IP能够简化结构和降低成本。目前关于嵌入式以太网的设计方案不是很
[应用]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved