在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于Atmega128單片機(jī)和CRC校驗(yàn)碼實(shí)現(xiàn)無線傳輸數(shù)據(jù)時的差錯校驗(yàn)

電子設(shè)計 ? 來源:單片機(jī)與嵌入式系統(tǒng)應(yīng)用 ? 作者:王泉,齊春,羅新 ? 2021-05-05 17:36 ? 次閱讀

作者:王泉,齊春,羅新民,黃偉,馬旭東

引 言

隨著技術(shù)的不斷進(jìn)步,各種數(shù)據(jù)通信的應(yīng)用越來越廣泛。由于傳輸距離、現(xiàn)場狀況、干擾等諸多因素的影響,設(shè)備之間的通信數(shù)據(jù)常會發(fā)生一些無法預(yù)測的錯誤。為了降低錯誤所帶來的影響,一般在通信時采用數(shù)據(jù)校驗(yàn)的辦法,而循環(huán)冗余碼校驗(yàn)是常用的重要校驗(yàn)方法之一。

AVR高速嵌入式單片機(jī)是8位RISC MCU,執(zhí)行大多數(shù)指令只需一個時鐘周期,速度快(8MHz AVR的運(yùn)行速度約等于200MHz 80C51的運(yùn)行速度),32個通用寄存器直接與ALU相連,消除了運(yùn)算瓶頸;內(nèi)嵌可串行下載或自我編程的Flash和EPPROM,功能繁多,具有多種運(yùn)行模式。

本文采用Atmel公司的Atmega128高速嵌入式單片機(jī),依照IEEE 1999年公布的802.11無線局域網(wǎng)協(xié)議標(biāo)準(zhǔn),采用32位循環(huán)冗余校驗(yàn)碼(Cyclic Redundancy Check)實(shí)現(xiàn)無線傳輸數(shù)據(jù)時的差錯校驗(yàn)。

1 CRC循環(huán)冗余校驗(yàn)碼原理

1.1 數(shù)據(jù)傳輸?shù)膸袷?/p>

根據(jù)IEEE制定的802.11無線局域網(wǎng)絡(luò)協(xié)議,在數(shù)據(jù)傳輸時都應(yīng)按照幀傳輸。這里,我們采用了信息處理系統(tǒng)-數(shù)據(jù)通信-高級數(shù)據(jù)鏈路控制規(guī)程-幀結(jié)構(gòu),它的每個幀由下列字段組成(傳輸順序自左至右):

地址——數(shù)據(jù)站地址字段;

控制——控制字段。

信息——信息字段;

CRC校驗(yàn)位——根據(jù)前面三個字段生成的CRC校驗(yàn)位。

由地址、控制、信息三個字段組成的總的字段統(tǒng)稱為數(shù)據(jù)段。

1.2 CRC校驗(yàn)碼的理論生成方法

CRC校驗(yàn)采用多項(xiàng)式編碼方法,被處理的數(shù)據(jù)塊可以看作是一個n階的二進(jìn)制多項(xiàng)式。這里,假定待發(fā)送的二進(jìn)制數(shù)據(jù)段為g(x),生成多項(xiàng)式為 m(x),得到的CRC校驗(yàn)碼為c(x)。

CRC校驗(yàn)碼的編碼方法是用待發(fā)送的二進(jìn)制數(shù)據(jù)g(x)除以生成多項(xiàng)式m(x),將最后的余數(shù)作為CRC校驗(yàn)碼,實(shí)現(xiàn)步驟如下。

① 設(shè)待發(fā)送的數(shù)據(jù)塊是m位的二進(jìn)制多項(xiàng)式 g(x),生成多項(xiàng)式為r階的m(x)。在數(shù)據(jù)塊的末尾添加r個0,數(shù)據(jù)塊的長度增加到m+r位,對應(yīng)的二進(jìn)制多項(xiàng)式為G(x) 。

② 用生成多項(xiàng)式m(x)去除G(x) ,求得余數(shù)為階數(shù)是r-1的二進(jìn)制多項(xiàng)式c(x)。此二進(jìn)制多項(xiàng)式 c(x)就是g(x)經(jīng)過生成多項(xiàng)式m(x)編碼的CRC校驗(yàn)碼。

③ 用模2的方式減去c(x),得到的二進(jìn)制多項(xiàng)式就是包含了CRC校驗(yàn)碼的待發(fā)送字符串。

CRC校驗(yàn)可以100%地檢測出所有奇數(shù)個隨機(jī)錯誤和長度小于等于r(r為m(x)的階數(shù))的突發(fā)錯誤。所以,CRC的生成多項(xiàng)式的階數(shù)越高,誤判的概率就越小。CCITT建議:2048 Kb/s的PCM基群設(shè)備采用CRC-4方案,使用的CRC校驗(yàn)碼生成多項(xiàng)式m(x)=x4+x+1 。采用16位CRC校驗(yàn),可以保證在 1014bit碼元中只含有1位未被檢測出的錯誤。在IBM的同步數(shù)據(jù)鏈路控制規(guī)程SDLC的幀校驗(yàn)序列FCS中,使用CRC-16,其生成多項(xiàng)式m(x)=x16+x15+x2+1;而在CCITT推薦的高級數(shù)據(jù)鏈路控制規(guī)程HDLC的幀校驗(yàn)序列FCS中,使用CCITT-16,其生成多項(xiàng)式m(x)= x16+x15+x5+1。CRC-32的生成多項(xiàng)式 m(x)=x32+x26+x23+x22+x16+x12+x11+x10+x8+x7+x5+x4+x2+x+1。CRC-32出錯的概率為CRC- 16的10-5。由于CRC-32的可靠性,把CRC-32用于重要數(shù)據(jù)傳輸十分合適,所以在通信、計算機(jī)等領(lǐng)域運(yùn)用十分廣泛。在一些UART通信控制芯片(如MC6582、Intel8273和Z80-SIO)內(nèi),都采用了CRC校驗(yàn)碼進(jìn)行差錯控制;以太網(wǎng)卡芯片、MPEG解碼芯片中,也采用CRC- 32進(jìn)行差錯控制。

m(x) 生成多項(xiàng)式的系數(shù)為0或1,但是m(x) 的首項(xiàng)系數(shù)為1,末項(xiàng)系數(shù)也必須為1。m(x) 的次數(shù)越高,其檢錯能力越強(qiáng)。

2 使用Atmega128生成32位CRC校驗(yàn)碼

2.1 直接計算法生成32位CRC校驗(yàn)碼

直接計算法就是依據(jù)CRC校驗(yàn)碼的產(chǎn)生原理來設(shè)計程序。其優(yōu)點(diǎn)是模塊代碼少,修改靈活,可移植性好。這種算法簡單,容易實(shí)現(xiàn),對任意長度生成多項(xiàng)式m(x) 都適用。在發(fā)送的數(shù)據(jù)不長的情況下可以使用,但是如果發(fā)送的數(shù)據(jù)塊很長,這種方法就不太適合了。因?yàn)樗?次只能處理1位數(shù)據(jù),效率太低,運(yùn)算量大。

計算法生成32位CRC校驗(yàn)碼的流程如圖1所示。

用AVR單片機(jī)匯編語言實(shí)現(xiàn)CRC-32源程序見本刊網(wǎng)絡(luò)補(bǔ)充版(http://www.dpj.com.cn)。

2.2 查表法生成32位CRC校驗(yàn)碼

和直接計算法相反,查表法生成32位CRC校驗(yàn)碼的優(yōu)點(diǎn)是運(yùn)算量小,速度快;缺點(diǎn)是可移植性較差。這種算法首先要求得到32位CRC生成表,由于1個字節(jié)有8位,所以這個表總共有256項(xiàng)。但是,由于AVR高速嵌入式單片機(jī)中的寄存器是以1個字節(jié)為單位的,所以在編程實(shí)現(xiàn)中,這個CRC生成表總共有1024項(xiàng),分別從0~1023;每4位對應(yīng)1個32位CRC生成表的項(xiàng),每一項(xiàng)都從高到低降冪排列。關(guān)于32位CRC生成表的程序詳見本刊網(wǎng)絡(luò)補(bǔ)充版(http://www.dpj.com.cn)。

查表法生成32位CRC校驗(yàn)碼的流程如圖2所示。

圖2所示的流程圖中,在通過異或運(yùn)算得到CRC生成表的索引時,由于AVR高速嵌入式單片機(jī)中的寄存器是以1個字節(jié)為單元的,所以在編程實(shí)現(xiàn)中應(yīng)根據(jù)所要求生成的CRC校驗(yàn)碼的位數(shù)乘以相應(yīng)的系數(shù)。例如:在數(shù)據(jù)傳輸時要求32位CRC校驗(yàn)碼,應(yīng)該把所得到的索引數(shù)乘以系數(shù)4,然后再從高到低依次取得32位CRC生成表單元中的內(nèi)容。

使用查表法得到32位CRC校驗(yàn)碼的源程序詳見本刊網(wǎng)絡(luò)補(bǔ)充版。

3 實(shí)驗(yàn)結(jié)果

為了比較所述兩種32位CRC校驗(yàn)碼生成方法的特點(diǎn),分別選取不同字節(jié)數(shù)的數(shù)據(jù)段,對兩種方法在不同情況下的效果進(jìn)行比較,如表1所列。

表1 兩種算法實(shí)驗(yàn)結(jié)果對比

以上所有實(shí)驗(yàn)結(jié)果均是在AVR Studio4仿真軟件上選用Atmel公司的Atmega128高速嵌入式單片機(jī)為實(shí)驗(yàn)設(shè)備平臺,在12MHz運(yùn)行速度下模擬所得。

在調(diào)用32位CRC生成表程序以得到32位CRC生成表時,耗時3968.33μs,執(zhí)行了47620個時鐘周期。從上述實(shí)驗(yàn)結(jié)果可得出以下幾點(diǎn)結(jié)論。

① 如果不考慮生成32位CRC生成表的時間,例如直接把32位CRC生成表燒入到Atmega128的可編程閃速存儲器Flash中,由表1可清楚地看出,查表法的運(yùn)行速度比直接計算法要快得多。因此,在類似情況下,在進(jìn)行數(shù)據(jù)傳輸要求生成32位CRC校驗(yàn)碼時,應(yīng)該選擇查表法。

② 在某些應(yīng)用中,如果對硬件存儲器空間要求很高,并且在一定程度上對時間沒有特別高的要求時,可以采用直接計算法,以避免查表法中CRC生成表對存儲器空間的占用。

③ 雖然實(shí)驗(yàn)結(jié)果對32位CRC校驗(yàn)碼的兩種算法進(jìn)行了對比,但是所得到的結(jié)論也適用于8位、16位、24位CRC校驗(yàn)碼。

結(jié) 語

CRC循環(huán)冗余校驗(yàn)碼是一種方便、有效、快速的校驗(yàn)方法,被廣泛應(yīng)用在許多實(shí)際工程中。文中所列的兩種算法——查表法和直接計算法,都可以得到CRC校驗(yàn)碼;但是它們各有特點(diǎn),在工程應(yīng)用中應(yīng)該根據(jù)實(shí)際需要選擇最適合的方法,以得到最優(yōu)的效果。

責(zé)任編輯:gt

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6043

    文章

    44621

    瀏覽量

    638574
  • 嵌入式
    +關(guān)注

    關(guān)注

    5092

    文章

    19178

    瀏覽量

    307694
  • 無線
    +關(guān)注

    關(guān)注

    31

    文章

    5470

    瀏覽量

    173835
收藏 人收藏

    評論

    相關(guān)推薦

    如何在IAR Embedded Workbench中配置生成對應(yīng)代碼區(qū)域的CRC校驗(yàn)碼

    在“使用IAR Embedded Workbench和MCU的CRC模塊來檢查代碼的完整性”一文中,介紹了如何在IAR Embedded Workbench中配置生成對應(yīng)代碼區(qū)域的CRC校驗(yàn)碼,然后
    的頭像 發(fā)表于 10-27 11:49 ?1782次閱讀
    如何在IAR Embedded Workbench中配置生成對應(yīng)代碼區(qū)域的<b class='flag-5'>CRC</b><b class='flag-5'>校驗(yàn)碼</b>

    CRC校驗(yàn)碼算法的研究與實(shí)現(xiàn)

    CRC校驗(yàn)碼算法的研究與實(shí)現(xiàn)
    發(fā)表于 08-06 11:09

    怎么看這款單片機(jī)校驗(yàn)碼是多少呢

    很久以前寫的程序,由于程序有很多版本,所以想看一下最終版的程序校驗(yàn)碼來確定最終的程序。請問如何用燒錄器來看校驗(yàn)碼呢我開始是直接用CSWrite來read chip看看單片機(jī)校驗(yàn)碼但是
    發(fā)表于 07-01 16:16

    循環(huán)冗余校驗(yàn)碼單片機(jī)及CPLD 實(shí)現(xiàn)

    循環(huán)冗余校驗(yàn)(CRC)是一種可靠性很高的串行數(shù)據(jù)校驗(yàn)方法。介紹循環(huán)冗余
    發(fā)表于 04-16 14:19 ?16次下載

    電話網(wǎng)遠(yuǎn)程通信中CRC校驗(yàn)碼的設(shè)計及實(shí)現(xiàn)

    本文介紹了基于電話網(wǎng)遠(yuǎn)距離分布式測控系統(tǒng)的通信方法,重點(diǎn)介紹了傳輸協(xié)議中CRC 循環(huán)校驗(yàn)碼校驗(yàn)原理,CRC
    發(fā)表于 08-12 10:24 ?18次下載

    循環(huán)冗余校驗(yàn)碼---CRC

    循環(huán)冗余校驗(yàn)碼---CRC   二進(jìn)制信息位串沿一條信號線逐位在部件之間或計算機(jī)之間傳送稱為串行傳送。CRC(Cyclic Redundancy c
    發(fā)表于 10-13 16:52 ?7198次閱讀
    循環(huán)冗余<b class='flag-5'>校驗(yàn)碼</b>---<b class='flag-5'>CRC</b><b class='flag-5'>碼</b>

    奇偶校驗(yàn)碼,奇偶校驗(yàn)碼原理是什么?

    奇偶校驗(yàn)碼,奇偶校驗(yàn)碼原理是什么? 奇偶校驗(yàn)碼是奇校驗(yàn)碼和偶校驗(yàn)碼的統(tǒng)稱,是一種最基本的檢錯碼。它是由n-1位信息元和1位
    發(fā)表于 03-17 17:39 ?6.3w次閱讀

    crc校驗(yàn)基本原理

    本內(nèi)容介紹了crc校驗(yàn)基本原理,CRC幾個基本概念,CRC的生成步驟.CRC即循環(huán)冗余
    發(fā)表于 12-21 16:55 ?4721次閱讀

    CRC校驗(yàn)碼算法的研究與實(shí)現(xiàn)

    為了提高實(shí)際通信中檢查信號傳輸錯誤的能力,提高和推廣CRC校驗(yàn)技術(shù),本論文用邏輯代數(shù)知識、按模運(yùn)算、代數(shù)知識和C語言編程工具設(shè)計了幾種具體實(shí)用的CRC
    發(fā)表于 05-28 15:41 ?0次下載

    CRC-16校驗(yàn)碼生成

    C#編寫的CRC校驗(yàn)碼生成小程序,簡潔明了,如果有需要的話,大家可以下載了。
    發(fā)表于 05-06 15:06 ?8次下載

    crc循環(huán)冗余校驗(yàn)碼算法

     循環(huán)冗余校驗(yàn)(Cyclic Redundancy Check, CRC)是一種根據(jù)網(wǎng)絡(luò)數(shù)據(jù)包或電腦文件等數(shù)據(jù)產(chǎn)生簡短固定位數(shù)校驗(yàn)碼的一種散
    發(fā)表于 12-04 10:11 ?2.3w次閱讀
    <b class='flag-5'>crc</b>循環(huán)冗余<b class='flag-5'>校驗(yàn)碼</b>算法

    薦讀:基于FPGA 的CRC校驗(yàn)碼生成器

    大家好,又到了每日學(xué)習(xí)的時間了,今天我們來聊一聊基于FPGA 的CRC校驗(yàn)碼生成器。下面咱們就來具體看看,歡迎大家一起交流學(xué)習(xí)。 1.概述 CRC即Cyclic Redundancy Check
    的頭像 發(fā)表于 06-13 11:18 ?6559次閱讀
    薦讀:基于FPGA 的<b class='flag-5'>CRC</b><b class='flag-5'>校驗(yàn)碼</b>生成器

    CRC校驗(yàn)碼的C語言程序免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是CRC校驗(yàn)碼的C語言程序免費(fèi)下載。
    發(fā)表于 04-22 08:00 ?28次下載
    <b class='flag-5'>CRC</b><b class='flag-5'>校驗(yàn)碼</b>的C語言程序免費(fèi)下載

    CRC校驗(yàn)碼并行計算的FPGA實(shí)現(xiàn)

    用軟件實(shí)現(xiàn) CRC 校驗(yàn)碼計算很難滿足高速數(shù)據(jù)通信的要求 ,基于硬件的實(shí)現(xiàn)方法中 ,有串行經(jīng)典算法 LFSR 電路 以及由軟件算法推導(dǎo)出來的
    發(fā)表于 03-28 09:34 ?30次下載
    <b class='flag-5'>CRC</b><b class='flag-5'>校驗(yàn)碼</b>并行計算的FPGA<b class='flag-5'>實(shí)現(xiàn)</b>

    CRC校驗(yàn)碼的多種Verilog實(shí)現(xiàn)方式

    CRC循環(huán)冗余校驗(yàn)碼(Cyclic Redundancy Check),檢錯碼。
    的頭像 發(fā)表于 06-21 15:03 ?3475次閱讀
    <b class='flag-5'>CRC</b><b class='flag-5'>校驗(yàn)碼</b>的多種Verilog<b class='flag-5'>實(shí)現(xiàn)</b>方式
    主站蜘蛛池模板: 亚洲第一页在线 | 成人免费国产gav视频在线 | 久久精品国产99国产精品澳门 | 最新国产厕所 | 老湿司午夜爽爽影院榴莲视频 | 天天射天天色天天干 | 女人张开腿让男人桶视频免费大全 | 免费看真人a一级毛片 | 嫩草影院入口一二三免费 | 日日摸夜夜添免费毛片小说 | 女人张开腿让男人桶免费网站 | 国产伦子一区二区三区四区 | 国产一级做a爱免费视频 | 人人草草| 成人午夜免费视频 | 天天摸天天做天天爽在线 | 寡妇影院首页亚洲图片 | 天堂一区二区在线观看 | 视频一区二区中文字幕 | 天堂影| 特级片毛片 | 国产精品一区在线观看你懂的 | 天天综合天天做天天综合 | 天堂在线视频观看 | 欧美不卡在线视频 | 日本经典在线三级视频 | 人人做人人澡人人人爽 | 日本三级黄色网址 | 天天干天天夜 | 特级毛片aaaa级毛片免费 | 国产天美 | 四虎影院在线播放 | 牛牛碰在线视频 | 国产三级黄色毛片 | 国产三级日产三级日本三级 | 天堂在线视频精品 | 天天爆操 | 国产ccc| 一区在线免费观看 | xx毛片 | 中文字幕亚洲区 |