基本卷積編碼示例
- 本頁以示例說明了基本卷積編碼如何在糾錯中工作。描述了一個基本的硬判決維特比解碼器。對於熟悉該主題的人來說,它處理來自速率為 1/2,約束長度為 3 的編碼器的程式碼。生成多項式為 111 和 110,或者更簡單地說,在八進位制形式中為(7,6)。格狀圖用於三個示例,一個顯示無錯誤狀態,另一個顯示如何清除錯誤,以及一個解碼器無法完成其任務的示例。另一個頁面上提供了一個用於基本 VBA 模擬器 的程式碼模組,以供進一步學習.
- 目的是逐步解釋如何進行基本設計。

- 通道噪聲引起的錯誤,特別是加性白噪聲 (AWGN),通常透過糾錯軟體來避免。卷積編碼廣泛用於此目的的資料通道。它最適合與其他糾錯方法結合使用,並且可以將錯誤幾乎完全消除。
- 卷積編碼的一個優點是它不是為固定塊大小而設計的,而是可以快速適應可變塊長度。然而,它不適用於連續流,因為評估必須到達塊的末尾才能進行糾正。在實踐中,塊大小可以從幾個位到幾千個位不等,每個塊長度都與不同的處理延遲相關聯。
- 卷積編碼方案需要匹配的編碼器和解碼器。雖然實現略有不同,但編碼器和解碼器的演算法必須相同。每個都必須包含關於最有可能發生的轉換的特定知識。正是這種潛在的假設允許對預期訊息進行最佳估計。它們的糾錯能力不同,並且已知某些設計優於其他設計。在形成編碼輸出時使用更多複雜性的編碼方案往往更擅長糾正錯誤。
- 維特比解碼器用於我們的示例。它大量使用了漢明距離的概念。這是接收到的資料塊與某個預期塊不同的程度。例如,可以將兩個資料字對齊並逐位比較。不同的位數就是漢明距離,距離越大,錯誤越多。解碼器使用格狀圖進行描述,並且在網路中的各個點確定成對位的距離。在每個節點計算的距離是實際接收到的輸入與可能意圖的最可能可能性之間的距離。然後使用它們的累積值來找到整個格狀圖中的最小距離路徑,以識別最可能意圖的資料。修辭地說,解碼器根據它對編碼方式的瞭解來決定接收到的資料是否可能:同時,它提出一個它認為最可能原始訊息的版本。這種方法是最大似然決策的一個例子。
- 在一些關於該主題的文字中,最小漢明距離的概念已被最大接近度所取代,其中計算過程僅略有不同。在任何情況下,兩種方法獲得的結果都是相同的。這裡,我們專注於漢明距離,因為它似乎是最常用的。打算使用 VBA 模擬器程式碼的使用者應該知道,用於距離和接近度輸出的程式碼模組已在其自己的頁面上準備好了。參見VBA 中的維特比模擬器 (接近度) 和VBA 中的維特比模擬器 2 (距離) 以瞭解編碼詳細資訊。
- 硬決策意味著在兩個值之間進行狹窄的選擇;在本例中是在二進位制 1 或 0 之間。另一種方法也用於某些應用程式,即軟決策,其中考慮了更多的分級值。軟決策可以產生比使用硬決策更低的錯誤率,儘管對於主題的介紹來說可能過於複雜。

卷積編碼器的實現如圖 1 所示。編碼器的完整狀態表如圖 3 所示。圖 2 中可以找到狀態圖,該圖針對維特比過程進行了修改,只有四個相關狀態。這裡提供了關於編碼器的基本說明
- 移位暫存器級數 (m)。這裡 m = 3。在每個時序間隔,輸入位被逐級步進到暫存器級並穿過暫存器級。按照慣例,在資料塊的末尾新增額外的零位,以確保暫存器以其內容為零結束,從而使生成的輸出完整。這些額外的位稱為沖洗位。
- 有兩個門控輸出流。模 2 加法器從移位暫存器輸出產生單獨的流。然後將這兩個流合併成一個流。首先,從頂部取一位,然後從底部取一位,依此類推,直到輸出完成。模 2 加法器的普遍行為如下
- 奇數個邏輯1 輸入產生邏輯1 輸出。
- 偶數個邏輯1 輸入產生邏輯零 輸出。
- 沒有邏輯1 輸入(全部為零),輸出為零。
- 加法器組合決定行為。加法器的特定暫存器輸出選擇和暫存器級數都非常重要。
- 選擇的加法器輸入被描述為 g(t) = (1,1,1) 用於頂部加法器,g(b) = (1,1,0) 用於底部加法器。可以注意到,邏輯1 表示加法器使用了相應的暫存器輸出,邏輯零表示它沒有使用。這些表示式被稱為生成多項式。並非所有選擇都提供良好的糾錯,即使對於具有相同速率的編碼器也是如此。在具有相同 (n,k,m) 屬性(使用不同的加法器輸入)的編碼器集中,被稱為顯示最佳距離的編碼器將為該複雜性提供最佳結果。例如,在集合 (2,1,3) 中,配置 (7,6) 的糾錯能力比 (7,5) 差,而 (7,5) 又比 (13,17) 差,其自由距離分別為 4、5 和 6。
- 約束長度,L。對於此編碼器,L = 3。該術語的定義多種多樣,但最常被簡單地定義為暫存器級的數量。如果第一個級輸入本身連線到加法器,則這也將被計入;例如,如果初始輸入也被使用,則一個兩級暫存器可以具有三個約束。顯然,行末未使用於加法器的任何暫存器級將不被計入。更大的約束長度會帶來更好的糾錯率。
- 編碼器速率為 1/2。也就是說,對於每個輸入位,有兩個輸出位。它可以表示為 k/n = 1/2,其中 k 是每次時序步長從輸入中取出的位數,n 是作為結果產生的輸出位數。
- 編碼器配置為 (n,k,L) = (n,k,m) = (2,1,3)。請注意,當考慮特定輸入的組合時,許多其他變體也可以具有 (2,1,3) 配置。
- 編碼器的輸入-輸出步驟如下。(請注意,第一個輸入位由箭頭標識)
- 在時間為零時,在接收任何輸入之前的起始狀態,暫存器輸出均為零,並且編碼器輸出可以忽略不計。
- 當第一個位元,一個邏輯1,被送入暫存器s0時,移位暫存器狀態從000變為100。因此,頂部加法器的輸出變為1,底部加法器的輸出變為1。然後將這兩個輸出組合起來,形成輸出對11。
- 經過一個時間間隔後,下一個輸入位元,一個零,被送入s0,它之前的內容移動到s1。s1之前的內容移動到s2,s2之前的內容丟失。
- 暫存器狀態從100變為010,並根據暫存器的新的狀態形成新的輸出。(再次為11。)
- 這種步進以離散的時間間隔持續進行,直到最後一個輸入位元產生其輸出。
- 具體而言,就示例設定而言,輸入流10110...產生輸出流1111010001....
- 如果在任何輸入資料中新增三個額外的沖洗零,則輸出將變長六位,並且始終以零結尾。在這種情況下,輸出變為1111010001(100000)。

圖 3 的表格總結了編碼器可能存在的每種輸入、輸出和暫存器狀態組合。考慮第三行資料。修辭地,這行可能讀作
- 輸入狀態: ‘’當暫存器的輸入狀態目前為001...‘’
- 輸入位元: ...‘’並且邏輯零的輸入位元被送入暫存器s0...‘’
- 輸出位元: ...‘’輸出位元對變為00...‘’
- 輸出狀態: ...‘’新的暫存器狀態變為000。‘’
- 狀態轉換: ‘’使用圖 2 中狀態圖上新定義的狀態,轉換是從狀態a到自身‘’。
表中的每一行資料都可以用類似的方式解釋。該表除了解釋所有可能的編碼器行為之外,還用於佈置相應的解碼器格狀圖。圖 2 的狀態圖提供了相同資料的圖形佈局。
圖 2 的狀態圖顯示了編碼器可能存在的所有輸入、輸出和狀態轉換。在這個版本的狀態圖中,只有四個狀態。雖然從技術上講,一個三級移位暫存器有八種可能的狀態 (23),但它們已被重新定義為只有四個。
為了以這種方式修改狀態,我們將八種可能的狀態重新分組為四個,方法是注意到它們在它們的前兩個暫存器位置中共享共同的值。發現的共同值當然是 00、01、10 和 11。為了方便起見,這些依次被標記為狀態 a、b、c 和 d。透過注意到圖 3 表格中三位狀態在其前兩位數字中的開頭,可以完成第五列,以識別存在的轉換型別。發現四個新狀態之間只有八種不同的轉換可能。這些顯示在圖 2 的狀態圖中。
- 按如下方式閱讀狀態圖
- 移位暫存器狀態。這由每個橢圓形內部寫的數字和字母給出。在每種情況下,透過一條箭頭的連線,從一種狀態轉換到另一種狀態。
- 導致轉換的輸入位元。這是由指向遠離當前狀態的箭頭線型別給出的。如果該線是點線,則輸入為邏輯一,如果該線是實線,則輸入為邏輯零。
- 轉換產生的輸出。輸出數字對顯示在指向遠離當前狀態的箭頭線旁邊..
- 示例。考慮圖 3 表格中的第四行資料,以及圖 2。這第四行資料將轉換識別為從a到c。在狀態圖上,相同的轉換顯示為輸入為 1(點線箭頭線)和輸出為 11(在旁邊),與表格一致。所有其他狀態以類似的方式讀取。



解碼器的工作原理及其糾錯功能在此透過使用格狀圖來說明。參見圖 4、5 和 6。
- 實現的目標是找到一條最小差值路徑。這被稱為回溯路徑,並在圖中以紅色繪製。它連線每列中的節點,這些節點本身代表到該點的最佳估計。這些節點的最佳估計被稱為它們的指標。它們是最低漢明距離的累積值。
- 預期輸入的最佳估計,不一定是解碼器在r中接收到的那個,可以透過注意回溯路徑的某些特徵來找到。這些包括沿行進路徑(或邊)的輸出值,以及元件部分是否位於上下分支(綠色或黑色)上。
- 一半的支路必須被丟棄作為回溯路徑路線。這些可以在圖中以灰色顯示。回溯路徑從最後一列中最低指標沿著允許的支路(倖存者路徑)繪製到格狀圖中的零點。由於其他列中的最低點可能是模稜兩可的,也許都是一樣的,因此回溯路徑不能單獨依賴於這些值。正是正確丟棄支路將允許的回溯路徑路線減少到一條。正是這種見解使安德魯·維特比能夠制定他的方法。
從狀態表準備格狀圖的方法如下:參考圖 4。
- 格狀圖中的時間轉換從左側開始,並逐步向右進行。
- 編碼器狀態顯示在格狀圖左側的一列中。這裡,這些是a、b、c 和 d,但對於四級編碼器,將有八個這樣的狀態。
- 感興趣的資料流包括以下內容
- 流 r,在圖的頂部,是解碼器將處理的接收資料。此流用於計算指標。由於噪聲的影響,它可能包含錯誤,並且不一定與離開編碼器的流相同。
- 流 r*,在圖的底部附近,是r的格狀圖修改版本。這些對與回溯路徑邊緣上的輸出值匹配。即使訊息輸出已糾正,這些值也可能與r不同。
- 流 m,是作為編碼器輸入的原始訊息位元流。它可能在末尾有額外的沖洗零,但本質上是相同的資料。
- 流 m*,是解碼器對解碼訊息應是什麼的版本。只有當流m在其整體上等於m*時,才能宣佈解碼訊息無錯誤,儘管在實踐中,一些位元錯誤可能會被糾正,而另一些則不會。流r*不能依賴於此目的。顯然,流m*必須按面值接受,因為在測試環境之外,沒有辦法知道原始訊息。
- 將詳細資訊轉移到格狀圖是使用圖 3 的狀態表和圖 2 的狀態圖完成的。指標計算從狀態“a”的最左側位置開始,並繼續進行每個節點的計算。在最初的幾次轉換之後,佈局模式一直對稱到結尾;這是一個對程式設計師有用的事實。
- 分支在描述中是不同的,無論是傳入還是傳出。顯然,傳出分支從單個節點發散,而傳入分支從另外兩個節點匯聚到一個節點。前兩次轉換的指標已計算,但免於丟棄標記。
- 傳出分支進一步被識別為下和上。這些上分支轉換是由輸入零引起的,而下分支轉換是由邏輯一引起的。知道這一點可以使回溯產生其m*輸出。
- 傳入分支是在計算指標時考慮的。計算節點的指標比較了每個傳入分支找到的累積總數,然後取兩個總數中的較小者。然後丟棄兩個分支中較大的那個。
- 指標的計算以及丟棄分支的標記必須在產生任何輸出之前完成。
在整個格狀圖中,度量的計算方式相同;從最左邊的零點開始,逐列向右計算每個節點的度量。發現最佳工作序列為
- 僅考慮每個節點的傳入分支,即在節點處匯合或從左側到達的分支。
- 將每個傳入分支的邊值與該轉換的接收輸入 (r) 進行比較,並獲得它們的漢明距離。這僅僅是它們之間不同的位數。例如,01 和 11 有一個位不同,而 01 和 10 有兩個不同,等等。可能的距離範圍顯然從零到二不等。
- 將每個分支的漢明距離加到它們之前的總和中,然後比較這兩個結果。
- 選擇較小的總和作為該節點的度量。這成為存活分支。如果碰巧兩個分支都提供相同的總和,那麼任意選擇其中一個;在示例中,當這種情況發生時,總是選擇傳入的上部分支。
- 標記另一個分支,即較高總和的分支為丟棄。丟棄的分支示例在圖中以灰色顯示。丟棄分支會阻止它成為反向路徑的一部分。這也適用於分支度量相等的情況。事實上,當有兩個傳入分支時,其中一個必須始終被標記為丟棄。顯然,在第一階段和第二階段,如果一個節點只有一個傳入分支,那麼該分支將形成結果,並且不需要考慮丟棄。
- 當列中的每個節點都有其總和時,移至下一列並繼續該過程。

請參考相鄰的圖 4 摘錄中的示例。該摘錄中未標記的行應從上到下標記為狀態“a”到“d”。現在,假設要計算第二列中第二級節點的度量(狀態 b)。此轉換的傳入分支來自狀態c 和d,它們之前的總和均為 2。上部分支的邊值為11,下部分支的邊值為01。轉換的接收輸入 (r) 在圖的頂部顯示為01。
- 對於上部分支,狀態c 到b;
- 邊值 (11) 和階段輸入 (01) 之間的距離僅為1,因為它們之間只有一個位不同。
- 將上部分支的先前總和2 加到該距離,得到2 + 1 = 3。這是上部分支的度量。
- 對於下部分支,狀態d 到b;
- 邊值 (01) 和階段輸入 (01) 之間的距離僅為0,因為它們之間沒有位不同。
- 將下部分支的先前總和2 加到該距離,得到2 + 0 = 2。這是下部分支的度量。
- 選擇2 作為這兩個度量中較小的一個,我們可以將其寫入節點中(如圖所示)。
- 在本例中,選擇了下部分支,因此上部分支必須標記為丟棄。它已塗成灰色。
- 格狀圖中的所有節點都以相同的方式計算。
標記度量和丟棄後,可以找到回溯路徑。該過程如下所示
- 移至格狀圖最右側的最後一個轉換列,並選擇度量值最低的節點。在成功的情況下,該列中將有一個明確的最小值。如果該列中最低值重複,則可能是格狀圖擴充套件不夠遠,或者省略了沖洗位。這也可能意味著應該預料到錯誤。當存在此類重複時,任意選擇其中一個。(因為必須生成某些輸出。)
- 從初始選擇開始,沿著允許的分支從一個轉換移至下一個轉換,直到到達零點。在成功的情況下,如果不存在錯誤或錯誤已被更正,則將涉及連線每個列中的最低值。這並不意味著在最後一個轉換以外的轉換中,每列僅包含一個這樣的低值,而是存活分支(允許的分支)將透過正確的分支引導回溯路徑。
- 考慮回溯邊緣的方向。其中一些(即外向較低分支)對應於邏輯一。另一些(即外向較高分支)對應於邏輯零。解釋回溯路徑上的這些分支方向,以獲得解碼器輸出 (m*) 的最佳估計。理想情況下,這是最初編碼的原始訊息 (m)。
- 如果找不到明確的最小值作為起點,則不太可能在格狀圖中找到明確的路徑。在這種情況下,由於缺乏更好的知識,輸出仍然必須被接受為最佳估計。


圖 4、圖 5 和圖 6 給出了三個帶有示例的圖。
- 當解碼器輸入沒有錯誤時,例如圖 4 的情況,解碼後的輸出流 (m*) 與最初編碼的輸入 (m) 相同。需要注意的是,格狀圖的每一列都存在一個明顯的最小值,並且只有一個。這是沒有錯誤情況的典型特徵。
- 可以糾正合理的錯誤,例如圖 5 的情況。在本例中,解碼器輸入的兩個輸入錯誤已被糾正。這裡的錯誤,一個是位位置三,另一個是位位置十,它們之間有六個無錯誤位。對於此特定配置,此間隔是最小間隔,可以保證始終有效。也就是說,它不僅適用於此特定輸入,而且也適用於隨機分配的流量。這兩個錯誤總是會被糾正。
- 此關鍵間隔對於長位元包也適用。如果在長流的整個長度內植入錯誤,並且錯誤之間至少有六個無錯誤位,那麼所有錯誤都將被糾正。當然,問題在於不能依賴錯誤以這種方式進行間隔。在最好的情況下,錯誤會隨機分佈在整個傳輸過程中。因此,在現實世界中,這個六位無錯誤間隔會不斷受到影響。
- 因此,一些錯誤放置將無法糾正,如圖 6 的情況所示。這裡,再次存在兩個錯誤,但它們之間只有五個無錯誤位,分別位於位位置三和九。也就是說,它們比前一個示例中的錯誤只近了一位。解碼器無法糾正我們特定輸入流中的所有錯誤。事實上,如果我們透過對隨機訊息進行編碼來更改輸入流,並在這些位置(塊或流)中引入錯誤,那麼錯誤糾正將在 50% 的情況下有效。在另外一半情況下,就像我們的輸入示例一樣,解碼後的訊息 m* 中將返回錯誤。在其他情況下,解碼器的行為似乎會發生變化,當選擇偶數位進行錯誤而不是奇數位進行錯誤時。只有當無錯誤間隔為六位或更多位時,錯誤糾正才能始終有效,而與這些輸入和放置例外無關。
- 剩餘錯誤的機率因此與存在重疊這些間隔的錯誤的可能性有關。隨著通道位元錯誤率 (BER) 增加,這種重疊的可能性也會增加,直到達到卷積編碼本身變得不太有用的點。這種錯誤糾正改進接收訊息的程度涉及系統中的許多其他元件,但就解碼器本身而言,改進可以看作其輸入 BER 與輸出 BER 之間的關係。輸入 BER 表示來自線路的受噪聲影響的資料,輸出 BER 與訊息本身的殘餘錯誤相關。參考圖 8 檢視這些示例中編碼配置的模擬結果圖形。
- 軟體可以模擬系統的錯誤糾正。這樣一個程式用於模擬此頁面上描述的編碼。有關 VBA 程式碼模組,請參閱 VBA 中的維特比模擬器。總體安排包括為編碼器程式生成隨機輸入流量。然後,不是將編碼器輸出連線到解碼器程式的輸入,而是先對位元流進行預定比例的錯誤處理。透過監控解碼器的輸入錯誤率和解碼後的訊息中的輸出錯誤率,可以瞭解這種系統帶來的改進。圖 8 顯示了兩個此類測量結果的資料集;一個用於示例 (111,110) 配置,另一個用於 (111,101) 配置。這些結果是使用相對較小的樣本獲得的,即每個資料點有一百萬位元的訊息流量,但是,降低錯誤率時效能的改進得到了清晰地證明。集中在我們的示例 (111,110) 配置(藍色結果)上,我們注意到
- 當輸入 BER 為 10%(科學記數法中的 1E-1)時,輸出 BER 稍微降至 8E-2,降幅為 1.25。這接近系統有用性的極限,即所謂的編碼閾值。事實上,對於輸入 BER 為 20%(2E-1),輸出錯誤在 BER 30%(3E-1)時超過了輸入錯誤。錯誤糾正本身無法處理這種情況,需要進行其他系統更改。
- 將輸入 BER 降低十倍至 1%(1E-2)後,情況變得更好。輸出 BER 降至 6E-4,或每 10,000 個訊息位元中出現六個錯誤。這對應於約 17 倍的改進幅度。
- 將輸入 BER 再次降低十倍至 0.1%(1E-3)後,輸出 BER 變成 4E-6,或每百萬個訊息位元中出現四個錯誤。這是一種好得多的效能,改進幅度為 200 倍。
- 將輸入 BER 降至 0.1% 以下(1E-3)後,可以獲得實際上完美的輸出,其錯誤率需要更長的測試才能測量。
- 其他配置有不同的行為。 上面的這些註釋當然是為了示例中使用的 (7,6) 配置而設計的。這意味著頂部生成多項式是八進位制 7 或二進位制 111,底部是八進位制 6 或二進位制 110。當底部多項式從二進位制 110 更改為八進位制 5 或二進位制 101 時,錯誤校正結果會更好。 (7,5) 配置可以處理塊中的任何兩個錯誤,無論它們之間的間距如何,並且如果間距足夠大,直到下一個錯誤,它通常可以做得更好。當輸出 BER 為 0.004 (0.4%) 時,這導致輸出 BER 比以前配置提高了 50 倍。請注意,在這些示例中,所有錯誤都是隨機應用的,以最大程度地模擬通道中白噪聲的影響。還存在其他型別的噪聲,更現實的模擬將考慮這些噪聲。請參見圖 8 中兩種配置的比較結果。

- 災難性配置也存在。它們本身會產生非常高的錯誤,或者像速率 1/2 配置 (6,5) 一樣,根本無法實現。當給定轉換可能出現兩種結果時,就會出現此類問題。請參見圖 9 中 (6,5) 配置的狀態圖。該主題在其他地方有很好的介紹,但要完全理解,需要了解多項式表示式以及識別其中的公因式。
- 高水平的隨機錯誤 _確實_ 會造成麻煩,但最糟糕的是噪聲 _脈衝_ 引起的錯誤集中。為了對抗這些錯誤 _突發_,採用了一種稱為 _交織_ 的過程。請參見圖 7。此過程將大多數在緊密叢集中發現的錯誤分開,將其分佈為單個錯誤,這些錯誤更容易校正。交織功能透過逐行將資料塊讀入矩陣,然後逐列讀出資料來實現。然後,行和列長度的設定決定了連續資料位在通道流中分佈的程度;所謂的交織 _深度_。接收器中的一個補充過程將資料重新組裝到其預交織狀態,準備進行卷積解碼。當卷積解碼器 _確實_ 無法進行校正時,它們本身會在輸出端 _產生_ 錯誤突發。裡德-所羅門解碼可以很好地處理突發錯誤,因此使其緊隨維特比解碼器之後。 _交織_、_卷積編碼_ 和 _裡德-所羅門編碼_ 的組合可以產生非常低的錯誤率。
- 每種配置對錯誤突發的容忍度不同。 我們的 (7,6) 示例根本無法處理錯誤突發。也就是說,它不能一致地處理緊密的一對錯誤;實際上,它最多隻能在 _大約_ 一半的時間內校正一對錯誤中的兩個錯誤。某些配置,如 (7,5),可以管理在資料流中清除一對錯誤,前提是錯誤對的間距足夠遠。在這種情況下,一個 _只有_ 這樣的對的測試需要它們之間的間隙在 12 到 14 個位元左右,才能完全校正。即使那樣,也只有在經過大約六個無錯誤位元的起始執行後才能做到這一點。這種合格的突發性能,就像所有錯誤校正一樣,與每個配置的 _最小自由距離_ 有關,(7,6) 的最小自由距離為 4,(7,5) 的最小自由距離為 5。增加此值以及所用演算法的複雜度共同提高了系統整體的錯誤校正能力。
- BER 和開銷是相關的。 錯誤校正的效能通常與 _開銷_ 百分比一起給出。這是衡量網路提供商在將資料傳輸到某個規定質量級別時所用資源的量度。當鏈路的質量很高時,_可能是_ 因為大部分資料正在被髮送兩次或更多次。因此,在實際系統中,與模擬相反,會引用 _開銷_ 來指示為了保持現有的質量輸出需要進行多少返工。例如,非常高的開銷可能表明網路供應商需要更多地關注編碼增益或頻率選擇。
儘管這裡的示例使用了 (7,6) 配置,但 (7,5) 配置通常在其他地方使用。下面下拉框中提供了該配置的一些基本講義圖。透過左鍵單擊原始影像,可以在維基共享資源中以其完整尺寸檢視它們。這位作者還發現,硬複製工作表對於揭露想法很有用,因此在相鄰的下拉框中包含了兩種配置的空白格狀圖。
|
卷積編碼配置的 _最小自由距離_ (Df) 是衡量其糾錯能力的指標。在一般錯誤校正和處理錯誤簇方面,較高的值比較低的值給出更好的結果。它關注的是路徑的 _權重_。路徑的權重只是沿著其邊緣找到的邏輯 _1_ 位的數量。但是,我們關注的是兩點之間 _最小_ 權重路徑。雖然可以使用格狀圖來確定 _Df_ 值,但狀態圖可能是最容易使用的:請參考圖 2 的狀態圖。
- 從狀態圖來看,我們注意到輸出對值出現在每條邊上。我們感興趣的路徑是那些從零節點開始,在同一零節點結束,只沿著一個方向的箭頭前進的路徑。不考慮自迴圈,有兩條這樣的路徑;_acba_ 和 _acdba_。_acba_ 路徑上的輸出值是 (11,11,10),總共有 _五個_ 1,而 _acdba_ 的輸出值是 (11,00,01,10),只有 _四個_ 1。因此,_acdba_ 路徑是 _最小_ 距離路徑,Df 值為 _四個_。
- 配置的錯誤校正能力 Ce, 是可以清除的最大錯誤數量 _在與自由距離等長的位元塊中_。這裡不應該計算清除位。_對於更長的位元塊_,清除的錯誤數量 _可能_ 會超過此數,_進一步_ 的錯誤 _也可能_ 會發生。當自由距離值包含分數時,只有整數部分是可靠的,而小數部分意味著校正的錯誤數量只能在 50% 的可能的輸入序列中四捨五入。錯誤容量作為對不同配置的粗略比較很有用。它表示為
Ce = (Df - 1)/ 2
其中 Df 是自由距離。
- 因此,(7,6) 配置的錯誤校正能力為 1.5。。也就是說,它可以在短塊中清除一個錯誤,但不能一致地清除兩個錯誤。另一方面,已知 (7,5) 配置的 Df 為 _五個_,因此它的錯誤清除能力為 2;略好於 (7,6)。這些事實很容易透過模擬器實驗得到證實。請參見 VBA 2 中的維特比模擬器,它是在 Excel 中執行的模擬器。這兩個配置在處理單個錯誤方面都很好。在處理短塊中的 _兩個_ 錯誤時,(7,6) 最多隻能在 _一半_ 的時間內處理兩個錯誤。配置 (7,5) 可以一致地處理 _兩個_ 錯誤位元,無論它們的間距如何。
- 對錯誤清除能力的詳細預測最好透過模擬來處理。 只有使用模擬器才能克服與錯誤間距相關的複雜性。在長序列的程式碼字中模擬錯誤比計算給出更有用的結果,並允許進行完全隨機測試。
- VBA 中的維特比模擬器:接近度:華夏公益教科書:一個用於 Excel 模擬器的 VBA 程式碼模組文字,可用於測試此頁面上討論的配置。此頁面提供了基於 _接近度_ 而不是 _漢明距離_ 的演算法。
- VBA 2 中的維特比模擬器:漢明距離:華夏公益教科書:一個用於 Excel 模擬器的 VBA 程式碼模組文字,可用於測試此頁面上討論的配置。此頁面提供了基於 _漢明距離_ 的演算法。
- 卷積碼:維基百科:關於該主題的頁面。顯示各種配置。
- 維特比解碼器處理 : 一個包含清晰圖形的 PDF 下載檔案。
- 卷積碼的維特比解碼:關於該主題的另一個好的 PDF 手冊。
- 第 2.3 部分 卷積碼:PDF 格式的清晰圖形和簡潔描述。
- 使用卷積碼進行編碼和解碼:良好的寫作形式和清晰的表達。在以專案符號為主的領域中不常見。同樣是 PDF 格式。







