首页
/
每日頭條
/
科技
/
奇偶性的運用及防錯模闆
奇偶性的運用及防錯模闆
更新时间:2025-05-09 13:10:08

大家好,我是痞子衡,是正經搞技術的痞子。今天痞子衡給大家講的是嵌入式裡數據差錯控制技術 - 奇偶校驗。

在系列第一篇文章裡,痞子衡給大家介紹了最簡單的校驗法 - 重複校驗,該校驗法實現簡單,檢錯糾錯能力都還不錯,但傳輸效率實在是不高,在效率至上的大背景下,這種方法是不能容忍的。今天痞子衡繼續給大家介紹另一種也非常簡單但效率較高的校驗法 - 即奇偶校驗法。

一、奇偶校驗法基本原理

1.1 校驗依據

奇偶校驗法的校驗依據就是判斷一次傳輸的一組二進制數據中 bit "1"的奇偶性(奇數個還是偶數個)在傳輸前後是否一緻,所以其實奇偶檢驗法有兩個子類:

奇校驗:如果以二進制數據中 1 的個數是奇數為依據,則是奇校驗

偶校驗:如果以二進制數據中 1 的個數是偶數為依據,則是偶校驗

一般在同步傳輸方式中常采用奇校驗,而在異步傳輸方式中常采用偶校驗。

1.2 奇偶校驗位

為了實現奇偶校驗,通常會在傳輸的這組二進制數據中插入一個額外的奇偶校驗位(bit),用它來确保發送出去的這組二進制數據中“1”的個數為奇數或偶數。

劃重點,奇偶校驗位并不是用來标記原始傳輸數據中 1 的個數是奇數還是偶數,而是用來确保原始數據加上奇偶校驗位後的合成數據中 1 的個數是奇數或者偶數。

1.3 校驗方法

常用的奇偶校驗共有三種:水平奇偶校驗,垂直奇偶校驗校驗和水平垂直奇偶校驗。以對 32 位數據:10100101 10111001 10000100 00011010 進行校驗為例講解:

水平奇偶校驗:對每一種數據的編碼添加校驗位,使信息位與校驗位處于同一行。

奇偶性的運用及防錯模闆(常用的數據差錯控制技術)1

所以加上水平偶校驗位後應傳輸的數據是:101001010 101110011 100001000 000110101

垂直奇偶校驗:将數據分為若幹組,一組一行,再加上一行校驗位,針對每一列采樣奇校驗或偶校驗。

奇偶性的運用及防錯模闆(常用的數據差錯控制技術)2

所以加上垂直偶校驗位後應傳輸的數據是:10100101 10111001 10000100 0001101010000010

水平垂直奇偶校驗:也叫 Hamming Code,其是在水平和垂直方向上進行雙校驗,其不僅可以檢測 2bit 錯誤的具體位置,還可糾正 1bit 錯誤,常用于 NAND Flash裡。這部分不屬于本文要讨論的内容,痞子衡後續會專門介紹 Hamming Code。

1.4 C 代碼實現

實際中水平校驗法應用比較多,此處示例代碼以水平奇校驗為例:

安裝包:codeblocks-17.12mingw-setup.exe

集成環境:CodeBlocks 17.12 rev 11256

編譯器:GNU GCC 5.1.0

調試器:GNU gdb (GDB) 7.9.1

奇偶性的運用及防錯模闆(常用的數據差錯控制技術)3

奇偶性的運用及防錯模闆(常用的數據差錯控制技術)4

奇偶性的運用及防錯模闆(常用的數據差錯控制技術)5

1.5 行業應用

奇偶檢驗比較典型的應用是在串口 UART 上,玩過 UART 的朋友肯定了解串口奇偶檢驗位的作用,包括下位機 MCU UART 驅動的編寫,上位機串口調試助手的設置都需要注意奇偶校驗位。下圖是 UART 傳輸時序圖,奇偶校驗位是可選位,僅當使能時才會生效。不過作為嵌入式開發者,倒不必關注奇偶校驗的具體實現,因為 MCU 的 UART 模塊已經在硬件上支持了奇偶檢驗,我們隻需要操作 UART 對應寄存器的控制位去使能奇偶檢驗功能即可。

二、奇偶校驗法失效分析

在現實數據傳輸中,偶爾 1 位出錯的機會最多,2 位及以上發生錯誤的概率比較低,且由于奇偶校驗實現簡單,具有相對理想的檢錯能力,因此得到廣泛使用。但奇偶校驗法有如下 2 個明顯的缺陷:

奇數位誤碼能檢出,偶數位誤碼不能檢出

不能糾錯,在發現錯誤後,隻能要求重發。

前面講的兩種校驗法實際上更多是針對 byte 傳輸校驗,而在實際應用中我們校驗的對象往往是數據包 packet,有沒有其他比奇偶校驗法更好且針對 packet 的檢錯方法呢?痞子衡在下篇會繼續聊。

至此,嵌入式裡數據差錯控制技術之奇偶校驗痞子衡便介紹完畢了,掌聲在哪裡~~~

,
Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
推荐阅读
為什麼可以用不同公鍊地址注冊DAS賬戶
為什麼可以用不同公鍊地址注冊DAS賬戶
這是DAS超越其他去中心化域名/賬戶系統的獨特之處。事實上,不光可以使用所有公鍊地址注冊DAS賬戶,你甚至可以使用普通的郵箱來注冊/持有/管理DAS賬戶。并且,技術上是完全去中心化的,不需要信任任何中心化組織。這得益于DAS所依賴的NervosCKB公鍊,相關的技術細節可以參考BTC地址如何管理CKB鍊上的資産。BTC地址如何管理CKB鍊上的資産首先,這不是通常意義上的跨鍊通常意義上的跨鍊是指,在
2025-05-09
防火牆怎麼關
防火牆怎麼關
1、首先打開電腦開始菜單,找到并選擇控制面闆。2、選擇系統和安全,找到并打開windows防火牆,可...
2025-05-09
凱美瑞自動擋起步和停車步驟
凱美瑞自動擋起步和停車步驟
1、凱美瑞起步的正确步驟:踩刹車-點火-挂D擋(或R擋)-松手刹-松腳刹-踩油門-起步2、凱美瑞停車的正确步驟:踩刹車-拉手刹-挂P擋-熄火3、凱美瑞停車時必須等車輛完全停穩後,才能把擋位挂到P擋,否則易傷變速箱。
2025-05-09
微信支付分開通成功通知是什麼意思
微信支付分開通成功通知是什麼意思
1、微信支付分開通成功通知意思是告知微信支付分已經開通,可以使用微信支付分業務了。2、微信支付分是對...
2025-05-09
凱美瑞用什麼尺寸輪胎
凱美瑞用什麼尺寸輪胎
1、從汽車網凱美瑞的詳細配置表可以了解,新一代凱美瑞輪胎規格配置:輪胎尺寸:215/60R16标準版入門級)215/55R17。2、2012款駿瑞2.5SNavi淩動導航版在輪圈方面,兩款車采用了完全不同的輪圈。首先,凱美瑞标準版采用多條輻輪圈設計。而駿瑞車型的五輻輪毂,凸顯了動感的外觀,給人以強烈...
2025-05-09
Copyright 2023-2025 - www.tftnews.com All Rights Reserved