摘 要:按照v.23建议、利用title="TMS320C5402">TMS320C5402实现16路全双工来电显示的原理、算法分析及软硬件设计。该系统已在深圳市鼎铭电子有限公司开发成功,并投入了使用。
关键词:来电显示(Caller ID Detection0) 数字信号处理器(DSP)频移键控(FSK)
来电显示并非电话必须具备的功能,它可以作为附加功能有偿提供给用户。目前,实现来电显示的方法很多,但随着集成电路和DSP的飞速发展,利用DSP实现来电显示具有成本低、可靠性高、软硬件设计简单、可维护性强等特点。TI公司的TMS320C5X系列特别适用于通信领域。本文主要介绍利用TMS320C5402实现符合v.23建议[1]的16路全双工来电显示。另外,此方案略作修改还可符合bell202建议。
1 基本原理及算法设计
v.23的波特率为1200Baud,调制方式为2FSK,发送“1”时载波频率为F1=1300Hz,发送“0”时载波频率为F0=2100Hz。采用FSK调制方式的主要优点是:①无需载波恢复,大大降低了系统复杂度。②对幅度的非线性抗干扰能力强。因为FSK信号为恒包络信号,其信息完全包含在信号的过零点上,所以比起AM信号,其对幅度非线性抗干扰能力要强。③调制解调易用软硬件实现,简单易懂。其最大的缺点就是频率利用率低。因为电话的频带范围为300~3400Hz,因此利用FSK调制方式仅适用于中低速通信。由于v.23波特率为1200Baud,采用2FSK调制方式,所以其比特率为1200bps,但完全可适用于来电显示。
为了以下叙述方便,在此先给出FSK系统的原理框图,如图1所示。
整个系统的核心是FSK的算法设计。从图1可以看出,关键几步为:①调制,即如何实现任意频率的正弦波发生器。②滤波器设计包括发送滤波器和接收端的低通滤波器。这一步相对来说比较简单,可以利用MATLAB软件来计算其系数,只要给出要求的截止频率等参数即可,这大大减轻了我们的工作。③解调方法使用延迟相乘法,其延迟步数k的选择是整个系统的关键。④同步可使用锁相环来实现,这可以参考大多数文献的锁相环实现方法。为此,在讨论中我们着重突出第①、③两步。
1.1 调制部分
调制就是把数字信号变成适合于信道传输的正弦波。在此利用查表法[2]来产生正弦波。因为TMS320C5402中包含一个N=256点的Q15正弦表。相位Ψi在[0,2π]上均匀分布:Ψi=2iπ/N i∈[0,N-1]。假设sin_addr为正弦表首地址,则sin(Ψi)的地址是sin_addr+i。
调制信号可表示为:x(t)=Asin(2πFt)=Asin(Φ(t)),F={F0,F1}。设Te为抽样间隔,则当t=nTe时,Φ(nTe)=Φn=2πFnTe=Φn-1+2πFTe
Φn=(Φn-1+ΔΦF)MOD2π
ΔΦF=2πFTe≤π (由仙农定理知:1/Te≥2F)
Φn的取模可利用二进制补码的循环性实现。在程序中,Φn以16位有符号整数In表示:In=215Φn/π-215。例如,当Φn=0时,In=-215;当Φn=π时,In=0;当Φn=2π时,In=215,超出了表示范围,变成-215,这样便起到了取模的作用。
由In确定i方法为:i=In/(216/N)+N/2,其中216/N为正弦表相邻两点的相位差值,相应的ΔI=215ΔΦF/π=216FTe。
假设绝对幅度误差为dx,则AsinΔΦF<2dx
Asin(2π/N)<2dx
A2π/N<2dx即N>Aπ/dx
这就是对正弦表大小的要求。反过来,如果给定N,则对信号幅度提出了限定。
对于v.23,比特率为1200bps,而采样率一般为8000Hz,每个比特的采样点数为8000/1200=20/3,不为整数。为了处理方便,调制时可以提高采样率使其为24kbps,则每个比特采样点数为20。但要注意,发送到线路上的信号采样率仍为8000Hz,可用程序的简单循环控制实现。按照这种处理办法,当发送比特“1”时,ΔI=216F1Te=216×1300×1/(8000×3)=3550;当发送比特“0”时,ΔI=216F0Te=216×2100×1/(8000×3)=5734。
1.2 解调部分
在图1中,k一定要小于每个比特的采样数,此例k<6。假设接收到的样值s(n)和s(n-k)属于同一个比特,则:
v(n)=s(n)s(n-k)=A2sin(2πFnTe)sin(2πF(n-k)Te)
=A2/2[cos(2πFkTe)-cos(4πFnTe-2πFkTe)]
通过低通滤波器后,r(n)=A2/2cos(2πFkTe) F={F0,F1}
由此可见,r(n)为常数,A2/2cos(2πF0kTe)或A2/2cos(2πF1kTe),仅依赖于发送比特是“0”还是“1”。
k的选择应使d(k)=|cos(2πF0kTe)-cos(2πF1kTe)|最大。在此方案中,k=4。
由于v.23的比特率为1200bps,因此低通滤波器fcutoff=1200Hz。
2 DSP设计
TMS320C5402是一款高性价比的数字信号处理器[3~4]。片上有可编程等待状态发生器和块切换寄存器、两个多通道增强型缓冲串口(McBsp)、一个增强型的8位并行主机接口(HPI8)、两个16位定时器、一个六通道DMA控制器。TMS320C5402还有4K×16bit片上ROM和4K×16bit片上RAM,最大可寻址1M×16bit的存储空间。片上ROM的保留区域对用户来说是不可用的,原因是用户无法写入数据。片上ROM包括为Bootloader保留的区域及A律表、μ律表、sin表和中断向量表。TMS320C5402有内部振荡器构成的内部时钟源和锁相环时钟发生器构成的外部时钟源。
系统初始化工作频率为100MHz,对片上存储器访问无需等待状态,访问外部I/O空间设为两个等待状态。
在本系统中,采用McBsp0、DMA0、DMA4。DMA0的同步事件为McBsp0的接收事件REVT0;源地址指向DRR,并固定不变;目的地址指向DMA接收缓冲区,每次自增1;采用ABU模式实现双缓冲,DMA0接收缓冲区半满或全满时发生中断;中断服务子程序对其中刚引起中断的那一半数据进行解调,而此时接收的数据顺序放到另一半。为了节省存储器空间,串口不对接收数据进行扩张,而在程序中进行软件扩张。DMA4的同步事件为McBsp0的发送事件XEVT0;源地址指向DMA发送缓冲区,每次自增1;目的地址指向DXR,并固定不变;采用ABU模式实现双缓冲;DMA发送缓冲区半满或全满时发生中断,中断服务子程序发送刚引起中断的那一半数据,而此时正在调制的数据顺序放到另一半。因为线路上一般传送的是A律数据,因此发送时要在串口中进行硬件压缩。
经仿真发现,采用C语言编程,TMS320C5402至少可以实现16路全双工来电显示,因此McBsp0应设置为:接收数据格式为每帧8字,每字16位(表示16路A律数据);发送数据格式为每帧16字,每字16位。为了减少串口错误,指定由RSYNCERR和XSYNCERR产生RINT和XINT。
另外还需注意,为了实现字同步,异步传输时首先对发送数据的每个字节加上起始位“0”和停止位“1”,解调后应去掉相应的起始位和停止位。在发送过程中,如果没有待发数据,可以发送停止位(即频率为F1的载波)或静音(样值为0)。
利用TMS320C5402实现符合v.23建议的16路全双工来电显示,其原理简单,易实现,但是抗干扰性较差。由于DTMF的某些频率与v.23码的载波频率非常接近,如果混有DTMF码,也可解出少量的DTMF码。为了排除此类错误,需要加上增益控制、带通滤波等,这使得设计变得复杂。实践中,此类错误较少,除非特别要求,否则不必理会。
为了进一步提高精度,可以用长整数表示相位,还可以采用重采样技术及局部FFT等技术[5]或者改进解调方法可实现高精度检测。
目前,此系统已在深圳市鼎铭电子有限公司开发成功并投入使用。
参考文献
1 ITU-T Recommendation V.23.ITU,1993
2 Teaching DSP through the Practical Case Study of an FSK Modem,spra347. Texas Instruments,1996
3 TMS320C54x DSP Reference Set Volume 1: CPU and Peripherals, spru131. Texas Instruments,1999
4 TMS320C54x DSP Reference Set Volume 5: Enhanced Peripherals, spru302. Texas Instruments,1999
5 王庆文,孟宪德. 车载FSK信号的实时高精度检测与DSP实现.通信学报,2001(9)