模拟电话的语音采集和传输一直是低信号分辨率方式,语音信号的采样频率为8 kHz,数据宽度为8位,只能满足基本的语音通信要求,而不能传输更高质量的语音,例如音乐信号、彩铃服务等。随着通信技术的发展,对高分辨率语音信号的要求成为必然,这样就要求信号采样频率达到32 kHz甚至更高,数据宽度为16位或者24位。传统的模拟电话无法满足这一要求,使得模拟电话必然被数字电话所取代。
IP电话是以IP网络为传输载体,实现计算机对电话、电话对电话,以及计算机对计算机之问进行话音通信的技术。计算机对计算机方式是技术发展的最终方向。
本文介绍一种以美国TI公司的双核数字信号处理器(DSP)TNETV1700为核心的高分辨率IP数字电话系统,配置高分辨率16位模拟/数字转换芯片,实现对语音信号的采集和输出、调制和解调、处理和存储等功能。数字语音信号通过USB接口传输到PC,由上层软件实现IP交换数据。本文主要介绍基于TNETV1700的IP电话终端的软硬件设计。
1 系统结构
整个系统由TNETV1700、AD50、LCD、Flash、键盘以及电源等组成。其系统结构连接如图1所示。图1中,TNETV1700是核心控制单元,负责所有与外部设备的信号交换;外部设备中AD50负责模拟信号/数字信号的转换,AD50既具有对模拟信号进行采集转换成数字信号的功能,也具有将数字信号转换成模拟信号、发送到扬声器的功能;LCD实现时间、电话显示、设置信息等人机交互的所有显示功能;Flash用于保存TNETV1700的上电引导程序,也可通过更新Flash中的程序对系统进行升级。
TNETV1700是美国TI公司最近推出的一款针对客户端电话信号处理的专用DSP芯片,该芯片内部集成一个TI公司的C55系列DSP TMS320C55和一个ARM926EJ-S处理器。TMS320C55用于电话的语音信号处理,包括双音多频信号检测和产生、回音相消、数据压缩和解压,以及数据组包和拆包等多种语音信号处理算法。ARM926EJ-S用于实现控制功能,包括对LCD、USB控制器、GPIO、Flash、键盘等的控制。使用TNETV1700的USB控制器,直接连接到PC,实现TNETV1700和PC之间语音数据的交互。此外,TNETV1700内部还具有通用DSP芯片常有的缓冲串口、HPI接口、定时器等片内外设。由于TNETV1700采用低功耗的TMS320C55,所以其功耗非常低,正常工作情况下,工作电流不到300 mA,整个系统可以采用从USB接口馈电方式,无需单独供电。
2 系统硬件设计
AD50是TI公司生产的一款集成有A/D和D/A转换器的芯片,TNETV1700与AD50连接后,可以只使用一个缓冲串口同时实现数据的采集和输出,从而节省了TNETV1700的硬件开销。TNETV1700与AD50的硬件连接如图2所示。
AD50的时钟信号由TNETV1700的定时器0的输出提供,时钟频率可以通过修改定时器0的设置而改变。AD50的FC引脚连接到TNETV1700的GPIO0(通用I/O引脚),用于控制AD50的串行通信;DIN(数据输入引脚)和DOUT(数据输出引脚)分别接TNETV1700缓冲串口0的DX0和DR0引脚;SCLK(移位时钟输出引脚)连接TNETV1700的CLKR0(缓冲串口0的接收时钟引脚);帧同步信号FS连接TNETV1700缓冲串口0的FRX0引脚。
为了达到更好的信号处理效果,AD50的模拟信号输入一般采用差分输入方式,图2中使用变压器将单端信号转换成差分信号。信号一正一负同时进入采集系统,如果此时有随机噪声出现,通过正负信号的加减,可以有效消除部分噪声。AD50的D/A输出为差分信号,可以直接驱动600 Ω的负载,同样也可消除输出电路上的随机噪声。
LCD控制器负责与LCD及其外设的连接。LCD控制器连接2个外设:一个是到ARM926EJS的DMA请求,另一个是ARM926EJS到LCD的中断请求。这样,ARM926EJS作为主设备,可以在CPU不参与的情况下实现对LCD的显示控制。LCD作为被动设备,只有少量需要返回的状态,发送中断到ARM926EJS,由ARM926EIS安排时间读取LCD状态。这样,使得整个LCD的显示和控制占用较少的CPU资源。如果系统使用简单的点阵显示,就无需LCD控制器参与,只需要简单的几根GPIO扫描就可以。TNKTV1700与LCD的硬件连接如图3所示。图中,使用稳压器MAX633将3.3 V电压转换成LCD所需要的15 V电源,使用稳压器TPS79333将LCD和TNETV1700隔离开,以增强系统的可靠性,避免LCD的高压损坏芯片;TNETV1700的LCD控制器直接连接到驱动芯片LZ9FC22,通过启动芯片控制LCD。系统选择LCD型号为LQ035Q7D。
系统中的USB接口和键盘接口均为标准接口,硬件上连接简单方便。USB接口使用4线接口,分别为差分数据正、差分数据负、电源和地引脚。USB接口的电源也是整个系统的电源入口。键盘接口使用3×4的扫描键盘,可以直接连接标准电话机的12个按键(为0~9、*号和#号)。如果需要增加按键,可以使用TNETV1700的GPIO口完成。
3 系统软件设计
系统的软件总框图如图4所示。图中,初始化模块包括TNETV1700系统的初始化、键盘监控的初始化、LCD显示的初始化、AD50的初始化、USB控制器的初始化。在初始化过程中设置定时时间、采样点数、计算变量的初始值、各种参数等。
监控模块随时判断各种定时是否到达,其中包括DSP核数据定时、键盘扫描定时、LCD显示定时以及USB接口通信请求等。监控模块程序完成以上查询工作,并调用各个相应的处理程序。
中断服务模块包括4个中断,即AD50中断服务、定时器中断服务、USB接口发送和接收中断服务。中断服务模块中的AD50转换和计算模块完成对信号数据的采样、处理和计算。在整个程序运行中间,AD50转换的中断请求享有最高优先权。
DSP核主要处理语音信号处理算法,DSP端的软件结构如图5所示。TNETV1700控制AD350采样到语音信号后,首先经过“G.168回音相消算法”消除回音,然后调用VAD(Voice Activity Detection,语音激活检测)技术判断是否有语音信号,从而判断出是否有语音输入,避免将噪声传输出去。在通话期间进行VAD算法,可以去除两个语音之间的数据,大大减少数据传输量。信号可以经过压缩算法后进行RTP组包,也可以直接经过UMTD(Universal Multi-frequency Tone Detector,通用多频音检测)算法进行RTP实时组包,组包之后将数据包传送ARM核,DSP核就完成了整个数据上传算法。语音数据下传和上传相反,进行RTD拆包、UMTG(Universal Multi-frequency Tone Genera-tor,通用多频音产生)、数据解压等算法。数据压缩算法只有G.726算法集成在TNETV1700片内,其他算法(如G.723或者G.729)则需要用户编写程序完成,为特定需求的应用场合提供软件的可适应性。
ARM核主要实现LCD、键盘和USB的控制功能。ARM端的软件结构如图6所示。ARM端软件的功能主要是控制外设和数据收发。为了不丢失控制信号和收发的数据,整个软件采用时间片轮询策略:设置各个模块的定时器,主程序轮询各个模块的定时是否到达,如果到达则进行该模块的相应工作;完成后,继续轮询下一个模块的定时。整个程序涉及的模块有4个:与DSP端进行数据收发的模块,实时监控键盘模块,与PC端的USB数据收发模块以及LCD显示模块。
结 语
本文详细介绍了基于TNETV1700的IP数字电话系统构成、硬件连接以及软件程序开发。系统使用TNETV1700的DSP核进行语音信号的算法处理,使用TNETV1700的ARM核对液晶、键盘和USB接口进行控制,实现了单芯片系统设计。整个系统设计简单、可靠、实用,是一种比较好的IP数字电话解决方案。