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