错误检测的奇偶校验方法
許多系統都使用一個奇偶校驗位作為錯誤檢測的手段,比如我們最常用的串口傳輸就使用了這種校驗方法。
一個奇偶校驗位附加到多位數據中,使得這組數中的1的個數總是偶數或總是奇數。其中,一個偶校驗位使得數據中1的總數為偶數,而一個奇校驗位使得1的總數為奇數。
對于一個給定的系統,要么運行偶校驗,要么運行奇校驗,而不能同時使用這兩者。
比如在進行串口傳輸時,我們要么定義數據為偶校驗,要么定義成奇校驗。對于所接受的每一個多位數據做檢查時,如果是偶校驗,檢查發現收到的數據不是偶數個1,則說明數據發生了錯誤。反之,如果是奇校驗,如果檢查發現收到的數據不是奇數個1,則也說明數據發生了錯誤。
作為對奇偶校驗位怎么附加到數據編碼中的一個說明,下表列出了每個BCD數的奇偶校驗位。
奇偶校驗位可以附加到數碼的開頭或結尾,這取決于系統的設計。注意:1的總數,包含奇偶校驗位上的1,對于偶校驗總是偶數,對于奇校驗總是奇數。?
奇偶校驗位提供了單個位錯誤的檢測機制(或者說是任意奇數個錯誤,但這種概率很低),但是不能檢測一個數據中的兩個錯誤。
比如,我們希望傳輸BCD編碼0101(奇偶校驗可以應用于任何位數,這里使用4位作為說明)。
如果我們想用偶校驗方式來傳輸,則所傳輸的總數碼為00101,如果接受系統只檢測到奇數個1,那么說明數據接收錯誤:
如果我們想用奇校驗方式來傳輸,則所傳輸的總數碼為10101,如果接受系統只檢測到偶數個1,那么說明數據接收錯誤:
那么問題來了,接收系統是通過什么電路來檢測數據含有偶數個或者奇數個1呢?實際上實現方式很簡單:就是博主在verilog專欄內中介紹的單目運算符(位異或^)。
位異或的結果為1,則表明一個多位數據中含有奇數個1.
位異或的結果為0,則表明一個多位數據中含有偶數個1.
確定發送端的奇偶校驗位是發送0還是1也是如此原理~
總結
以上是生活随笔為你收集整理的错误检测的奇偶校验方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: loj121-动态图连通性
- 下一篇: python抓取静态网页