一種針對咬尾卷積碼的Viterbi解碼器及解碼方法
【技術領域】
[0001]本發明涉及信道編解碼技術領域,尤其涉及一種針對卷積碼,尤其是咬尾卷積碼的Viterbi解碼器及解碼方法。
【背景技術】
[0002]無線通信系統中,數據在傳輸過程中會受到來自信道的多種類型的干擾。例如載波相同引起的同頻干擾、相鄰頻帶引起的鄰頻干擾、模擬器件產生的互調干擾、信道傳輸過程中的多普勒頻移和多徑衰落等各種各樣的干擾。通常使用前向糾錯碼作為信道編碼,通過冗余數據提升信號的信噪比,從而提高通信系統的傳輸效率。卷積碼是當前數字無線通信系統中廣泛采用的一類前向糾錯碼,形式通常為(n,k,m),其中η是編碼后的碼字、k是編碼前的碼字、m為約束長度,表示當前碼字還與前m-1個碼字相關。這個約束長度越大,編碼性能越好,但是實現起來也就越復雜。實際上,在無線通信中使用的卷積碼約束長度在5?9之間。
[0003]Viterbi算法是1967年提出的針對卷積碼的一種概率解碼方法,屬于前后算法的一種。Viterbi解碼器的工作流程一般為:首先,正向處理輸入數據,經網格計算得到網格信息;然后基于網格信息逆向回溯,得到逆序的結果;最后將結果正序輸出,完成解碼計算。其中,在執行網格計算時,通過計算網格圖中的路徑的度量值來進行路徑選擇,以得到網格信息。
[0004]現有的Viterbi解碼器主要由計算實際接收數據與各個編碼輸出路徑間差異(即路徑的度量值)的分支度量計算模塊、計算較小轉移路徑的運算模塊、回溯并保存路徑信息的幸存路徑管理模塊等組成。現有的Viterbi解碼器能夠以較少的運算提供較好的性能,但隨著m值的增高,解碼器的器件面積會隨之增大,因而不適用于應用較大m值(如(3,1,9)等)的信道。
【發明內容】
[0005]為解決上述現有技術中存在的問題,根據本發明的一個實施例,提供一種針對咬尾卷積碼的Viterbi解碼器,包括:
[0006]輸入處理模塊,用于量化待解碼的數據;
[0007]網格計算模塊,包括多個蝶形運算單元,用于以并行的方式完成對量化后的待解碼數據的網格計算,得到用于指示網格圖中狀態之間的關系的網格信息;
[0008]回溯模塊,用于基于所述網格信息得到逆序的解碼結果;以及
[0009]輸出模塊,用于將所述逆序的解碼結果正序輸出。
[0010]在一個實施例中,上述Viterbi解碼器還可以包括:存儲控制模塊,用于控制所述Viterbi解碼器中各個模塊的操作。
[0011 ] 在一個實施例中,所述輸入處理模塊還用于在量化待解碼的數據后,將量化后的碼塊尾比特輸出至所述網格計算模塊以執行網格計算,并且將量化后的碼塊存儲至存儲器。
[0012]在一個實施例中,在完成對量化后的碼塊尾比特的網格計算后,存儲在所述存儲器中的量化后的碼塊被輸出至所述網格計算模塊以執行網格計算。
[0013]在一個實施例中,所述網格計算模塊在收到來自所述輸入處理模塊的量化后的碼塊尾比特后,利用所述多個蝶形運算單元并行地執行網格計算,以更新存儲在所述網格計算模塊中的路徑度量值;所述網格計算模塊在收到來自所述存儲器的量化后的碼塊后,利用所述多個蝶形運算單元并行地執行網格計算,以更新存儲在所述網格計算模塊中的路徑度量值并且得到網格信息。
[0014]在一個實施例中,所述網格計算模塊在完成對量化后的碼塊的網格計算后,比較更新后的路徑度量值,將最大的路徑度量值所對應的狀態作為回溯的初始狀態。
[0015]在一個實施例中,所述回溯模塊根據所述回溯的初始狀態,遍歷所述網格信息得到逆序的解碼結果。
[0016]在一個實施例中,所述存儲器位于所述Viterbi解碼器的外部。
[0017]根據本發明的一個實施例,還提供一種基于上述Viterbi解碼器的Viterbi解碼方法,包括:
[0018]步驟1)、所述輸入處理模塊對待解碼的數據執行量化處理;
[0019]步驟2)、所述網格計算模塊對量化后的碼塊尾比特執行網格計算,并且更新路徑度量值;
[0020]步驟3)、所述網格計算模塊對量化后的碼塊執行網格計算、更新路徑度量值,并且得到網格信息;
[0021]步驟4)、所述回溯模塊基于所述網格信息得到逆序的解碼結果,并且所述輸出模塊將所述逆序的解碼結果正序輸出。
[0022]在一個實施例中,步驟3)還包括:
[0023]在完成對量化后的碼塊的網格計算后,所述網格計算模塊比較更新后的路徑度量值,將最大的路徑度量值所對應的狀態作為回溯的初始狀態。
[0024]本發明提供了一種高性能,同時具有較小面積的Viterbi解碼器。其中的網格計算模塊使用全并行方式,保證了解碼速度;該Viterbi解碼器對于解碼m值較大的卷積碼,有較高的增益性能,適用于較多種類的信道,可以應用于多種通信標準。此外,該Viterbi解碼器可采用外部存儲器,從而進一步減小了器件面積。
【附圖說明】
[0025]圖1是根據本發明一個實施例的針對咬尾卷積碼的Viterbi解碼器的框圖;
[0026]圖2是根據本發明一個實施例利用圖1的Viterbi解碼器進行解碼的方法流程圖;
[0027]圖3是針對示例的(2,1,3)卷積碼得到的狀態轉移網絡示意圖。
【具體實施方式】
[0028]下面結合附圖和【具體實施方式】對本發明加以說明。應當理解,此處所描述的具體實施例僅用以解釋本發明,并不用于限定本發明。
[0029]根據本發明的一個實施例,提供一種針對咬尾卷積碼的Viterbi解碼器(下文簡稱為Viterbi解碼器或解碼器),包括存儲控制模塊、輸入處理模塊、網格計算模塊、回溯模塊和輸出模塊。
[0030]概括而言,存儲控制模塊用于控制Viterbi解碼器的解碼過程,輸入處理模塊用于處理待解碼的輸入數據,網格計算模塊用于以并行的方式完成網格計算,得到網格信息,回溯模塊用于根據網格信息而得到逆序的解碼結果,而輸出模塊用于將逆序的解碼后的數據正序輸出。
[0031]下文將結合圖1詳細描述本發明提供的Viterbi解碼器。該Viterbi解碼器具有兩種模式一一工作模式和空閑模式。
[0032]1.存儲控制模塊
[0033]存儲控制模塊包括對其他模塊執行控制的存儲控制邏輯、與存儲器通信的存儲器接口以及控制Viterbi解碼器模式(包括工作模式和空閑模式)的解碼器狀態機。
[0034]存儲控制模塊接收從外部輸入的指示解碼的控制信號,將Viterbi解碼器由空閑模式轉換為工作模式,接收并配置碼率、碼塊長度和尾比特長度等控制信息,以及相應開啟輸入處理模塊、網格計算模塊、回溯模塊和輸出模塊。
[0035]在解碼過程中,由存儲控制模塊指定數據的輸入輸出時序并且控制解碼器中各模塊的操作:存儲控制模塊控制輸入處理模塊對待解碼的輸入數據進行量化處理;并控制輸入處理模塊將量化后的部分數據輸出至外部存儲器(例如通過存儲控制模塊本身,經由存儲器接口)以及將另一部分數據輸出至網格計算模塊以執行網格計算;在后者的網格計算完成后,存儲控制模塊控制外部存儲器將存儲的數據輸出至網格計算模塊以執行網格計算,并且控制網格計算模塊將計算得到的網格信息存儲至外部存儲器(其中如下文所述,在該網格計算后,存儲控制模塊還控制網格計算模塊計算回溯的初始狀態,以及向回溯模塊輸出該信息);隨后,存儲控制模塊控制回溯模塊基于回溯的初始狀態遍歷外部存儲器中的網格信息,得到逆序的解碼數據,并控制回溯模塊將這些數據存儲至外部存儲器;最后,存儲控制模塊控制輸出模塊反向讀取外部存儲器中的數據,由輸出模塊得到并輸出正序的解碼數據。
[0036]解碼工作完成后,存儲控制模塊控制Viterbi解碼器進入空閑模式。在空閑模式下,僅有存儲控制模塊開啟,而Viterbi解碼器中的其他模塊關閉。
[0037]上文所述的外部存儲器通常指在Viterbi解碼器之外的存儲器,但本領域技術人員應理解,該存儲器也可以設置在Viterbi解碼器的內部。優選地,Viterbi解碼器與其他外部設備共享存儲器,以減少其器件占用的面積。
[0038]2.輸入處理樽塊
[0039]輸入處理模塊在收到存儲控制模塊的控制信息后,處理待解碼的輸入數據,將浮點表示的數據量化為整數數據,以完成軟判決計算。
[0040]具體地,輸入處理模塊可首先緩存輸入的待解碼數據(例如以對數似然比(LLR)的形式進入該模塊)。隨后,對輸入數據進行軟判決,得到量化后的整數數據。對于咬尾卷積碼來說,在存儲控制模塊的控制下,輸入處理模塊將量化后的碼塊的尾比特輸出至網格計算模塊以用于網格計算,而將量化后的碼塊輸出并存儲至外部存儲器。
[0041]3.網格計算模塊
[0042]如上文所述,網格計算模塊用于完成Viterbi算法中的網格計算部分,生成網格信息。網格計算模塊包含多個蝶形運算單元,其可以在多種碼率下工作,以完全并行的方式完成網格計算:即完成分支度量(Branch Metric)計算,加比選(ACS)操作以及路徑度量值(Path Metric)的更新。此外,網格計算模塊還用于存儲路徑度量信息。
[0043]在存儲控制模塊的控制下,當接收到從輸入