CAN協(xié)議的錯幀漏檢率推導(dǎo)及改進過程簡介
圖2 第2個傳送錯造成填充位誤讀為信息位的5種漏檢錯序列尾部形式
在已知錯誤序列尾部形式Ec,t后便可以求出滿足它的漏錯多項式尾部Ut。將各多項式的系數(shù)表示為:
為滿足Ec,t=G×Ut的尾部,那么系數(shù)有如下關(guān)系:
實際上將Ec,t、G均作逆序排列:
類似于求CRC值時的方法,將Ec,tR×x5除以GR就可以得到Ut的逆序系數(shù),也就得到了Ut。由CAN生成多項式G的系數(shù)(1100,0101,1001,1001)以及Ec,t系數(shù)便得到了滿足錯誤序列尾部形式的漏錯多項式Ut,如表1所列。
表1 錯誤序列尾部形式和漏錯多項式Ut(x)
2.4 Ut的擴充形成Ec頭部
在Ut中增加高于x5的項成為U,它不會影響Ec尾部的形式,但是它會增加錯誤序列的長度。由此U生成的Ec與Tx序列也將被漏檢。Tx在數(shù)據(jù)域內(nèi)不同位置的集合就構(gòu)成了所有漏檢實例。發(fā)生第一次bit錯后并不立即開始Tx?Rx位序的錯位,要等到有填充位發(fā)生時才會有位序錯。
2.5 構(gòu)造出錯實例Tx
以Ut= x4+x3+1為例,對應(yīng)尾部第1位處出了傳送錯,Ut加上x6后有U=x6+x4+x3+1,計算得Ec=U×G= (1110,1111,0101,1010,0000,01),整個錯誤序列的長度為22位。該Ec確定頭部出第1個傳送錯的位置是6,假定為漏刪填充位錯,則在尾部應(yīng)取誤刪信息位錯。假定在頭部出現(xiàn)的是Tx送100000,在第6位處Rx收到的是1,出了第1個bit錯,第7位Rx得到填充位1而未刪去,Tx第7位可由Ec及Rx求得為0,然后逐位反推,得到Tx發(fā)生漏檢錯的實例,如圖3所示。
圖3 構(gòu)造的會出漏檢錯的Tx實例
這個例子中Tx序列的長度為27 bit。此種長度的Tx可以有227種,每一種都可能出錯,但重構(gòu)出的這一種在特定位發(fā)生2個bit錯時會漏檢。這個Tx在別的位置發(fā)生bit錯時,將可以檢出錯,因此它是一個可能被漏檢的可疑實例。Tx頭部共有4種可能:Tx=10000(0),10000(1),01111(1),01111(0)。(括號中的位在傳送中出了錯)。因此這幾種可疑實例占可能Tx的2-25??梢蒚x在64 bit的數(shù)據(jù)域中會有64-27+1=38種位置。對頭部Tx=100000和100001,其高4位可以與CAN的DLC重合,對Tx=011111和 011110,其最高位可和DLC0重合,因此此種Tx實例在8字節(jié)數(shù)據(jù)域的幀中出現(xiàn)的可能數(shù)目是39種。于是這一種漏檢實例有概率 39×2-25=1.16×10-6。當誤碼率為0.02時,64 bit內(nèi)出2個bit錯的概率是(1-0.02)62×0.022=1.14×10-4,由這一個實例引起的CAN錯幀漏檢率就是1.32×10-10,已經(jīng)大于Bosch的指標??紤]U中可增加的xk中k可由6一直到43,各種xk項有237=1.37×1011種組合,需要對每一種U進行計算,雖然它們的漏檢實例概率不同,其增量還是很大的。還要考慮不同Ut的貢獻,可見CAN錯幀漏檢率是非常大的。
2.6 計算結(jié)果
根據(jù)上述分析編制了在MATLAB中運行的程序pcan.m,在MATLAB中設(shè)置format long e格式,運行pcan(ber)即可得到不同誤碼率ber時的結(jié)果,如表2所列。
表2 典型的CAN漏檢錯幀概率
表中ber=0.02的錯幀漏檢率為1.882×10-8,而參考文獻在同樣誤碼率下給出的漏檢率是:低速系統(tǒng)4.7×10-14和高速系統(tǒng) 8.5×10-14。可見差別極大。對500 kbps的系統(tǒng),假定總線利用率為40%,幀長為135 bit,那么按這個結(jié)果,CAN系統(tǒng)將在9.96小時出1個漏檢錯幀。
評論