CRC校驗(yàn)編程和硬件快速校驗(yàn)探討
3 硬件CRC校驗(yàn)的探討
器件或設(shè)備的說明書中,常給出其硬件CRC碼的生成電路。以總線數(shù)字溫度傳感器DS18820為例,其8位CRC碼生成電路如圖2所示。本文引用地址:http://www.ex-cimer.com/article/156401.htm
對(duì)應(yīng)該硬件電路,等效的模除多項(xiàng)式為:
g(x)=x2+x5+x4+1
該模除多項(xiàng)式反序后,再隱含最高位,其多項(xiàng)式的值為8CH。
8位移位寄存器的初始值清O(00H),通信數(shù)組數(shù)據(jù)的每個(gè)字節(jié)低位在前,按位依次輸入,當(dāng)數(shù)據(jù)全部輸入完成后,移位寄存器各個(gè)位的存儲(chǔ)(輸出)值就是所需的CRC校驗(yàn)碼。
在實(shí)際應(yīng)用中發(fā)現(xiàn),Autonics等品牌的控制儀表,其通信CRC校驗(yàn)碼與DSl8820的完全相同。
對(duì)應(yīng)于圖2的硬件生成電路,可用1片8D觸發(fā)器(如74HC373)和1片4封裝異或門(如74HCl36)連接而成,如圖3所示。
對(duì)于CRC賦初值OOH(74HC373清O)的操作,可先讀出DO~D7的隨機(jī)值,然后將讀出的數(shù)據(jù)再串行輸入即可。因?yàn)橄嗤臄?shù)據(jù)相異或總是為O,再除以任何多項(xiàng)式仍為O。
若MCU剩余足夠的I/O口,可將CRC碼的DO~D7位并行讀入。否則,還需加一片74HCl65,將D0~D7轉(zhuǎn)換成串行數(shù)據(jù)讀入。
以少量的硬件實(shí)現(xiàn)快速CRC,能節(jié)省單片機(jī)的運(yùn)算時(shí)間和存儲(chǔ)資源。用于發(fā)送端,能夠快速獲得CRC校驗(yàn)碼,在系統(tǒng)其他任務(wù)很重時(shí),能增強(qiáng)實(shí)時(shí)性。而用于接收端,除了上述優(yōu)點(diǎn)之外,還能顯著增強(qiáng)系統(tǒng)接收和確認(rèn)信息的可靠性,適用于一些遠(yuǎn)程控制的執(zhí)行裝置(如變頻驅(qū)動(dòng)器、閥門定位控制器、重要的監(jiān)測(cè)報(bào)警裝置等)。這些裝置對(duì)于接收到的數(shù)據(jù)或命令信息,一旦因誤校驗(yàn)而不能正確地判斷執(zhí)行,其后果都是比較嚴(yán)重的。因此,要提高嵌入式系統(tǒng)的可靠性和實(shí)時(shí)性,硬件CRC校驗(yàn)是一種選擇。
結(jié) 語
本文在分析了常用CRC碼的反序生成原理的基礎(chǔ)上,給出了其編程運(yùn)算的統(tǒng)一步驟,并提出了由硬件快速生成CRC碼或?qū)邮諗?shù)據(jù)進(jìn)行CRC校驗(yàn)的電路和方法,可為嵌入式系統(tǒng)的可靠性和實(shí)時(shí)性設(shè)計(jì)提供參考.
c語言相關(guān)文章:c語言教程
分頻器相關(guān)文章:分頻器原理
評(píng)論