新聞中心

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

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

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

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

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

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


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


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 怀集县| 洛隆县| 道孚县| 连云港市| 突泉县| 湄潭县| 高唐县| 礼泉县| 灵璧县| 浠水县| 桃江县| 志丹县| 西乡县| 县级市| 吉安市| 兰考县| 东阳市| 盱眙县| 界首市| 泉州市| 清河县| 乌鲁木齐市| 黄浦区| 定结县| 焦作市| 天气| 左贡县| 牙克石市| 镇远县| 宣化县| 济源市| 岳普湖县| 新郑市| 上思县| 扎赉特旗| 葫芦岛市| 黎平县| 长寿区| 廉江市| 和平县| 新龙县|