本發明涉及無線通信編解碼領域,尤其涉及一種可重構的LT碼譯碼系統與譯碼方法。
背景技術:
隨著通信技術、無線傳感網技術和半導體技術的飛速發展,無線通信技術已經成為新的熱門研究點,引起了人們的極大關注。無線通信技術在工業、民用等領域有著廣泛的研究和應用,如無線智能家居、無線數據采集、無線設備管理等,無線通信技術的應用范圍逐漸增加,并日趨走向成熟。
LT碼是第一種實用的噴泉碼,編碼的基本思想是通過噴泉編碼器的有限輸入與無限輸出的映射特性生成數據包,當接收方收到一定數量的數據包時就可以恢復信息,數字噴泉碼最初是在刪除信道中提出的,它可以有效的提高數據傳輸的可靠性。現在,隨著數字噴泉碼的理論越來越完善,它的商業價值也被更多的人注意到了,因此,在非刪除信道當中,數字噴泉碼也已經被廣泛的使用。噴泉碼作為一種性能優異的編碼方式,有著廣泛的應用前景。在理論研究日趨完善的同時,噴泉碼也日漸受到了產業界的關注,獲得了越來越多的實際應用。
在編譯碼算法的研究方面,由于數字噴泉碼的核心是度數分布函數,因此現在大量的研究人員基于經典的LT碼,將主要精力放在了如何優化度數分布函數,以達到改善數字噴泉碼性能的目的。在LT碼譯碼方法中,目前主要有兩種譯碼方案即高斯消去(GE)譯碼算法和置信傳播(Belief Passing,BP)譯碼算法。高斯消去(GE)譯碼算法的實質就是求解編碼線性方程組的求逆過程,使用高斯消去法進行譯碼的目標是將編碼生成矩陣化為單位陣形式;若譯碼器能夠通過高斯消去法對編碼生成矩陣進行消元得到一個滿秩的單位矩陣,則譯碼成功;否則,譯碼失敗。BP算法的實質就是對輸入符號進行恢復和對編碼矩陣進行處理的反過程,其譯碼結構簡單可行,運算量較少且誤碼率較高;而GE算法雖然誤碼率較低但其硬件實現復雜度隨著碼長的增加而極具增加,呈現平方線性關系。
技術實現要素:
發明目的:針對上述現有技術在實現上所存在的問題與不足,本發明提出了一種可重構的LT碼譯碼系統與譯碼方法。
技術方案:為實現上述發明目的,本發明中可重構的LT碼譯碼系統,包括:主控模塊、度模塊、度搜索模塊、待譯碼數據模塊、生成矩陣模塊、生成矩陣列搜索模塊、生成矩陣行搜索模塊、譯碼輸出模塊;
所述主控模塊與其他各模塊分別通信連接,用于控制LT碼譯碼系統的狀態和工作流程;
所述度搜索模塊用于在主控模塊發出的度搜索使能信號有效時尋找度模塊中度的值等于1所在的存儲地址AD;
所述生成矩陣列搜索模塊用于在主控模塊發出的生成矩陣列搜索使能信號有效時尋找生成矩陣中第AD列數據中值為1的存儲地址AG;
所述譯碼輸出模塊用于存儲譯碼輸出數據,在主控模塊發出的數據輸出使能信號有效時將其存儲地址AG中的譯碼數據存儲為待譯碼數據模塊中存儲地址AD中的數據Da;
所述生成矩陣行搜索模塊用于在主控模塊發出的生成矩陣行搜索使能信號有效時尋找生成矩陣中第AG行數據中值為1的全部存儲地址AGk;
所述度模塊用于存儲每列編碼數據的度的值,并在主控模塊發出的度更新使能信號有效時將存儲地址為AGk中的度值減1;
所述生成矩陣模塊用于存儲LT碼生成矩陣,用于在主控模塊發出的生成矩陣更新使能信號有效時將第AG行元素清零;
所述待譯碼數據模塊用于存儲不斷更新的待譯碼數據,用于在主控模塊發出的待譯碼數據更新使能有效時將其存儲地址AGk中的數據與其存儲地址AD中對應的數據Da進行按位異或操作得到新的數據值。
相應地,本發明還提供了一種可重構的LT碼譯碼方法,包括以下步驟:
(1)進行度值等于1的搜索:對所有度值等于1的單元進行搜索,若不存在度值等于1的單元,則譯碼失敗;否則,每搜到一個度值為1的單元則輸出其所對應的存儲地址AD;
(2)生成矩陣的列搜索:對生成矩陣中第AD列中值等于1的元素進行搜索,獲取其對應的存儲地址AG和數據Da;
(3)生成矩陣的行搜索:對生成矩陣第AG行中值等于1的元素進行搜索,獲取對應的存儲地址AGk;
(4)更新:將生成矩陣第AG行中的元素全部清0,將存儲地址AGk所對應的度值減1,將存儲地址AGk所對應的譯碼數據與存儲地址AD中對應的數據Da進行按位異或操作得到新的數據來更新存儲地址AGk所對應的譯碼數據;
(5)迭代:重復以上步驟(1)至(4),直至譯碼迭代次數達到信源符號數目,完成譯碼。
進一步地,步驟(1)中對度值的搜索采用并行搜索方式,具體為:
將編碼以長度為2n分成多個分路同時進行搜索;
按照存儲地址對每個分路中的元素分別進行搜索,找出每個分路中度值為1的最小存儲地址,作為相應分路中度值為1所對應的存儲地址;
選擇所有分路中度值為1的最小存儲地址,作為該次度值搜索的結果。
進一步地,步驟(3)中對生成矩陣第AG行中的元素進行搜索,采用分組搜索方式,具體為:
將生成矩陣第AG行中的元素依次按照長度為s進行等長度分組;
對于任意一分組,將該組中的每一個比特數據同時與相應的比較數據進行位與后再與0比較,確定該分組中元素為1的比特數據所在的組內位置;
利用分組標號最終確定生成矩陣第AG行中元素為1的所有比特數據的存儲地址。
有益效果:本發明中的可重構的LT碼譯碼系統與譯碼方法,先對度值為1的數據進行搜索,然后再對生成矩陣的相應列進行搜索,將度為1的數據先進行譯碼,然后再對生成矩陣中相應的行進行搜索,并對其進行更新,降低對應的度值,經過反復執行這些過程完成譯碼,能夠有效地減少關鍵路徑延時,方便選擇整體LT碼譯碼速度,在硬件實現復雜度和譯碼速度有很好的靈活性。
附圖說明
圖1為本發明中可重構的LT碼譯碼方法的流程圖;
圖2為本發明中可重構的LT碼譯碼系統的結構示意圖;
圖3為本發明中可重構的LT譯碼系統中主控模塊的結構示意圖;
圖4為本發明中度1搜索結構示意圖;
圖5為本發明中生成矩陣列搜索示意圖;
圖6為本發明中生成矩陣行搜索示意圖。
具體實施方式
下面結合實施例對本發明作更進一步的說明。
圖1中的可重構的LT碼譯碼方法,依據LT碼的BP譯碼算法的基本原理,包括以下步驟:
(1)進行度值等于1的搜索:對所有度值等于1的單元進行搜索,若不存在度值等于1的單元,則譯碼失敗;否則,每搜到一個度值為1的單元則確定其所對應的生成矩陣中對應的列;
(2)生成矩陣的列搜索:對生成矩陣中該列中值等于1的元素進行搜索,每次搜索有且只有一個值,獲取對應的信源符號;
(3)生成矩陣的行搜索:對生成矩陣中步驟(2)中值等于1的元素所在的行中值等于1的元素進行搜索,每次搜索有可能有多個值;
(4)矩陣更新:將生成矩陣中步驟(2)中值等于1的元素所在的行的元素全部清0,將步驟(3)中搜索獲取到的元素所對應的度值以及待譯碼數據中的地址進行更新;
(5)迭代:重復以上步驟(1)至(4),直至譯碼迭代次數達到信源符號數目,完成譯碼。
圖2中的可重構的LT碼譯碼系統主要包括:主控模塊、待譯碼數據模塊、度模塊、度搜索模塊、生成矩陣模塊、生成矩陣列搜索模塊、生成矩陣行搜索模塊、譯碼輸出模塊;主控模塊與其他各模塊分別通信連接,用于控制LT碼譯碼系統的狀態和工作流程;待譯碼數據模塊用于存儲不斷更新的待譯碼數據;度模塊用于存儲每列編碼數據的度的值;生成矩陣模塊用于存儲LT碼生成矩陣;度搜索模塊用于尋找度搜索模塊中度的值等于1所在的位置;生成矩陣列搜索模塊用于尋找生成矩陣中某列中值為1的位置;生成矩陣行搜索模塊用于尋找生成矩陣中某行中值為1的位置;譯碼輸出模塊用于存儲譯碼輸出數據。
該系統的工作過程如下:
(1)當譯碼開始后,度搜索模塊首先輸出度模塊中一個度為1的存儲地址AD。
搜索等于1的度需要按照地址順序進行窮盡搜索,度模塊中可能存在多個值等于1的度,但是只要每次搜索到1個等于1的度,度搜索電路便停止搜索。
度搜索模塊電路每次只要輸出一個度等于1的存儲地址,度模塊中總共存儲N個度的值,記為Di(i=0,1,...,N-1),地址為0~N-1,將度模塊中的存儲的度的值依次與1做比較,當搜索到度等于1時,輸出對應的存儲地址AD,搜索終止;若搜索完畢后沒有等于1的度則輸出N,輸出N表示度分布模塊中不存在等于1的度,只要搜索到度模塊中不存在等于1的度,即無法進行譯碼,譯碼工作即刻終止。
(2)生成矩陣列搜索模塊輸出生成矩陣模塊第AD列數據中等于1的存儲地址AG。
度搜索電路完成搜索后,根據搜索出的度的值等于1的存儲地址AD,生成矩陣中第AD列共有K個元素,元素值為0或1,且只有一個元素的值為1,生成矩陣列搜索模塊主要功能就是搜索出元素為1的值的存儲地址,每列元素的地址從上到下為0~K-1,將生成矩陣的列按照地址從大到小的順序每s比特一組,分別和0做比較,若不等于0,輸出為該組的分組序號i,將該序號乘以s得到s*i,將對應的分組值Gi右移k(k的可能取值為0~s-1)位后的值等于1時,停止移位保存此時k的值,s*i+k即為列中元素值為1的存儲地址AG,搜索即刻終止。
(3)譯碼輸出模塊位置為AG的數據等于待譯碼數據模塊中第AD個存儲數據Da。
(4)生成矩陣行搜索模塊輸出生成矩陣模塊中第AG行元素等于1的全部存儲地址AGk,k=(1,2,...,M)。
生成矩陣列搜索電路完成搜索后,根據生成矩陣列搜索模塊的輸出地址AG,搜索生成矩陣中第AG行中元素值為1的所有存儲地址,生成矩陣每行共有N個元素,元素值為0或1,每行元素中值等于1的數目大于1個,每行元素從左到右地址記為0~N-1。
為了有效降低搜索復雜度,將生成矩陣的行分組進行搜索,實行流水線式可重構操作,將生成矩陣的行按照地址從大到小每s比特分為一組,記為GDk,首先找到每組s比特數據中哪些位的值為1,將此s比特數據和比較數據0..1、0..2、0..4、...、8..0分別按位與后的結果通過比較器和0做比較,再通過數據選擇器,若比較后的結果為0,則表示該位不是1,數據選擇器輸出s,若比較后的結果不為0,表示該位的值是1,輸出該位的值ai(i=0~s-1,對于s比特數據共有s位,將該s位從0開始標記,第ai位的值為1時,ai的取值為i),將分組值k乘以s,s*k+ai即可得到元素1的地址。
其中s表示每次搜索元素的個數,可以根據參數配置,其值為8、16、32或者64。其中比較數據0..0,0..1,...,8..0數據位寬為s值的四分之一,比較數據0..1是s比特/4個數據位的16進制表示,其中0、1、2、4、8五個數字對應于16進制的四個比特位。其形式規律或完整表示是0..1,0..2,0..4,0..8;0..10,0..20,0..40,0..80;......;01..0,02..0,04..0,08..0;1..0,2..0,4..0,8..0。例如:若s的值為16,則對應的比較器的個數為16個,每個比較器處的比較數據的數據位為4個,對于每個GDk組的數據從其數據位a0至a15對應的比較數據分別為:0001、0002、0004、0008、0010、0020、0040、0080、0100、0200、0400、0800、1000、2000、4000、8000,將每個GDk組的數據的各數據位同時與各自對應的比較數據按位與后的結果通過比較器和0做比較,再通過數據選擇器,若比較后的結果為0,則表示該位不是1,數據選擇器輸出16;若比較后的結果不為0,表示該位的值是1,輸出該位的值ai,當ai≠1時,將分組值k乘以16(右移4位)得16k,16k+ai即可得到元素1的地址。若不等于0,輸出為該組的分組序號i,將該序號乘以s得到s*i,將對應的分組值Gi右移k(k的可能取值為0~s-1)位后的值等于1時,停止移位保存此時k的值,s*k+i即為列中元素值為1的存儲地址AG,搜索立即終止。
(5)生成矩陣模塊中第AG行元素清零,度模塊中位置等于AGk,k=(1,2,...,M)的存儲地址的數據減1,把待譯碼數據模塊中位置為AGk,k=(1,2,...,M)的數據與待譯碼數據模塊中地址AD對應的數據Da進行按位異或操作得到新的數據值。
(6)通過上述過程每次可以得到一個譯碼數據符號,在譯碼時,主控模塊中譯碼迭代次數計數器從0計到K-1,每進行一次上述譯碼過程迭代次數計數器加一,直至計數到K-1,譯碼迭代循環結束,完成譯碼。如果迭代次數計數器值小于K-1,并且度模塊中所有元素的值均不等于1,則譯碼亦終止。
圖3為LT譯碼器主控模塊結構示意圖,主控模塊對各模塊的控制流程為:
(1)初始化,主控模塊的狀態機輸出度搜索使能有效信號;
(2)進行度搜索,度搜索完成后,若搜索不到等于1的度,譯碼結束;否則,度地址輸出使能信號有效,度地址AD暫存于主控模塊中,生成矩陣列搜索使能信號有效;
(3)進行生成矩陣列搜索,搜索完成后,生成矩陣列地址輸出使能信號有效,列地址AG暫存,數據輸出使能有效,將譯碼輸出模塊存儲地址AG中的譯碼數據存儲為待譯碼數據模塊中存儲地址AD中的數據Da;
(4)生成矩陣行搜索使能信號有效時,進行生成矩陣行搜索,搜索完成后,行地址輸出使能信號有效,生成矩陣行地址AGk,k=(1,2,...,M)暫存;
(5)度更新使能信號有效,進行度模塊數據更新,將其存儲地址為AGk中的度值減1;生成矩陣更新使能信號有效,生成矩陣更新,將其第AG行元素清零;待譯碼數據更新使能有效,待譯碼數據更新,將其存儲地址AGk中的數據與其存儲地址AD中對應的數據Da進行按位異或操作得到新的數據值;
(6)若譯碼迭代次數小于K-1則進入下一次循環,反之譯碼輸出使能信號有效,完成譯碼輸出。
在LT碼度1搜索過程中,隨著LT碼長度的增加其關鍵路徑延時增大。為了降低關鍵路徑延時,本發明可根據參數選擇,將度1搜索模塊采用一路、兩路、四路或者八路并行搜索。將編碼以長度為2n分成多個分路同時進行搜索;按照存儲地址對每個分路中的元素分別進行搜索,找出每個分路中度值為1的最小存儲地址,作為相應分路中度值為1所對應的存儲地址;選擇所有分路中度值為1的最小存儲地址,作為該次度值搜索的結果。假設LT碼參數為(N,K),其中N為編碼長度,K為信源長度,則根據參數,對應每路搜索碼字長度為N、N/2、N/4、N/8,如果N不能被2、4或者8整除,則進行取整,最后一路搜索長度對應剩余碼字。
如圖4所示為本發明中度1搜索的八路搜索結構示意圖,其中N/8如果不是整數則取整。度值采用八路搜索,其中每路均進行搜索并返回每路第一個度1值所在的位置。在選擇輸出時,每路減去對應的數值,然后比較這些數值,根據最小數值所在的路數,輸出那條路上的度值所在位置。同理,對于兩路和四路搜索也是相應的原理。
如圖5所示為本發明中生成矩陣列搜索示意圖,其中s表示每次搜索元素的個數,可以根據參數配置,其取值為8、16、32或者64,j根據s的取值對應為3、4、5和6,k為當前搜索的次數。基于降低搜索復雜度的考慮,將生成矩陣的列分組進行搜索,實行流水線操作。在進行生成矩陣列搜索時,一旦搜到生成矩陣的列中存在等于1的元素,搜索即停止。
在生成矩陣列搜索過程中,可以根據參數選擇每次搜索元素的數量,其中每次可以選擇搜索元素數量為8、16、32、64。這樣,隨著每次搜索元素數量的翻倍,其譯碼時間則減少一半,譯碼速度提升一倍,但是硬件實現復雜度增加。本發明可以根據參數選擇,在譯碼速度和硬件復雜度之間進行靈活選擇。
如圖6所示為本發明中生成矩陣行搜索示意圖,其中s表示每次搜索元素的個數,可以根據參數配置,其值為8、16、32或者64。其中0..0,0..1,...,8..0數據位寬為s值的四分之一。根據生成矩陣列搜索模塊的輸出地址AG,搜索生成矩陣中第AG行中元素值為1的所有存儲地址,為了有效降低搜索復雜度,將生成矩陣的行分組進行搜索,實行流水線操作。
在生成矩陣行搜索過程中,可以根據參數選擇每次搜索元素的數量,每次可以選擇搜索元素數量也是8、16、32、64。這樣,隨著每次搜索元素數量的翻倍,其譯碼時間減少,但是硬件實現復雜度增加。
以上詳細描述了本發明的優選實施方式,但是,本發明并不限于上述實施方式中的具體細節,在本發明的技術構思范圍內,可以對本發明的技術方案進行多種等同變換,這些等同變換均屬于本發明的保護范圍。