新聞中心

EEPW首頁 > 手機與無線通信 > 設計應用 > CRC校驗編程和硬件快速校驗探討

CRC校驗編程和硬件快速校驗探討

作者: 時間:2011-04-14 來源:網絡 收藏

2 嵌入式系統(tǒng)
如上所述,k+r位的被模除數采用右移的方法不斷地同反序的約定多項式對位模除,也就遵從了從高位向低位不斷減余的除法規(guī)則。但由于不必求模除的商,因此只要將被模除數不斷地右移位,與去掉最高位的反序約定多項式模減,求得余數即可。
但如果被模除數最低位右端的移出位是O,則無論從左端添進多少個O,也不夠模除約定多項式(其隱含的最高位是1)。在此情況下該位的商是O,余數不變,不應再同約定多項式對位模減,而要繼續(xù)左添O右移位,直到當前余數(被模除數)右移出的位值為1才夠模除(商1),才可將余數再對位模減一次多項式。由此看出,將約定多項式去掉最高位,可以使模減(異或)的計算位數r減少(一般r都正好是1字節(jié)位數的整數倍)。
由于被模除數是k+r位的,因此總共需要右移k位,即左添進尼個O,才能模除到最低位結束。得到的余數最多是r位(約定多項式為r+1位),再將它異或人一個新數據,作為新的被模除數。
每異或進一個數據,求新一輪碼,都只進行走(字節(jié)數據是一8)次的右移和一般都少于是次的模減(異或)運算,而且模減的中間差值無需保留(后值覆蓋前值)。因此碼生成的運算過程,就是右移位、判斷移出位為1則同多項式模減(C語言不能對移出位檢測,需將余數備份后同0xol相“與”)、差值回存后再右移的是次循環(huán)過程,如圖1所示。之后,再異或進下一個數據(該步與查表法一致)。得當的話運算量很小。
筆者用51匯編語言編寫(2R(:一8程序,算得1字節(jié)數據的CRC碼,只需64~80個機器周期,只多用1字節(jié)RAM單元(CR(:一16多用2字節(jié),時間加倍)來存儲余數,即下一次的被模除數(不斷覆蓋上一次已無用的)。因此,完全可以直接運算,而不必存儲大量的數據表格。C語言,要考慮語句代碼的優(yōu)化以及只定義使用int和char型局部變量,以免耗時和占用RAM單元太多。

接收方對于最后收到的r位CRC校驗碼,不需要再納入模除而使最終余數為O,只需同信息數據的模除余數比較,相等則確定通信正確。這樣可以減少模除循環(huán)次數,節(jié)省時間。

c語言相關文章:c語言教程


分頻器相關文章:分頻器原理


評論


相關推薦

技術專區(qū)

關閉