一种数字语音通信系统的DSP实现
摘要:介绍了一种甚低频低码率数字通信系统的实现方案,该方案中的软件采用混合编程的方法,硬件则用DSP实现,文章给出了整个系统的DSP软硬件调试方法,并通过调试结果表明该方案具有很好的可行性和实时性。
关键词:软件无线电;DSP;混合编程
1 引言
现代通信系统已不断由模拟体制向数字化体制过渡,并越来越倾向于采用“软件无线电”的设计方案。即通过构造通用的硬件平台,以使各种相关的通信任务能够用软件完成,从而构成一个具有高度灵活性、开放性的通信系统。现代的DSP通用处理器为实现这一方案提供了极大的便利。
软件无线电的设计思想是:用一个通用、标准、模块化的硬件平台为依托,然后通过软件编程来实现无线电台的各种功能,从而取代基于硬件、面向用途的电台设计方法。功能的软件化实现势必要求减少功能单一、灵活性差的硬件电路,尤其是减少模拟环节,并把数字化处理A/D、D/A尽量靠近天线。软件无线电强调体系结构的开放性和全面可编程性。它通过软件的更新来改变硬件的配置结构,从而实现新的功能。软件无线电一般采用标准的、高性能的开放式总线结构,此结构利于硬件模块地不断升级和扩展。
javascript:window.open(this.src);" style="cursor:pointer;"/>
本文介绍一种利用TMS320C31浮点型DSP芯片为核心来设计并实现甚低频低码率数字化语音通信系统的方法。这种通信系统是以DSP硬件为平台,并用硬件来实现系统的外围功能,而用软件来实现核心部分的数字化处理,从而完成整个系统的正常通信工作。
2 DSP硬件平台
本通信系统的主要功能是实现语音的数字化传输,其系统功能图如图1所示。具体工作过程如下:
整个通信系统分为两大部分,其工作状态转换由外附的MCU控制。在发送时,语音通过克麦风之后进入语音压缩板进行采样量化及数字化压缩,压缩后的比特流从串口送入DSP内进行调制,调制信号依次通过信道DAC、平滑滤波和功放,然后发送出去;在接收时,前置放大部分送来的信号再经过一次放大之后送往信道AD转换器,转换的数据FIFO通过中断方式送给DSP进行解调,在DSP内解调之后的数据仍然通过串口送往语音压缩板解压后经扬声器输出。
javascript:window.open(this.src);" style="cursor:pointer;"/>
根据系统要求,本设计选定的DSP是TI公司的TMS320C31。信道AD转换器件选用ANALOG DE-VICE公司的AD7870,javascript:window.open(this.src);" style="cursor:pointer;"/>它是一个12bit的ADC,具有2μs的片上信号放大时间和8μs的转换时间,最高转换速率为100kHz,可以提供三种输出接口方式12bit并行方式、字节方式和串行方式。信道DAC选用的是TI公司的TLV5619,这是一种12bit单通道电压型DA转换器。系统中的ADC和DAC转换器都以并行12bit方式直接和FIFO相连。FIFOFirst In First Out采用的是双端口RAM构架,其读指针和写指针是完全分开的,可实现读写操作的完全独立,因此,这里选用CYPRESS公司的CY7C425。
3 软件实现
本通信系统中的软件采用C语言和混合编程,其中主程序和一部分子程序用C语言编写,而一些运算量比较大的算法子程序则用汇编语言编写,这样,既容易进行调试,又可以提高软件的执行效率,可达到最佳利用DSP芯片的软硬件资源之目的。
整个软件的主程序由发送部分程序段和接收部分段两部分组成,主程序流程图见图2所示,每个程序段又分别是一个独立的程序体,可以独立的实现通信系统的发送和接收功能。
由于要求系统能够实时完成通信任务,故相应的程序须和硬件相互配合,它们各操作之间的同步协调要求很高。而本系统可充分利用DSP芯片所提供的中断和定时器资源来很好地实现系统功能。javascript:window.open(this.src);" style="cursor:pointer;"/>
串行口发送/接收中断子程序用于完成DSP对串口的发送和接收任务,发送定时器中断子程序流程图如图3所示,图4所示是串口接收中断子程序的流程图。
在系统实现过程中,由于采用了混合编程,并对运算量比较大的算法用汇编程序来实现,因此,在对128点FFT算法采用汇编语言编程后,可经CCS仿真进行测试。汇编程序的执行时间为111113个时钟周期2.78ms,可在一帧时间内30ms完成5次FFT和IFFT的帧同步算法,而用C语言实现时的程序执行时间为1812409个时钟周期45.3ms。可见,用汇编程序的执行效率有明显的提高。
4 结束语
DSP软硬件开发设计是应用TMS320C31芯片进行的,这一方案在运用仿真器进行软硬件联合调试时取得了很好的效果,由此可见,在硬件设计合理的情况下,将C语言和汇编语言很好的结合,可充分发挥各自的优势,从而达到最佳的设计效果。