色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于Atmega128單片機和CRC校驗碼實現無線傳輸數據時的差錯校驗

電子設計 ? 來源:單片機與嵌入式系統應用 ? 作者:王泉,齊春,羅新 ? 2021-05-05 17:36 ? 次閱讀

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

引 言

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

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

本文采用Atmel公司的Atmega128高速嵌入式單片機,依照IEEE 1999年公布的802.11無線局域網協議標準,采用32位循環冗余校驗碼(Cyclic Redundancy Check)實現無線傳輸數據時的差錯校驗。

1 CRC循環冗余校驗碼原理

1.1 數據傳輸的幀格式

根據IEEE制定的802.11無線局域網絡協議,在數據傳輸時都應按照幀傳輸。這里,我們采用了信息處理系統-數據通信-高級數據鏈路控制規程-幀結構,它的每個幀由下列字段組成(傳輸順序自左至右):

地址——數據站地址字段;

控制——控制字段。

信息——信息字段;

CRC校驗位——根據前面三個字段生成的CRC校驗位。

由地址、控制、信息三個字段組成的總的字段統稱為數據段。

1.2 CRC校驗碼的理論生成方法

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

CRC校驗碼的編碼方法是用待發送的二進制數據g(x)除以生成多項式m(x),將最后的余數作為CRC校驗碼,實現步驟如下。

① 設待發送的數據塊是m位的二進制多項式 g(x),生成多項式為r階的m(x)。在數據塊的末尾添加r個0,數據塊的長度增加到m+r位,對應的二進制多項式為G(x) 。

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

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

CRC校驗可以100%地檢測出所有奇數個隨機錯誤和長度小于等于r(r為m(x)的階數)的突發錯誤。所以,CRC的生成多項式的階數越高,誤判的概率就越小。CCITT建議:2048 Kb/s的PCM基群設備采用CRC-4方案,使用的CRC校驗碼生成多項式m(x)=x4+x+1 。采用16位CRC校驗,可以保證在 1014bit碼元中只含有1位未被檢測出的錯誤。在IBM的同步數據鏈路控制規程SDLC的幀校驗序列FCS中,使用CRC-16,其生成多項式m(x)=x16+x15+x2+1;而在CCITT推薦的高級數據鏈路控制規程HDLC的幀校驗序列FCS中,使用CCITT-16,其生成多項式m(x)= x16+x15+x5+1。CRC-32的生成多項式 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用于重要數據傳輸十分合適,所以在通信、計算機等領域運用十分廣泛。在一些UART通信控制芯片(如MC6582、Intel8273和Z80-SIO)內,都采用了CRC校驗碼進行差錯控制;以太網卡芯片、MPEG解碼芯片中,也采用CRC- 32進行差錯控制。

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

2 使用Atmega128生成32位CRC校驗碼

2.1 直接計算法生成32位CRC校驗碼

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

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

用AVR單片機匯編語言實現CRC-32源程序見本刊網絡補充版(http://www.dpj.com.cn)。

2.2 查表法生成32位CRC校驗碼

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

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

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

使用查表法得到32位CRC校驗碼的源程序詳見本刊網絡補充版。

3 實驗結果

為了比較所述兩種32位CRC校驗碼生成方法的特點,分別選取不同字節數的數據段,對兩種方法在不同情況下的效果進行比較,如表1所列。

表1 兩種算法實驗結果對比

以上所有實驗結果均是在AVR Studio4仿真軟件上選用Atmel公司的Atmega128高速嵌入式單片機為實驗設備平臺,在12MHz運行速度下模擬所得。

在調用32位CRC生成表程序以得到32位CRC生成表時,耗時3968.33μs,執行了47620個時鐘周期。從上述實驗結果可得出以下幾點結論。

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

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

③ 雖然實驗結果對32位CRC校驗碼的兩種算法進行了對比,但是所得到的結論也適用于8位、16位、24位CRC校驗碼。

結 語

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

責任編輯:gt

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 單片機
    +關注

    關注

    6035

    文章

    44554

    瀏覽量

    634651
  • 嵌入式
    +關注

    關注

    5082

    文章

    19104

    瀏覽量

    304812
  • 無線
    +關注

    關注

    31

    文章

    5450

    瀏覽量

    173241
收藏 人收藏

    評論

    相關推薦

    如何在IAR Embedded Workbench中配置生成對應代碼區域的CRC校驗碼

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

    CRC校驗碼算法的研究與實現

    CRC校驗碼算法的研究與實現
    發表于 08-06 11:09

    循環冗余校驗碼單片機及CPLD 實現

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

    電話網遠程通信中CRC校驗碼的設計及實現

    本文介紹了基于電話網遠距離分布式測控系統的通信方法,重點介紹了傳輸協議中CRC 循環校驗碼校驗原理,CRC
    發表于 08-12 10:24 ?18次下載

    循環冗余校驗碼---CRC

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

    奇偶校驗碼,奇偶校驗碼原理是什么?

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

    crc校驗基本原理

    本內容介紹了crc校驗基本原理,CRC幾個基本概念,CRC的生成步驟.CRC即循環冗余
    發表于 12-21 16:55 ?4709次閱讀

    CRC校驗碼算法的研究與實現

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

    CRC-16校驗碼生成

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

    crc循環冗余校驗碼算法

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

    薦讀:基于FPGA 的CRC校驗碼生成器

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

    CRC校驗碼的C語言程序免費下載

    本文檔的主要內容詳細介紹的是CRC校驗碼的C語言程序免費下載。
    發表于 04-22 08:00 ?27次下載
    <b class='flag-5'>CRC</b><b class='flag-5'>校驗碼</b>的C語言程序免費下載

    CRC校驗碼并行計算的FPGA實現

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

    02、單片機C語言之CRC32校驗碼

    CRC32校驗碼主要用來檢驗數據傳輸過程中的完整性一、發送方1、計算要發送數據CRC32
    發表于 01-13 12:59 ?9次下載
    02、<b class='flag-5'>單片機</b>C語言之<b class='flag-5'>CRC</b>32<b class='flag-5'>校驗碼</b>

    CRC校驗碼的多種Verilog實現方式

    CRC循環冗余校驗碼(Cyclic Redundancy Check),檢錯碼。
    的頭像 發表于 06-21 15:03 ?3387次閱讀
    <b class='flag-5'>CRC</b><b class='flag-5'>校驗碼</b>的多種Verilog<b class='flag-5'>實現</b>方式
    主站蜘蛛池模板: 日本高清免费看| 欧美午夜精品一区二区蜜桃| 九九热免费在线观看| 久久精品国产免费| 嗯好大好猛皇上好深用力| 日本免费无码A专区在线观看| 神马伦理不卡午夜电影| 亚洲 日韩 国产 中文视频| 伊人激情综合网| 99热久久视频只有精品6| 成年AV动漫| 海量激情文学| 两个人的视频日本在线观看完整| 年轻夫妇韩剧中文版免费观看| 三级网址在线观看| 亚洲永久精品ww47app| 99热久久视频只有精品6国产| 国产精品久久久久激情影院| 久久91精品国产91久久户| 欧美性喷潮xxxx| 亚洲 视频 在线 国产 精品| 自慰弄湿白丝袜| 国产69精品久久久熟女| 九九热在线观看视频| 欧美一区二区视频在线观看| 校园全肉高h湿一女多男| 24小时日本在线| 国产成人精品综合久久久| 久久久久久久久女黄9999| 青草久久久| 亚洲日本欧美天堂在线| 阿力gv资源| 好硬好湿好大再深一点动态图 | 99在线观看精品| 国产久青青青青在线观看| 免费欧美大片| 迅雷成人下载| yellow片高清视频免费看| 金瓶梅 快播| 色久天| 中文无码有码亚洲 欧美|