深空通信中基於校驗矩陣的準循環LDPC編碼器的製作方法
2023-04-29 00:24:01 1

本發明涉及信道編碼領域,特別涉及一種深空通信系統中基於校驗矩陣的qc-ldpc編碼器。
背景技術:
低密度奇偶校驗(low-densityparity-check,ldpc)碼是高效的信道編碼技術之一,而準循環ldpc(quasi-cyclicldpc,qc-ldpc)碼是一種特殊的ldpc碼。qc-ldpc碼的生成矩陣g和校驗矩陣h都是由循環矩陣構成的陣列,具有分塊循環的特點,故被稱為qc-ldpc碼。循環矩陣的首行是末行循環右移1位的結果,其餘各行都是其上一行循環右移1位的結果,因此,循環矩陣完全由其首行來表徵。通常,循環矩陣的首行被稱為它的生成多項式。
深空通信標準採用系統形式的qc-ldpc碼,其生成矩陣g的左半部分是一個單位矩陣,右半部分是由e×c個b×b階循環矩陣gi,j(0≤i<e,e≤ji′時,hi,k=0。由式(7)可知,x的第i塊行與vt的乘積滿足
非零循環矩陣hi,k相對於b×b階單位矩陣的循環右移位數是si,k,其中,0≤si,k<b,假設在h′的第i塊行中有n個非零循環矩陣,它們的塊列號分別是k1、k2、…、kn,且1≤k1<k2<…<kn<i′。那麼,式(12)變為
或者說
其中,上標rs(s)和ls(s)分別表示對矩陣(或向量)循環右移或循環左移s位。
如果vi′按照i′升序依次由式(14)計算,那麼py和x可逐段計算出來。該後向迭代過程可由圖3所示電路加以實現。該後向迭代電路由1個桶形移位器、3個累加器、2個延時器、2個比較器、1個復用器、1塊只讀存儲器(rom)和1塊隨機訪問存儲器(ram)組成。在圖3中,桶形移位器採用二分結構和流水線機制,固有延時是τ個時鐘周期,其中,τ={log2b}表示τ是不小於log2b的最小整數。桶形移位器對一個b比特數循環左移若干位,累加器1對桶形移位器的輸出進行累加。如圖3所示,h′中所有非零循環矩陣,即h1,k1、h1,k2、…、h1,kn、h2,k1、h2,k2、…、hi,kn、hi+1,k1、…、hc,kn的塊列號和移位數逐塊行地存儲於rom中。通常,hi,kn的下標kn大於hi+1,k1的下標k1。因此,當rom輸出的源地址k變小時,式(14)中目的地址i′和塊行號i應同時加1。與此同時,累加器1的內容,即目的操作數vi′被寫入ram中,然後被清零,以便計算下一個目的操作數。延時器1延時1個時鐘周期,它與比較器1配合判斷k是否變小。延時器2延時τ個時鐘周期是為了補償桶形移位器的固有延時。累加器3產生目的地址i′。ram根據rom輸出的源地址k輸出源操作數vk,把目的操作數vi′寫入目的地址i′。
從理論上講,在式(14)中,源地址k一定小於目的地址i′。實際上,由於延時器2延時τ個時鐘周期,可能會出現k≥i′。當出現這種情況時,ram輸出的vk是無效的,這是因為vi′還未計算出來,更不要說vk。當k≥i′時,rom暫停輸出新數據,且送入桶形移位器的數不是vk而是0。根據比較器2的輸出,累加器2產生rom的地址,復用器從vk和0中二選一送給桶形移位器。
在第三級,如果b的前r塊列是全零,那麼py的前r段也無需計算,這是因為這些段恰好等於第一級計算出來的py的前r段。又因為在第三級無需計算x,故在第三級無需使用h′的前r塊行和後u塊行。假設在h′中及其中間的(c–r–u)塊行分別有α和β個非零循環矩陣。由於存在路徑延時,在第一和第三級計算x和py所花的總時間下限是(α+β+2τ)個時鐘周期。對於深空通信系統中的1/2碼率qc-ldpc碼,α和β分別是32和28。
如果只考慮圖3中rom、ram、桶形移位器和累加器1等主要組成部分的資源消耗,那麼該後向迭代電路需要τb個觸發器、b個二輸入異或門、(t+u)b比特的ram和({log2t}+{log2b})β比特的rom。
使用後向迭代電路計算向量py和x的步驟如下:
第1步,清零累加器1和累加器2,初始化累加器3為i′=t–c+u+1;
第2步,rom根據累加器2產生的地址輸出源地址k及移位數si,k;
第3步,ram根據源地址k輸出源操作數vk,比較器2判斷源地址k是否小於目的地址i′,若k<i′,則比較器2輸出1,否則,比較器2輸出0,延時器1與比較器1配合判斷k是否變小,若變小,則比較器1輸出1,否則,比較器1輸出0,累加器3對延時τ個時鐘周期的比較器1輸出進行累加,產生目的地址i′;
第4步,根據比較器2的輸出,累加器2產生rom地址,復用器從vk和0中二選一送給桶形移位器,若比較器2的輸出是1,則累加器2遞增rom地址,復用器把vk送給桶形移位器,否則,累加器2保持rom地址不變,復用器把0送給桶形移位器;
第5步,桶形移位器對復用器的輸出循環左移si,k位,累加器1對桶形移位器的輸出進行累加,當延時器2的輸出為1時,累加器1的內容即為目的操作數vi′,vi′被寫入ram的目的地址i′中,與此同時,累加器1被清零,以便計算下一個目的操作數;
第6步,重複步驟2~5,直到[pyx]=(vt–c+u+1,vt–c+u+2,…,vt+u)逐段存儲於ram中。
由式(7)、圖1和v=(v1,v2,…,vt+u)可知,px=(vt–c+1,vt–c+2,…,vt–c+u)和x=(vt+1,vt+2,…,vt+u)。pxt=φxt等價於px=xφt。令x=(x1,x2,…,xu×b)。定義u比特向量sn=(xn,xn+b,…,xn+(u-1)×b),其中1≤n≤b。令φj(1≤j≤u)是由φt的第j塊列中所有循環矩陣生成多項式構成的u×b階矩陣。則有
vt-c+j=(…((0+s1φj)ls(1)+s2φj)ls(1)+…+sbφj)ls(1)(15)
由式(15)可得到一種循環左移累加器(rotate-left-accumulator,rla)電路,如圖4所示。查找表的索引是u比特向量sn,查找表lj事先存儲可變的u比特向量與固定的φj的所有可能乘積,故需2ub比特的只讀存儲器(read-onlymemory,rom)。b比特寄存器r1,r2,…,ru分別用於緩衝向量x的向量段vt+1,vt+2,…,vt+u,b比特寄存器ru+j用於存儲px的校驗段vt–c+j。1個rla電路計算向量vt–c+j需要b個時鐘周期。
對於深空通信系統,使用u=4個rla電路同時計算px=(vt–c+1,vt–c+2,…,vt–c+u)是一種合理方案,如圖5所示的向量與高密度矩陣的乘法器。向量與高密度矩陣的乘法器由u個查找表l1,l2,…,lu、2u個b比特寄存器r2,1,r2,2,…,r2,2u和u個b位二輸入異或門x2,1,x2,2,…,x2,u組成。查找表l1,l2,…,lu分別存儲可變的u比特向量與固定的矩陣φ1,φ2,…,φu的所有可能乘積,寄存器r2,1,r2,2,…,r2,u分別用於緩衝向量x的向量段vt+1,vt+2,…,vt+u,寄存器r2,u+1,r2,u+2,…,r2,2u分別用於存儲px的校驗段vt–c+1,vt–c+2,…,vt–c+u。u個rla電路需使用ub個二輸入異或門,2uub比特的rom和2ub個寄存器。u個rla電路計算向量px需要b個時鐘周期。使用向量與高密度矩陣的乘法器計算向量px的步驟如下:
第1步,清零寄存器r2,u+1,r2,u+2,…,r2,2u,輸入向量段vt+1,vt+2,…,vt+u,將它們分別存入寄存器r2,1,r2,2,…,r2,u中;
第2步,寄存器r2,1,r2,2,…,r2,u同時循環左移1次,異或門x2,1,x2,2,…,x2,u分別對查找表l1,l2,…,lu的輸出和寄存器r2,u+1,r2,u+2,…,r2,2u的內容進行異或,異或結果被循環左移1次後分別存回寄存器r2,u+1,r2,u+2,…,r2,2u;
第3步,重複第2步b-1次,完成後,寄存器r2,u+1,r2,u+2,…,r2,2u存儲的內容分別是校驗段vt–c+1,vt–c+2,…,vt–c+u,它們構成了部分校驗向量px。
本發明提供了一種基於校驗矩陣的qc-ldpc編碼方法,適用於深空通信系統中的1/2碼率qc-ldpc碼,其編碼步驟描述如下:
第1步,使用後向迭代電路計算向量py和x;
第2步,使用向量與高密度矩陣的乘法器計算部分校驗向量px;
第3步,使用後向迭代電路計算部分校驗向量py,從而得到校驗向量p=(px,py)。
圖6總結了編碼器各編碼步驟以及整個編碼過程所需的硬體資源消耗和處理時間。
從圖6不難看出,流水線充滿時,整個編碼過程大約共需max(α+τ,b,β+τ)=2048個時鐘周期,遠小於基於c個sraa-i電路的串行編碼方法所需的e×b=16404個時鐘周期。
深空通信標準中1/2碼率qc-ldpc編碼器的現有解決方案需要e×c×b=196608比特rom,而本發明需要({log2t}+{log2b})(α+β)+2uub=131584比特rom。
綜上可見,與傳統的串行sraa法相比,本發明具有編碼速度快、存儲器消耗少等優點。
以上所述,僅為本發明的具體實施方式之一,但本發明的保護範圍並不局限於此,任何熟悉本領域的技術人員在本發明所揭露的技術範圍內,可不經過創造性勞動想到的變化或替換,都應涵蓋在本發明的保護範圍之內。因此,本發明的保護範圍應該以權利要求書所限定的保護範圍為準。