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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 40位以內(nèi)任意長(zhǎng)度的CRC計(jì)算及校驗(yàn)的實(shí)現(xiàn)

          40位以內(nèi)任意長(zhǎng)度的CRC計(jì)算及校驗(yàn)的實(shí)現(xiàn)

          ——
          作者:圳市中興通訊股份有限公司(深圳 518057)尹冬元 梁松海 時(shí)間:2007-01-26 來(lái)源:《電子工程師》 收藏

          1 引言
            
          循環(huán)冗余校驗(yàn)碼,簡(jiǎn)稱crc碼,是常用的檢測(cè)錯(cuò)誤碼,它在數(shù)據(jù)通信中得到了非常廣泛的應(yīng)用。不同crc碼的生成多項(xiàng)式各不相同,crc碼的比特?cái)?shù)也不同,且在有的通信協(xié)議中要求將余數(shù)寄存器先初始化為全0,另外的則須初始化為全1。因此,在程序設(shè)計(jì)時(shí)必須充分利用crc碼的共性及所用dsp的指令特點(diǎn)。

          2 用tms320c5000實(shí)現(xiàn)不同crc計(jì)算的設(shè)計(jì)思想

          本文引用地址:http://www.ex-cimer.com/article/21134.htm

          crc碼的計(jì)算及校驗(yàn)都用到模2的多項(xiàng)式除法,而多項(xiàng)式除法可以采用帶反饋的移位寄存器來(lái)實(shí)現(xiàn),因此,用dsp來(lái)實(shí)現(xiàn)crc計(jì)算的關(guān)鍵是通過(guò)dsp來(lái)模擬一個(gè)移位寄存器(也就是模擬手寫多項(xiàng)式除法)??紤]到tms320c5000系列dsp的累加器a和b均為40位,因此,可以用一個(gè)40位累加器a作為移位寄存器,若crc碼不夠40位(設(shè)為k位),則僅用到a的最高k位,無(wú)用位用0填充。在編碼中涉及到碼的移位和異或操作,這可以通過(guò)c5000的safa(算術(shù)移位)和xor(異或)兩條指令來(lái)實(shí)現(xiàn)。c5000還提供了特殊指令bitt和xc,前者利用寄存器t,取出一個(gè)16位數(shù)據(jù)中的第(15-t)位,并送入tc(tc是特殊寄存器中的一位);后者是條件執(zhí)行語(yǔ)句,它先判斷所列條件是否滿足,再?zèng)Q定是否執(zhí)行其后的2條單周期指令或1條雙周期指令。

          步驟如下:

          (1)先將crc移位寄存器(即余數(shù)寄存器)a的每一位有效位均初始化為全0或全1(與協(xié)議有關(guān)),而無(wú)用位清0;

          (2)將crc移位寄存器中的值左移一位,判斷移出的第一位與輸入序列的最高位異或之后是否為1;

          (3)若是1,則將a與生成多項(xiàng)式進(jìn)行異或再跳到步驟2處理下一位,否則,直接跳到步驟2繼續(xù)處理下一位。在手寫多項(xiàng)式除法的過(guò)程中我們可以發(fā)現(xiàn),生成多項(xiàng)式即除式一共為k+1位,而余數(shù)寄存器a里僅有k位有效位,這可視為余數(shù)寄存器的k+1位永遠(yuǎn)為0,因此在實(shí)際異或運(yùn)算時(shí),生成多項(xiàng)式的最高位即k+1位不必參與運(yùn)算。流程圖如圖1所示。

          重復(fù)(2)、(3)兩步,直到輸入信息位全部處理完為止,則a的最高k位為進(jìn)行多項(xiàng)式除后所得的余數(shù),若余數(shù)寄存器先初始化為全0,則此時(shí)a的最高k位就是crc校驗(yàn)碼,若余數(shù)寄存器先初始化為全1,則須將a取反后最高k位才是crc碼。

          3 程序設(shè)計(jì)思路及設(shè)計(jì)實(shí)例
            
          為了實(shí)現(xiàn)上述設(shè)計(jì)思想,可在程序中用指針ar2指向輸入信息(一個(gè)字表示16比特),用ar3指向輸入信息字的某一位,用ar4表示夠一個(gè)字的個(gè)數(shù)(單位為字),ar5表示不夠一個(gè)字的比特?cái)?shù),即,若參加計(jì)算的信息比特?cái)?shù)為161,則ar4=10,ar5=1。

          為了依次取出一個(gè)字中的bit15、bit14、...bit0等16位信息位,在程序中用到了一個(gè)全局變量bitpos,共占16個(gè)字,并將這16個(gè)地址的內(nèi)容依次賦值為0,1,2,......15,而在程序中這些值不能被改變。為了實(shí)現(xiàn)循環(huán)長(zhǎng)度為16的循環(huán)尋址,bitpos的地址必須為32字的整數(shù)倍,在匯編語(yǔ)言中用下面的語(yǔ)句實(shí)現(xiàn):

          ;若b=1,則將余數(shù)寄存器與生成多項(xiàng)式相異或(即模2減)

          crc碼的校驗(yàn)過(guò)程與crc計(jì)算相似,只是參與crc計(jì)算的位須包括信息位及crc碼,若最后余數(shù)寄存器的值為全0(當(dāng)余數(shù)寄存器初始化全0時(shí))或某一特定值(當(dāng)余數(shù)寄存器初始化全1時(shí),與crc碼的生成多項(xiàng)式有關(guān)),則表示接收正確,否則表示發(fā)生錯(cuò)誤。

          4 結(jié)束語(yǔ)

          通過(guò)反復(fù)測(cè)試,證明了上述40位以內(nèi)的crc碼計(jì)算及校驗(yàn)的設(shè)計(jì)思想正確,能正確實(shí)現(xiàn)crc-3、crc-12、crc-16、crc-24、crc-32等任意40位以內(nèi)的crc計(jì)算及校驗(yàn)。所附程序具有應(yīng)用簡(jiǎn)單、指令精簡(jiǎn)、運(yùn)算速度快等優(yōu)點(diǎn)。該設(shè)計(jì)思路也可以很方便地在其它dsp或單片機(jī)及pc機(jī)中實(shí)現(xiàn)。



          關(guān)鍵詞:

          評(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); })();