TMS320C5402在16路全双工来电显示中的应用
扫描二维码
随时随地手机看文章
摘要:来电显示的核心部分就是对来电显示信号即FSK信号的解调。本文介绍了一种新型FSK解调算 法,该算法是基于最小均方差准则的线性预测算法,能够快速准确的解调FSK信号,非常适用于来电显示。同时还介绍了TI公司的TMS320C5402 DSP芯片以及来电显示在该芯片上的实现。
来电显示功能作为电话的一种附加功能,被越来越多的用户所接受,成为电话必不可少的功能。本文介绍的就是一种新型FSK解调算法在来电显示中的应用,以及其在TMS320VC5402 DSP上的实现。
1 基本原理及算法设计
来电显示(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系统的原理框图,如图1所示。
整个系统的核心是FSK的算法设计。从图1可以看出,关键几步为:①调制,即如何实现任意频率的正弦波发生器。②滤波器设计包括发送滤波器和接收端的低通滤波器。这一步相对来说比较简单,可以利用MATLAB软件来计算其系数,只要给出要求的截止频率等参数即可,这大大减轻了我们的工作。③解调方法使用延迟相乘法,其延迟步数k的选择是整个系统的关键。④同步可使用锁相环来实现,这可以参考大多数文献的锁相环实现方法。为此,在讨论中我们着重突出第①、③两步。
1.1 调制部分
调制就是把数字信号变成适合于信道传输的正弦波。在此利用查表法来产生正弦波。因为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。
[!--empirenews.page--]
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是一款高性价比的数字信号处理器。片上有可编程等待状态发生器和块切换寄存器、两个多通道增强型缓冲串口(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]或者改进解调方法可实现高精度检测。