在數字通信系統中,模拟信号将轉變為數字序列。
這種位序列被稱為"數據流",傳輸過程中某個比特可能就會發出錯位,1個比特的錯誤也會導緻數據輸出的災難性(重大)誤差。
圖1 傳輸的01比特流
幾乎在所有的電子設備中,我們都會發現錯誤,所以我們使用差錯檢測和校正技術來獲得精确的輸出。
常見的錯誤方式數據在傳輸期間(從發射器到接收器)可能被損壞。它可能受到外部噪音或其他信道的影響。在這種情況下,輸入數據與接收到的輸出數據不相同。這種不匹配的數據被稱為"錯誤"。
數據錯誤将導緻重要/安全數據的丢失。即使是數據中的一點變化也可能影響整個系統的性能。通常,數字系統中的數據傳輸将以比特傳輸的形式進行,在這種情況下,數據錯誤可能在0和1上發生。
圖2 通信傳輸過程
在數據序列中,如果1改為0或0更改為1,則稱為"位錯誤"。在從發射機到接收機的數據傳輸中,通常會出現3種類型的誤差,它們是:
整個數據序列中一位比特的變化稱為"單比特錯誤"。在串行通信系統中,單比特錯誤的發生概率相對較少。這種錯誤通常發生在并行通信系統中,由于數據在單線上以位的方式傳輸,每條單線上有可能産生噪聲。
圖3 單比特錯誤
多比特錯誤Multiple bit errors如果發送器到接收機的兩個或多個數據序列發生變化,則稱為"多比特錯誤"。這種錯誤既發生在串行型數據通信網絡中,也發生在并行型數據通信網絡中。
圖4 多個比特錯誤
突發錯誤Burst Errors數據序列中比特集合的變化稱為突發錯誤。計算突發誤差,要從改變的第一位bit到最後一位改變的bit。
圖5 突發的比特錯誤
在圖5,第4位和第6位之間的數字也被認為是誤差。這些位被稱為"突發錯誤"。這些突發比特在發送器和接收機之間都會發生變化,這可能會導緻數據序列中的一個重大錯誤。這類錯誤發生在串行通信中,很難解決。
差錯檢測碼Error Detecting Codes在數字通信系統中,誤差随數據從一個通信系統傳輸到另一個通信系統。如果沒有檢測和糾正這些錯誤,傳輸的數據将會丢失。為了進行有效的通信,數據的傳輸應該是高度精确的,可以通過檢測錯誤,然後再進行修正來實現。
差錯檢測是指在通信系統中,對從發射機發送到接收機的數據中存在的誤差進行檢測的過程。我們使用一些冗餘碼來檢測這些錯誤,在從源(發送器)發送數據時增加數據。這些代碼被稱為"錯誤檢測代碼"。
差錯檢測編碼有許多中,今天給大家介紹三種簡單的,也是經典的三種:
奇偶校驗位是發送數據之前添加到發送器數據中的附加比特。
在添加奇偶校驗位之前,計算數據中1或0的數目。然後,中添加一個額外的位。
圖6 奇偶校驗
在數據中添加奇偶校驗位将導緻數據字符串長度的變化。如果我們有一個7位數據,那麼在向數據二進制字符串中添加一個奇偶校驗位之後,它将變成一個8位二進制數據字符串。
奇偶校驗也稱為"垂直冗餘檢查(VRC)"。有兩種類型的奇偶校驗位,它們是
偶校驗:
如果數據中1的個數為偶數,則奇偶校驗位為0。例如:10000001>奇偶校驗位0。
如果數據中1的個數為奇數,則奇偶校驗位為1。例如:10010001>奇偶校驗位1。
偶校驗的作用就是:加上奇偶校驗位後,1的個數均為偶數個。
奇校驗:
如果數據中1的個數為奇數,則奇偶校驗位為0。例:10011101->奇偶校驗位0。
如果數據中1的個數為偶數,則奇偶校驗位為1。例:10010101->奇偶校驗位1。
奇校驗的作用就是:加上奇偶校驗位後,1的個數均為奇數個。
将奇偶校驗比特添加到發射機數據的電路稱為"奇偶發生器"。奇偶校驗比特被發送并在接收器處被檢查。如果發射機處發送的奇偶校驗比特與接收端接收的奇偶校驗比特不相等,則檢測錯誤。在接收端檢測奇偶校驗的電路稱為"奇偶校驗器"。
圖7 奇偶校驗舉例
Cyclic Redundancy Check (CRC)循環冗餘校驗(CRC)也是多項式編碼Polynomial Code
多項式編碼的思想是:将位串看成是系數為0或1的多項式。CRC校驗保護的單位是數據塊。數據塊的大小根據實際情況而定。每一個數據塊均被看作是一個二進制多項式,即所有系數均為二進制(即1或0)的多項式。
當使用多項式編碼時,發送方和接收方必須預先商定一個生成多項式(Generator Polynomial)G(x)。生成多項式的最高位和最低位必須為1。
從性能上和開銷上考慮,CRC均遠遠優于奇偶校驗及算術和校驗等方式。因而,在數據存儲和數據通訊領域,CRC無處不再:WinRAR,通用的圖像存儲格式GIF、TIFF都用CRC作為檢錯手段。
将待發送的位串看成系數為0或1的多項式
收發雙方約定一個生成多項式G(x),其最高階和最低階系數必須為1.
發送方用位串及G(x)進行某種運算得到校驗碼,并在幀的膜外加上校驗碼,使帶校驗碼的幀的多項式能被G(x)整除。
接收方收到信息後,用G(x)除多項式,若有餘數,則傳輸有錯。
圖8 CRC生成的過程
舉一個栗子,見圖8
發送數據1001。
生成多項式G(x)=x^3 x 1,4個比特bits。
将要發送的數據系列左移3位,新的序列為1001000。
按模2算法,将生成的新序列除以生成多項式。
将餘數多項式比特序列加到新的序列中即得發送端傳送序列。
接收方可以直接用接收到的序列除以生成多項式G(x),如果餘數R(x)=0,則正面傳輸正确。
Longitudinal Redundancy Check縱向冗餘校驗(法);
在縱向冗餘方法中,以表格格式(行和列)排列一些比特塊,然後分别計算每列的奇偶校驗位。這些奇偶校驗位的集合就是這些比特塊的校驗碼。
縱向冗餘校驗是一種逐位奇偶校驗,因為我們單獨計算每一列的奇偶校驗。
該方法可以很容易地檢測出突發錯誤和單比特錯誤,但不能檢測出在同一垂直切片中發生的2位錯誤。
圖9 LRC生成過程
總結好了,三種差錯檢測編碼介紹完了,下一步就是糾正錯誤的編碼了。先檢測,後糾正。
糾錯碼(error correcting code),在傳輸過程中發生錯誤後能在收端自行發現或糾正的碼。僅用來發現錯誤的碼一般常稱為檢錯碼。
糾錯碼也有很多種,比如說經典的分組碼(Hamming Code),卷積碼等。
分組碼和卷積碼不但可以用來糾正獨立錯誤,而且可以用來恢複删除錯誤和糾正突發錯誤。如 分組碼中有裡德-索洛蒙碼,法爾碼等;卷積碼中有岩垂碼及擴散卷積碼等。
由于篇幅有限,如果同學們感興趣,可以自行學習哦。班長會在後期詳細下介紹糾錯碼。
看到這裡,為班長點個贊吧!歡迎在評論區留言讨論!
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!