關(guān)于CRC校驗碼的計算步驟兄世、模2除法等內(nèi)容在這里不做過多說明了,本文主要對LFSR電路談一談理解啊研。
為簡化計算御滩,現(xiàn)假設一個CRC4的生成多項式為:
由多項式可能會得到下面兩種形式的電路鸥拧,區(qū)別是紅色的連線部分:
兩者表現(xiàn)區(qū)別見仿真,其中為
從高位依次輸入削解,校驗結(jié)果為
富弦,
為A電路中D觸發(fā)器值氛驮,
為B電路中D觸發(fā)器值腕柜,觸發(fā)器初值需要為全0。
可以看出B電路在輸入所有數(shù)據(jù)后立刻得出了CRC校驗值柳爽,而A電路在數(shù)據(jù)全部輸入后還需4個周期才能得到校驗值媳握,這是4級D觸發(fā)器造成的。這個4周期的差別在一定條件下可以消除磷脯,當輸入數(shù)據(jù)的前4 bits在第1個時鐘前已知時蛾找,可以通過對置數(shù)來跳過前4個周期。由于A需要已知前幾位數(shù)據(jù)的條件赵誓,B電路在設計上是優(yōu)于A的打毛,下面分析兩個電路原理。
電路A
A電路可以分為兩個階段俩功,1 ~ 4時鐘周期為數(shù)據(jù)移入階段幻枉,5 ~ 8時鐘周期為模2除法階段。
上圖為初始狀態(tài)下各D觸發(fā)器轉(zhuǎn)移情況诡蜓,可以看出將連續(xù)輸出4個0電平熬甫,這導致在后面4個時鐘周期內(nèi)
、
先后等于
蔓罚,經(jīng)過4個周期后椿肩,輸入數(shù)據(jù)被依次移入觸發(fā)器。
模2除法階段豺谈,由于模2除法本質(zhì)上就是異或郑象,而在生成多項式中做除法的時機是5bit數(shù)據(jù)第5位為1,在電路中表現(xiàn)為
輸出為1時進行一次與10101的異或(沒有異或電路的
茬末、
等價于和0異或)厂榛,各比特對應關(guān)系在圖中已用顏色標出。
從上圖可以看出丽惭,
將變?yōu)?击奶,這表明之后兩個周期將不做異或操作(等價于與全0異或保持不變),計算上表現(xiàn)為模2結(jié)果前兩位為0不夠除责掏。
電路B
A電路是一個相對好理解的電路正歼,是對模2除法比較直觀的實現(xiàn)。相較于B電路的缺點是在逐位獲取輸入數(shù)據(jù)的情況下需要多消耗更多的周期數(shù)拷橘。產(chǎn)生這一問題的原因在于A電路計算除法需要提供低位數(shù)據(jù)并直接計算出結(jié)果局义。
B電路認為在接收到輸入位時就可以判斷其是否需要異或喜爷,例如當輸入為1并根據(jù)多項式可知需要對后2個周期與后4個周期的數(shù)據(jù)進行異或。因此記錄下需要異或的4位情況萄唇,當在傳入最后一位數(shù)據(jù)時檩帐,電路可以得出記錄值與0000異或結(jié)果,即CRC4的校驗碼另萤。
具體情況見下圖:
還是從初始狀態(tài)分析湃密,當輸入第一位為1時,由于后幾位未知四敞,但根據(jù)多項式可以知道后2個周期與后4個周期需要將輸入數(shù)據(jù)與1異或泛源,因此將、
置1忿危,可以暫且估計在2個周期與4個周期后置1數(shù)據(jù)會反饋到
處進行異或达箍。
上圖輸入為0,可以先簡單認為此位不需要進行異或铺厨。
在這一時刻下缎玫,輸入為1,但由于之前記錄了當前輸入需要對1異或解滓,輸出的1反饋到了輸入端赃磨,因此輸入的1應該在異或中變?yōu)?無法除盡。
給出最后計算結(jié)果洼裤。
B電路核心是兩個異或電路邻辉,在例子中均只遇到了3種情況,下面列出其真值表及含義理解:
處異或電路
含義 | ||
---|---|---|
0 | 0 | 輸入為0且未被模2除腮鞍,不需要對后續(xù)數(shù)據(jù)做除法 |
0 | 1 | 輸入為1且未被模2除恩沛,需要對后續(xù)數(shù)據(jù)做除法 |
1 | 0 | 輸入0但被模2除后變?yōu)?,需要對后續(xù)數(shù)據(jù)做除法 |
1 | 1 | 輸入1但被模2除后變?yōu)?缕减,不需要對后續(xù)數(shù)據(jù)做除法 |
處異或電路
含義 | ||
---|---|---|
0 | 0 | 此位不需要做除法 |
0 | 1 | 此位將要做一次除法 |
1 | 0 | 此位將要做一次除法 |
1 | 1 | 此位將要做兩次除法,因此相互抵消 |