<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 手機(jī)與無線通信 > 設(shè)計(jì)應(yīng)用 > CRC校驗(yàn)編程和硬件快速校驗(yàn)探討

          CRC校驗(yàn)編程和硬件快速校驗(yàn)探討

          作者: 時(shí)間:2011-04-14 來源:網(wǎng)絡(luò) 收藏

          3
          器件或設(shè)備的說明書中,常給出其碼的生成電路。以總線數(shù)字溫度傳感器DS18820為例,其8位碼生成電路如圖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碼。
          在實(shí)際應(yīng)用中發(fā)現(xiàn),Autonics等品牌的控制儀表,其通信CRC碼與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)文章:分頻器原理

          上一頁 1 2 3 下一頁

          關(guān)鍵詞: 校驗(yàn) 探討 快速 編程 CRC 硬件

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();