武汉华中科技大学 钱俊 王芙容
摘 要:来电显示的核心部分就是对来电显示信号即FSK信号的解调。本文介绍了一种新型FSK解调算 法,该算法是基于最小均方差准则的线性预测算法,能够快速准确的解调FSK信号,非常适用于来电显示。同时还介绍了TI公司的TMS320C5402 DSP芯片以及来电显示在该芯片上的实现。
关键词:来电显示;移频键控;DSP
来电显示功能作为电话的一种附加功能,被越来越多的用户所接受,成为电话必不可少的功能。本文介绍的就是一种新型FSK解调算法在来电显示中的应用,以及其在TMS320VC5402 DSP上的实现。
来电显示原理介绍
来电显示(CID,Calling Identity Delivery)是主叫号码信息识别及传送的通俗说法,它是由具有主叫号码信息识别功能的交换机将主叫用户的号码及呼叫的日期、时间等信息传送给具有主叫号码显示功能的终端。
来电显示的信息传输方式有2种:2FSK和DTMF。2FSK方式与 DTMF方式相比有如下的优点:(l)数据传输速率高,在规定时间内能传的字符数多;(2)2FSK方式支持ASCII字符集,而DTMF方式只支持数字及少数字符。目前采用2FSK方式的国家和地区有:美国、中国、日本、英国、加拿大、比利时、西班牙、新加坡等;采用DTMF主要则是以瑞典为代表的一些欧洲国家等。
2FSK是二进制信号的频移键控的英文缩写,它是指传号(指发送"1")时发送某一频率正弦波,而空号(指发送"0")时发送另一频率正弦波。根据Bell202的建议,来电显示的数据传送采用连续相位的二进制频移键控,比特率是1200bps,而"1"对应的频率是1200Hz,"0"对应的频率是2200Hz。
算法描述
FSK的调制
FSK的调制就是根据二进制信号产生对应的正弦波,而正弦波发生器通常有两种做法:
1.查表法,即查找正弦表来产生每个点的值,该算法的速度慢且占用比较多的存贮空间。2. 迭代法,即通过预设的初值通过迭代预算,计算出后来点的值,该算法对存贮空间的要求比较低,但对CPU资源的占用比较大。因为来电显示要求产生的FSK为连续相位的信号,所以选用查表法更容易产生连续相位的正弦波信号。
利用查表法来产生正弦波,就需要先产生一个正弦表,因为来电显示要的FSK信号分别为1200Hz和2200Hz,所以要求正弦表最低的精度为100Hz,由于采样率为9600 bps,所以我们产生的是96点的正弦表。该表的值为:
x(n)=sin(nw_0) n=0,1,……,95 (1)
w0=2 / s (2)
为100Hz, s为采样频率。
FSK的解调
因为来电显示中的FSK信号的比特率为1200bps,而我们的采样率为9600 bps,所以每个比特的采样点为8点,要在如此之少的采样点得到它的频率信息,用经典的谱分析方法如FFT或DFT进行处理达不到要求的精度,而过零率检测的抗噪声性能太差。现在比较常用的一种解调方法是延迟相乘法,它是通过将输入信号延迟 /2个相位,然后与原信号相乘再通过低通滤波器就可得到判决结果,该算法性能不错但实现比较困难。因为它需要将输入信号延迟 /2个相位,要求采样频率为载波频率的整数倍,否则达不到精确的 /2个相位会引入误差,并且该算法中要使用数字滤波器,运算量比较大。
针对以上问题,一种基于最小均方差准则的线性预测算法被提出。该算法利用正弦波自身的线性相关性,通过比较用预测模型计算出来的信号与实际信号的误差来判决该信号是"0"还是"1",如果"0"的预测误差比较小该信号就判决为信号"0"反之就是信号"1"。
FSK信号是单一的正弦波信号,只要用两阶的预测模型就能充分的描述该信号,预测模型可由下面的等式计算得出:
a_0 = -2cosw
a_1=1 (4)
w=2 / s (5)
为预测模型的频率, s为采样率。
而预测误差也由下式得出:
E=\sum_{n=0}^{6}=0(s(n+2)+a_0s(n+1)+a_1s(n))^2 (6)
s(n)为输入信号
系统实现
芯片介绍
TMS320C5402是TI公司的54系列的一款定点DSP,具有低功耗、高功能等特点,其性能特点如下:
运算速度最高达100MIPS;
具有先进的多总线结构,三条16 位数据存储器总线和一条程序存储器总线;
40位算术逻辑单元(ALU),包括一个40位桶形移位器和两个40位累加器;
一个17bit 17bit乘法器和40位专用加法器,允许16位带/不带符号乘法;
8个辅助寄存器和一个软件栈;
内部采用改进的哈佛结构,程序空间和数据空间分开,允许同时取指令和取操作数,并且允许在程序和数据空间相互传送数据;
最大64K 16bit外部数据空间,最大1M 16bit外部程序空间,4K 16bit片内ROM,16K 16bit片内RAM;
内置可编程等待状态发生器、锁相环(PLL)时钟发生器、两个多通道缓冲串口、一个8位并行与外部处理器通信的HPI口、两个16位定时器以及6通道DMA控制器;
支持单指令循环和块循环,采用六级流水线,将一条指令执行所需要的取指、译码、取操作数并执行等几个步骤同时完成,是指令周期降到最小的优化算法。
驱动设计
在本系统中,信号的输入输出是通过多通道缓冲串口McBsp1完成的,每当串口收到数据,或者要输出数据的时候都会给CPU发出一个中断请求,通知CPU来输入寄存器读数据或是往输出寄存器写数据。为了进一步减小CPU的占用率,使用两个DMA控制器(DMA4和DMA5)来完成输入输出寄存器的读写工作。DMA4负责数据的输入,由McBsp1的接收事件REVT1触发,源地址指向McBsp1的输入寄存器DRR1,固定不变;目标地址指向输入缓冲区,每次自增1,当输入缓冲区满的时候即接收完一帧数据就触发中断,调用来电显示解调程序。DMA5负责数据的输入,由McBsp1的接收事件XEVT1触发,源地址指向输出缓冲区,每次自增1;目标地址指向McBsp1的输入寄存器DXR1, 固定不变,当输出缓冲区空的时候即发送完1bit数据就触发中断,调用来电显示调制程序往输出缓冲区写数据。
软件设计
整个来电显示由FSK信号的调制和解调两部分组成,由于调制部分实现比较简单,所以在这里就着重讲述解调部分。整个FSK的解调部分分为四个部分:输入同步、带通滤波、增益控制和解调判决。总框图见图1:
图1 FSK信号解调框图(略)
解调算法已经在算法描述里讲述过,以下主要讲述其他的三个部分:
1.输入同步
因为来电显示信号是在第一声铃声和第二声铃声之间大约一秒钟时间内传完的,所以来电显示程序是第一声铃流结束后被激活,然后开始进行输入同步工作,判断什么时候开始接收来电显示信号。在铃流和来电显示信号之间有一段静默时期,可以通过计算每帧信号的能量来与预定的阀值比较,大于阀值就是来电显示信号。而能量判决的阀值可由开始的静默时期的信号的能量计算得出。 2.带通滤波
为了提高这个系统的抗噪声能力,需要对接受到的数据进行滤波以滤除部分噪声,根据Bell202的建议, 来电显示的FSK信号为1200Hz和2200Hz,所以设计的滤波器通带频率为1100Hz~2300Hz,阻带频率为1000Hz~2400Hz,衰减为60dB,为了减少计算量,使用2阶IIR带通滤波器.如果为了提高解调的性能,可以提高滤波器的阶数来达到更好的滤波效果。该滤波器的系数可以通过MATLAB计算得出。
3.增益控制
在定点DSP上进行计算容易产生溢出问题,为了避免溢出问题,就要进行增益控制。增益控制就是对收到的数据的幅值大小进行控制。增益控制的方法就是对收到的数据进行归一化处理,即对数据按比例衰减,将其幅值控制在预定范围内。
4.性能测试
该测试是根据中国来电显示有关FSK的数据要求进行的,数据要求见表1:
表1 ,