摘 要:针对实验过程中出现的CRC误码,主要利用信号回流检测方法对原理图进行分析和改进,增加了上拉电容以缩短回流路径使其到地,减少了彼此间的干扰,从而解决CRC误码。实验结果表明,在单板的宽广处多放一些小电容到地,能给信号增加一个较好的回流路径,对于稳定电源去除噪声十分有益。
关键词:计算机网络通信;误码;CRC;信号回流
在计算机网络通信和系统工作过程中,由于信道上存在的各种复杂因素(如冲击噪声、脉冲噪声、热噪声、串音和传输质量等)的影响,信息在形成、存取、传送过程中往往受到不同程度的干扰,严重时会造成误码,即接收端收到的信息与发送端发送的信息不一致,以致阻断通信[1]。因此,应该在接收端检查所接收的数据是否正确。可采用多种检测方法,其中,循环冗余校验码CRC(Cyclic Redundancy Check)是目前在计算机网络通信及仪表数据通信等方面应用最为广泛的一种校验编码方法,是一种强有力的检测手段。
CRC是一种能力较强的检错、纠错码,并且实现编码和检码的电路比较简单,除了各种嵌入式仪表、变频器等设备,还有一些数字型传感器的输出数据也提供CRC码,如数字温度传感器DS18B20、集成温湿度采集芯片SHT11等。此外,人们还将该技术用于计算机网络通信和数据通信系统中,收到了令人满意的效果[2]。
本文结合实例,从信号回流的角度分析和改进原理图,从而解决了CRC误码。
1 CRC检验原理
CRC是分组线性码的分支,其主要应用是二元码组。CRC的基本思想是利用线性编码理论,在发送端根据要传送的k位二进制码序列,以一定的规则产生一个校验用的监督码(即CRC码)r位,并附在信息后边,构成一个新的二进制码序列数共(k+r)位,最后发送出去。在接收端,则根据信息码和CRC码之间所遵循的规则进行检验,以确定传送中是否出错。若不正确,则说明数据信息在传输过程中有误码,通常通过发送端重传来校正错误,直至传送正确为止。
任何一个由二进制位串组成的代码可以和一个只含有0和1两个系数的多项式建立一对一的关系。例如一个二进制代码1011101,其对应的多项式为x6+x4+x3 +x2+1。k为要发送的信息位位数,可对应一个(k-1)次多项式K(x),r位冗余位可对应于一个(r-1)次多项式R(x),由k位信息位后面加上r位冗余位组成的n=k+r位码字则对应于一个(n-1)次多项式:T(x)=xr×K(x)+R(x)。
在CRC校验编码时,由信息位产生冗余码的编码过程就是求余数R(x)的过程,CRC码中通过找到一个特定的r次多项式G(x)(最高项xr的系数为1)来实现,用G(x)去除xr×K(x),得到的余式就是R(x)。
CRC校验是把要传送的信息位串加上校验和构成的循环冗余校验码发送到接收方,接收方在接收到循环冗余码后,将其除以生成多项式G(x),若余数为0,则表示传递正确,否则就说明有错[3]。
2 CRC误码
在EGFC16调试过程中,单板的FE电口在SmartBits发送业务内容为8-0-s、8-f-s,在这种长连0长连1业务的情况下,会出现CRC误码。单板在启动后,如果接收的业务内容为8-0-s、8-f-s或者其他业务时,不会出现CRC误码。在出现误码的情况下,将业务内容改成不造成CRC误码的业务也无济于事,CRC误码会一直存在,除非将单板重新冷复位。
CRC误码在上述“8-0-s、8-f-s”业务的情况下并不是马上出现CRC误码,而是需要经过一定的时间。开始的时候出现的很少,只有一两个,但是很快将会发生雪崩效应,出现大量的CRC误码,业务可能因此而中断。
上述是对CRC误码现象的描述,经过长期的分析定位,通过实验得出的数据曲线,可以看出,这从一个侧面证明CRC误码一方面与电源的稳定性有关系,另一方面和信号回流也有关系,而且与信号回流的关系更大,反而电源的不稳定性对其影响并不大。
本文着重从信号回流的角度对CRC误码现象进行分析与解决。
3 信号回流的基础知识
3.1 传输线
传输线等效模型如图1所示,点P是传输线上任意点,作为虚拟分界面将传输线分开,从右往左看过去,R1、L1、C1分别是线路的等效电阻、电感、电容。R2是漏电流存在的情况下所体现的电阻,其阻值接近无限大;而传输线静态电阻R1很小,也可忽略不计。这种情况下,传输线特征阻抗可以简化为:Z0=(L1/C1)1/2,这是无损情况下的特征阻抗公式。
在P点,从A往B看,Z02相当于负载;从B往A看,Z01相当于信号源的内阻。由于Z01=Z02,因此在P点没有反射,也就是在同一根传输线上,只有特征阻抗没有变化,那么就不会有反射。如果在PCB布板的过程中,传输线在某一处阻抗有变化,那么就会有反射的产生[4]。
3.2 信号反射
由上可知,对于传输线来说,如果负载阻抗与信号源内阻的阻抗相等,则在该点不会反射,即可认为线路是匹配的。因此,在传输线内部是不会发生信号反射的,而在传输线的两端就会发生。
在接收端,以TTL电路为例,接收端是晶体管的基极,而基极电流是极其微弱的,因此,传输线的末端等效为一个无穷大的电阻RL。也就是说,负载电阻与传输线特征阻抗不匹配,信号在这个点将会发生全反射,反射波一直传回源端。这时,如果源端内阻与传输线阻抗不匹配,在源端会发生二次反射,如此反复n次反射。如果这个n次反射信号叠加到原先的信号上,将导致信号劣化[5]。
3.3 信号回流
任何一个信号最终都要形成一个闭环回路,如图2所示。
对于一个交流信号来说,信号的回流总是选择阻抗最小的回路作为回流,如果信号与回流信号所形成的面积越小,那么干扰和抗干扰能力就越好[6]。因为当回路面积越小,回路所能接收到的干扰就越少,同时向外辐射的就会越小。
4 CRC误码电路原理图的分析与改进
4.1 改进前的原理图
改进前的信号图流程径电路图如图3所示。根据传输线的理论,任何高速信号都需要一个回流平面。信号从左端到右端,信号完全匹配无反射,信号必然需要有回流路径,接收端作为高阻到地电容在皮法级别,只能给信号的沿部分高频分量提供回流,而对于较低频的信号则需要通过上拉到VTT的电阻来回流,在没有加回流电容的情况下,所有的信号都集中到了LP2995上来回流,部分通过放置在LP2995旁边的一两个小电容回流,部分需要通过LP2995到2.5 V来回流,这样主要的回流路径将会非常长,而且形成了较大的回流环路,增加了彼此间的干扰。DDR有64根数据线和几十根地址线,必然会造成较大的串扰,从而很容易导致CRC误码现象发生。
4.1.1 33 Ω及50 Ω电阻的作用
若负载电阻与传输线特征阻抗不匹配,信号在这个点将会发生全反射,反射波一直传回源端。这时,如果源端内阻与传输线阻抗不匹配,在源端会发生二次反射,如此反复n次反射。如果这个n次反射信号叠加到原先的信号上,将导致信号劣化。
因而信号两端都加了33 Ω的串阻以减小二次反射。吸收的原则就是让源端的串阻加上源端内阻(一般情况下,源端内阻按照20 Ω左右来考虑,当然不同的芯片的管脚内阻是不同的)的阻值正好和传输线特征阻抗相等。末端加50 Ω上拉电阻,起到电压偏置和信号匹配的作用[7]。
4.1.2 LP2995的作用
LP2995主要作用是提供一个sink current和source current[8]。sink是指接收负载的电流,source是指要给负载提供电流。这正好是SSTL的VTT的供应特性之一,而LP2995就是专门能够提供这种sink和source功能的器件。LP2995的内部结构图如图4所示。
信号再输出为1时,就是source output,向LP2995输出电流;而当输出为0时,就是sink output,此时,需要LP2995的VTT提供电流。
4.1.3 VTT的作用
SSTL比一般的TTL电平的信号传输速率要高得多,如果一个信号要高速传输,电压幅度是不能太大的,否则上升沿就限制了它的速率。SSTL刚好采用末端匹配吸收全部信号,从而导致信号摆幅减掉了一半,这样就减小了信号的摆幅,提高了传输速率。
图5是DDR数据线的信号波形,信号的摆幅显然正好降低到了1.25 V左右,中间有一个1.25 V的直流偏置,是由VTT来提供的。
4.2 改进的原理图
由于LP2995作为一个LDO本身无法提供能量也无法蓄积能量,是不可能提供平稳电压的,它的主要作用只是提供一个sink current和source current。要想提供稳定的电压必须依赖于电容的蓄电能力。
电容在消除滤波的时候是有电流流过的,而ESR(等效串联电阻)正好就相当于一个串联在电容里面的电阻,必然会造成压降,从而带来滤波的效果降低,滤波特性变差。一般的大容量电容的ESR会比小容量的陶瓷电容大得多,这说明大的电容效果不是很好,而越小的电容越是能够更快速地提供这种电流,因为ESR比较小。但是大电容有着更强的蓄积电源的能力。
因此,均匀地放置一些各式电容显然效果会更好一些,所以可以在整个plane层放置10 μF、0.1 μF、0.01 μF和470 μF的电容,这样无论是高频的波动还是低频的扰动都可以滤掉,而且这种并联的方式本身就减小了ESR,更有利于信号的滤波。
根据上面的思想,为了解决CRC误码问题,本文在原来的原理图中加上了回流电容到地。改进后的电路图如图6所示。
可以看到,信号可以通过电阻直接经过小电容从地回流,主要的回流路径很短,不会形成大的回流环路,也就减小了彼此间的干扰,减少了DDR数据线和地址线间的串扰,从而解决了CRC的误码问题。
针对EGFC16实践调试过程中出现的CRC误码现象,本文先对CRC误码现象进行了全面的描述,由于实验证实了这种CRC误码现象在很大程度上是由信号回流引起的,因此本文主要从信号回流的角度分析和改进电路,以解决CRC误码。总结发现,现实生活中大多数电路问题都与信号回流有关系,所以在单板的宽广处多放一些0.1 μF的电容到地,对于稳定电源、去除噪声以及给信号增加了一个较好的回流路径是十分有益的。
参考文献
[1] 瞿中告,袁威,徐问之.CRC算法在计算机网络通信中的应用[J].微机发展,2002(2):12-14.
[2] 瞿中告,徐问之.单片机通信中的CRC算法[J].微机发展,2001(4):74-76.
[3] WILLIAMS R. A painless guide to CRC error detection Algorithms[DB/OL]. [2008-10], http://www.repairfaq.org/filipg/.
[4] 冼志妙,朱雪花,袭著科.高速PCB的信号完整性分析及应用[J].桂林工学院学报,2006(2):286-290.
[5] HALL S H, HALL G W, MCCALL J A. High-speed digital system design[M]. Wiley IEEE Press,2000.
[6] BROOKS D. Signal integrity issues and printed circuit board design[M]. Prentice Hall PTR, 2003.
[7] 康壮.高速数字电路中的终端匹配技术[J].声学与电子工程,2004,73:13-639.
[8] JOHNSON H, GRAHAM M. High-speed digital design[M].Prentice Hall, 2007.