ADSL通信系统中CRC原理及案例分析For BaiDu.docx
《ADSL通信系统中CRC原理及案例分析For BaiDu.docx》由会员分享,可在线阅读,更多相关《ADSL通信系统中CRC原理及案例分析For BaiDu.docx(13页珍藏版)》请在冰豆网上搜索。
ADSL通信系统中CRC原理及案例分析ForBaiDu
ADSL通信系统中CRC原理及案例分析
绪论
循环冗余校验码(CRC),因编码简单且误判概率很低,在通信系统中得到了广泛的应用。
循环冗余校验码的英文全称为CyclicRedundancyCheck,缩写为CRC。
CRC是ADSL通信系统中关于误码率(BER)分析的一个重要参数,鉴于之前对于DSL性能误码率这一块的资料较少,特意写这篇文章增加大家对这方面的了解。
1.CRC基本原理
CRC的基本思想是利用线性编码理论,在发送端根据要传送的K位二进制码序列,以一定的规则产生一个校验用的监督码(即CRC码)R位,并附在信息后面构成一个新的二进制码序列,共(K+R)位,最后发送出去。
在接收端,接收到原始数据及其CRC校验码后,按如下步骤进行校验。
1)接收到完整的数据及其CRC校验码,组成新的多项式。
2)利用相同的生成多项式作为除数来除这个新的多项式,得到结果。
3)如果除法没有余数,那么数据在传输过程中没有错误,校验成功,否则失败。
生成CRC的公式如下:
(公式1-1)
上式中,
是信息多项式,
是生成多项式,
是校验多项式。
2.ADSL系统中CRC结构
ADSL系统使用如下图1(ITUG992.5)所示的超帧结构,每个超帧由68个ADSL数据帧和一个同步帧组成,ADSL数据帧被编码调制成一个DMT符号,然后由调制器插入一个同步DMT符号,它不携带任何用户信息,用来确定超帧的边界。
图1ADSL系统的超帧结构
上图1中,每个超帧中有8个比特(crc0~crc7)用于快速数据缓冲区的循环冗余校验,同样,也有8个比特用于交织缓冲区的循环冗余校验,24个指示比特ib0~ib23用于OAM(操作,维护和管理)功能,每个超帧中第一帧的快速和交织缓存中的SYNC字节要用来做CRC字节,快速缓存中的第1,34,35帧中的快速同步字节(“FASTBYTE”)要用来携带ib0~ib23的指示位。
指示位主要是用来指示线路状况,其余帧的“FASTBYTE”,如果以0作为字节的结尾,表示此字节为同步字节,如果以1作为字节的结尾,则表示此偶数帧和下一个奇数帧的“FASTBYTE"携带了EOC信息。
交织缓存中的其余帧(1~67)的同步字节作为分配给交织数据缓存区的承载信道的同步控制和用于ADSL开销控制信道(AOC)。
每个数据帧编码后成为一个DMT符号,而数据帧是由快速数据缓冲区和交织数据缓冲区的数据组成的,在不同的参考点(A,B,C)上,数据帧有不同的形式,在进入星座编码器的数据帧中,每个帧的前一部分是来自快速缓冲区的数据,而后一部分是来自交织缓冲区的数据。
3CRC的应用分析
3.1CRC在ADSL系统中编码原理
本文按照G992.1标准设计的CRC模块,实现方式是:
在发送端,CRC编码器根据生成多项式对每一个复帧计算出一个8bit的CRC,然后放在下一个复帧的第一个数据帧中传输。
在接收端,CRC编码器根据同一个生成多项式计算出CRC,然后和发送端传输过来的CRC进行比较。
如果两个CRC相同,则说明传输过程中没有出现错误位;反之,若不同,则表明传输过程中发生了错误位。
G992.1标准中给定了生成多项式
,确定了生成多项式之后就可以根据公式(1-1)得到任意数据的CRC校验码。
对于一个信息多项式,
,
CRC循环冗余校验字节的产生方法是将信息多项式左移八个单位,并除以生成多项式
,所得余式即为CRC校验多项式,可以写做:
下面通过一个例子来说明怎么计算得到CRC校验字节:
假设信息字段代码为:
101100101,对应信息多项式为:
;因生成多项式为:
,则对应
的代码为:
100011101。
第一步:
信息多项式左移八个单位,对应的代码记为
:
10110010100000000;
第二步:
采用多项式模二除法(参考附录),
得余数为:
10110001,(即校验字段为:
10110001)。
发送方:
发出的传输字段为:
10110010110110001;
信息字段和校验字段;
接收方:
使用相同的生成码进行校验:
接收到的字段/生成码(二进制除法),如果能够除尽,则正确。
(大家感兴趣的话可以验证一下)
3.2CRC在ADSL系统中的案例分析
误码率是数字通信系统的两大主要性能指标之一。
在ADSL通信系统中一般要求误码率小于10E-7,这样QoS才有保证。
,(公式1-2)
其中
是CRC的数目,
对于Fast和Interleave信道,分别对应不同的取值。
是实际速率,
是测试时间。
1)对于Fast模式,1CRC=15BitsDataError,即
;(Fast:
UpDelay=1ms,DownDelay=1ms)
2)对于Interleave模式,1CRC=40BitsDataError,即
;(Interleave:
UpDelay=16ms,DownDelay=16ms)
那么根据公式1-2推导一下,我们可以得到:
1)Interleave模式下,对于实际传输速率为20M的比特码流,一分钟最多允许出现3个CRC;
2)Fast模式下,对于实际传输速率为20M的比特码流,一分钟最多允许出现8个CRC。
我们可以通过在DSLAM端或者Modem端查看CRC参数,了解DSL的基本性能情况。
本次测试采用的局端是HW5600,Modem是Broadcom4.X方案的(具有一定的代表意义)。
通过Telnet命令:
Telnet10.10.10.100登陆HW5600局端:
prompt(config-if-adsl-0/0)#displaymodematu-c(查看局端版本信息)
prompt(config-if-adsl-0/0)#
--------------------------------------------------------------
Vendorspecialstring:
(co-01234567)
VendorID:
FFB54753504E0000
Vendorversion:
E.67.1.20(CNXT局端)
--------------------------------------------------------------
prompt(config-if-adsl-0/0)#displaymodematu-r(查看modem版本信息)
{PortID<0,63>}:
31
prompt(config-if-adsl-0/0)#
--------------------------------------------------------------
Vendorspecialstring:
VendorID:
B5004244434D0000
Vendorversion:
A2pB025c1
--------------------------------------------------------------
1.从Modem的WEB页面观察CRC的变化:
图2ADSL同步后页面显示的xDSL状态
拔掉ADSL线后,CRC剧增:
图3拔掉ADSL线瞬间页面显示的xDSL状态
2.从局端CLI命令行观察CRC的变化:
prompt(config-if-adsl-0/0)#displaylineoperation31(查询激活后线路操作参数)
Itwilltakeseveralminutes,andconsolemaybetimeout,pleaseusecommand
idle-timeouttosettimelimit
Areyousuretocontinue?
(y/n)[n]:
prompt(config-if-adsl-0/0)#y
prompt(config-if-adsl-0/0)#
----------------------------------------------------------
Channelmode:
Interleaved
Downstreamchannelbitswap:
Enable
Upstreamchannelbitswap:
Enable
Trellismode:
Enable
Standardinporttraining:
G992.5-AnnexA
Downstreamchannelrate(Kbps):
23093
Downstreammax.attainablerate(Kbps):
26692
DownstreamchannelSNRmargin(dB):
6.3
Downstreaminterleavedchanneldelay(ms):
5
Downstreamchannelattenuation(dB):
3.5
Downstreamtotaloutputpower(dBm):
17.3
Upstreamchannelrate(Kbps):
1022
Upstreammax.attainablerate(Kbps):
1022
UpstreamchannelSNRmargin(dB):
5.5
Upstreaminterleavedchanneldelay(ms):
3
Upstreamchannelattenuation(dB):
2.0
Upstreamtotaloutputpower(dBm):
46.7
----------------------------------------------------------
G992.1:
G.dmt
G992.2:
G.lite
G992.3:
G.dmt.bis
G992.5:
G.dmt.bisplus
prompt(config-if-adsl-0/0)#
---------------------------------------------------------------------------
Thevalidintervalsnumberintheintervaltable:
96
Theinvalidintervalsnumberintheintervaltable:
0
CountofLossofFramefailures:
46
CountofLossofSignalfailures:
45
CountofLossofLinkfailures:
38
CountofLossofPowerfailures:
0
CountofErroredSeconds:
2273
Countoflineinitializationattempts:
57
Countofallencodedblocksreceived:
1745375
Countofallencodedblockstransmitted:
5938918
Countofallblocksreceivedwithcorrectableerrors:
48395(上行线路当前FEC的数目)
Countofallblocksreceivedwithuncorrectableerrors:
11452(上行线路当前CRC的数目)
Countoffastretraintimes:
0
Countoffailedfastretraintimes:
0
Countofseverelyerroredseconds(SES):
1
Countofunavailableseconds:
79
CountofLossofFramefailures:
0
CountofLossofSignalfailures:
0
CountofLossofPowerfailures:
7
CountofErroredSeconds:
304
Countofallencodedblocksreceived:
5938918
Countofallencodedblockstransmitted:
1745375
Countofallblocksreceivedwithcorrectableerrors:
214551(下行线路当前FEC的数目)
Countofallblocksreceivedwithuncorrectableerrors:
6968(下行线路当前CRC的数目)
Countofseverelyerroredseconds(SES):
86
Countofunavailableseconds:
2762
拔掉ADSL线后,CRC剧增:
prompt(config-if-adsl-0/0)#displaylineoperation31(查询激活后线路操作参数)
Itwilltakeseveralminutes,andconsolemaybetimeout,pleaseusecommand
idle-timeouttosettimelimit
Areyousuretocontinue?
(y/n)[n]:
y
prompt(config-if-adsl-0/0)#
----------------------------------------------------------
Channelmode:
Interleaved
Downstreamchannelbitswap:
Enable
Upstreamchannelbitswap:
Enable
Trellismode:
Enable
Standardinporttraining:
G992.5-AnnexA
Downstreamchannelrate(Kbps):
23089
Downstreammax.attainablerate(Kbps):
25452
DownstreamchannelSNRmargin(dB):
6.3
Downstreaminterleavedchanneldelay(ms):
5
Downstreamchannelattenuation(dB):
3.5
Downstreamtotaloutputpower(dBm):
17.3
Upstreamchannelrate(Kbps):
1026
Upstreammax.attainablerate(Kbps):
1026
UpstreamchannelSNRmargin(dB):
15.0
Upstreaminterleavedchanneldelay(ms):
3
Upstreamchannelattenuation(dB):
2.0
Upstreamtotaloutputpower(dBm):
46.7
----------------------------------------------------------
G992.1:
G.dmt
G992.2:
G.lite
G992.3:
G.dmt.bis
G992.5:
G.dmt.bisplus
prompt(config-if-adsl-0/0)#
---------------------------------------------------------------------------
Thevalidintervalsnumberintheintervaltable:
96
Theinvalidintervalsnumberintheintervaltable:
0
CountofLossofFramefailures:
48
CountofLossofSignalfailures:
47
CountofLossofLinkfailures:
40
CountofLossofPowerfailures:
0
CountofErroredSeconds:
2325
Countoflineinitializationattempts:
59
Countofallencodedblocksreceived:
1754127
Countofallencodedblockstransmitted:
5972832
Countofallblocksreceivedwithcorrectableerrors:
49847(上行线路当前FEC的数目)
Countofallblocksreceivedwithuncorrectableerrors:
12036(上行线路当前CRC的数目)
Countoffastretraintimes:
0
Countoffailedfastretraintimes:
0
Countofseverelyerroredseconds(SES):
1
Countofunavailableseconds:
42
CountofLossofFramefailures:
0
CountofLossofSignalfailures:
0
CountofLossofPowerfailures:
7
CountofErroredSeconds:
328
Countofallencodedblocksreceived:
5972832
Countofallencodedblockstransmitted:
1754127
Countofallblocksreceivedwithcorrectableerrors:
240483(下行线路当前FEC的数目)
Countofallblocksreceivedwithuncorrectableerrors:
8161(下行线路当前CRC的数目)
Countofseverelyerroredseconds(SES):
108
Countofunavailableseconds:
2867
***在测试过程中,请注意以下几点:
1.进行DSL性能的BER测试时,我们关注的是CRC的变化值,而不是绝对值,可能某些局端或Modem因为线路环境的影响,刚建立连接的时候,CRC数目就很大,而且没有在同步上的时刻清零,不能因此判断说CRC很多,性能不好;而是要在同步后进行长时间的检测,看CRC是否在原来的基础上有增加。
2.严格意义来说,局端和Modem上报的CRC值应该是一致的。
3.我们可以从CRC变化的几种情况来判断DSL的性能情况:
1)DSL同步以后,CRC保持固定值不变,说明DSL性能比较稳定;
2)DSL同步以后,CRC稳定地增加,可能一分钟增加几个,可能不会掉线,但是会影响吞吐量;
3)DSL同步以后,CRC剧增,成百上千个地增加,说明线路环境已经相当差,肯定会导致ADSL掉线。
附录:
模2除法
模2除法与算术除法类似,但每一位除(减)的结果不影响其它位,即不向上一位借位。
所以实际上就是异或。
然后再移位做下一位的模2减。
步骤如下:
a、用除数对被除数最高几位做模2减,没有借位。
b、除数右移一位,若余数最高位为1,商为1,并对余数做模2减。
若余数最高位为0,商为0,除数继续右移一位。
c、一直做到余数的位数小于除数时,该余数就是最终余数。