專(zhuān)利名稱(chēng):一種渦輪碼譯碼器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及信道編碼領(lǐng)域,特別是一種渦輪(Turbo)碼譯碼器。
背景技術(shù):
在無(wú)線通信系統(tǒng)中,由于傳輸介質(zhì)的不均勻性和不穩(wěn)定性,傳輸?shù)男盘?hào)會(huì)受到時(shí)間擴(kuò)散、衰落等干擾影響,造成接收的比特有隨機(jī)性的差錯(cuò)。為了防止信道噪聲的干擾影響,需要采用一定的方式來(lái)提高信道的傳送可靠性和有效性??梢酝ㄟ^(guò)增加冗余度的方法來(lái)降低誤碼率。在移動(dòng)通信系統(tǒng)和衛(wèi)星通信系統(tǒng)中,糾錯(cuò)碼得到了廣泛的應(yīng)用。
具有優(yōu)異性能的Turbo碼是一種糾錯(cuò)能力很強(qiáng)的碼,已經(jīng)成為信道編碼領(lǐng)域研究的焦點(diǎn)之一。盡管Turbo碼的譯碼復(fù)雜度大于傳統(tǒng)的卷積碼,但在無(wú)線信道低信噪比情況下Turbo碼的性能非常優(yōu)異,因此普遍使用Turbo碼作為高速數(shù)據(jù)業(yè)務(wù)的編碼方式。當(dāng)前寬帶碼分多址(WCDMA)系統(tǒng)、碼分多址2000(CDMA-2000)系統(tǒng)和時(shí)分同步碼分多址(TD-SCDMA)系統(tǒng)中,對(duì)于高速數(shù)據(jù)業(yè)務(wù)的傳輸均已采用Turbo碼。另外,美國(guó)國(guó)家航空航天局也已經(jīng)將Turbo碼作為今后航天飛機(jī)、宇宙飛船和空間站與地球接收站之間通信的標(biāo)準(zhǔn)信道編碼技術(shù)。
目前有兩大類(lèi)的Turbo碼譯碼算法,一類(lèi)是基于維特比(Viterbi)算法的改進(jìn),屬于次最佳算法,其中包括軟輸出維特比算法(SOVA)和串行列表輸出維特比算法(SLVA),另一類(lèi)是BCJR算法處理后驗(yàn)概率分布的最大后驗(yàn)算法(MAP),以及在對(duì)數(shù)域的Max-log-MAP算法和log-MAP等算法。在Turbo碼譯碼器中,BCJR算法是目前最常用的MAP算法。
在MAP算法中,譯碼器輸出的軟判決信息為對(duì)數(shù)似然比,如公式(1)
Li=ln[xi=1|y]P[xi=0|y]...(1)]]>在計(jì)算信息比特的后驗(yàn)概率之前,先計(jì)算已知有噪信道中的觀測(cè)y時(shí)每個(gè)有效的狀態(tài)轉(zhuǎn)移的后驗(yàn)概率P[si→si+1|y]。由條件概率公式P[si→si+1|y]=P[si→si+1,y]P[Y]...(2)]]>由Markov過(guò)程的性質(zhì),公式(2)的分子部分可以分解為P[s1→si+1,y]=α(si)γ(si→si+1)β(si+1)(3)其中,α(si)=P[si,(y0,...,yi-1)](4)γ(si→si+1)=P[si+1,yi|si] (5)β(si+1=P[(yi+1,...,yN-1)|si+1](6)γ(si→si+1)是與狀態(tài)轉(zhuǎn)移(si→si+1)相對(duì)應(yīng)的分支轉(zhuǎn)移度量,它可表示為γ(si→si+1)=P[si+1|si]P[yi|si→si+1](7)=P[xi]P[yi|ci]公式(7)的第一項(xiàng)P[xi]可以由前一級(jí)迭代得到的先驗(yàn)信息zi計(jì)算得到P[xi]=ezi1+ezi,for,xi=111+ezi,for,xi=0...(8)]]>公式(7)的第二項(xiàng)P[yi|ci]為調(diào)制方式和信道模型的函數(shù),在BPSK或QPSK調(diào)制信號(hào)慢衰落信道下P[yi|ci]=12πσ2exp{12σ2||yi-a(2ci-1)||}...(9)]]>其中,α為信號(hào)的衰落幅度,ci是與狀態(tài)轉(zhuǎn)移(si-1→si)相對(duì)應(yīng)的編碼器輸出符號(hào),對(duì)于碼率為1/2的分量碼編碼器ci∈{(00)′,(01)′,(10)′,(11)′} (10)概率α(si)可以由如下的前向遞推得到
α(si)=Σsi-1∈Iα(si-1)γ(si-1→si)]]>其中i=0,1,...,N-1(11)式中,I為與狀態(tài)si相連的狀態(tài)si-1的集合。由于Turbo碼的分量碼編碼器的初始狀態(tài)為全0,所以公式(11)的初始條件為α(s0)=1,s0=00,s0≠0...(12)]]>類(lèi)似的,β(si)可以由如下的反向遞推得到β(si-1)=Σsi-1∈Iβ(si-1)γ(si-1→si),i=N,N-1...1---(13)]]>由于第三代移動(dòng)通信系統(tǒng)中Turbo碼的兩個(gè)分量碼譯碼器都附加了偽比特使譯碼器最終回到全0狀態(tài),所以公式(13)的初始條件為β(sN)=1,sN=00,sN≠0...(14)]]>一旦得到了狀態(tài)轉(zhuǎn)移的后驗(yàn)概率P[si→si+1|y],由全概率公式可得信息比特的概率為P[xi=1|y]=Σs1P[si→si+1|y]...(15)]]>P[xi=0|y]=Σs0P[si→si+1|y]...(16)]]>其中,S1={si→si+1xi=1)為信息比特xi為1所對(duì)應(yīng)的狀態(tài)轉(zhuǎn)移的集合,S0={si→si+1xi=0)為信息比特xi為0所對(duì)應(yīng)的狀態(tài)轉(zhuǎn)移的集合。
由公式(1)、(2)、(3)、(15)、(16),對(duì)數(shù)似然比為L(zhǎng)k=lnΣs1α(si)γ(si→si+1)β(si+1)Σs0α(si)γ(si→si+1)β(si+1)...(17)]]>由于需要進(jìn)行大量的乘法運(yùn)算和指數(shù)運(yùn)算,MAP算法非常不適用于硬件實(shí)現(xiàn)。Erfanian和Pasupathy最早提出了MAP算法在對(duì)數(shù)域的簡(jiǎn)化算法LOG-MAP算法。通過(guò)轉(zhuǎn)換到對(duì)數(shù)域運(yùn)算,不需要指數(shù)運(yùn)算,同時(shí)乘法變成了加法,而加法變成了MAX*運(yùn)算。
定義MAX*運(yùn)算如公式(18)
MAX*(X,Y)=log(eX+eY)=MAX(X,Y)+log(1+e-|X-Y|) (18)則公式(17)可以改寫(xiě)為L(zhǎng)i=logP(xi=1|y)P(xi=0|y)]]>=MAX(si-1,si)xi=1(Ai-1(si-1)+Gi-1(si-1,si)+Bi(si))]]>-MAX(si-1,si)xi=0*(Ai-1(si-1)+Gi-1(si-1,si)+Bi(si))...(19)]]>其中,A、G、B分別對(duì)應(yīng)α、γ、β的對(duì)數(shù)值,一般,A稱(chēng)為前向累積路徑度量,B稱(chēng)為后向累積路徑度量,G稱(chēng)為分支轉(zhuǎn)移度量。
由公式(7)、(8)、(9)可得Gi-1(si-1,si)=ln P[xi]+ln P[yi|ci]=zi·x(si-1,si)-12σ2||yi-a(2ci(si-1,si)-1)||+Ci...(20)]]>其中,x(si+1,si)∈{0,1}為與狀態(tài)轉(zhuǎn)移(si-1→si)相對(duì)應(yīng)的譯碼器輸入,Ci是與狀態(tài)轉(zhuǎn)移(si-1→si)無(wú)關(guān)的常數(shù),在計(jì)算時(shí)可被省略。
對(duì)公式(11)、(12)、(13)、(14)兩邊取對(duì)數(shù),得Ai(si)=MAXsi-1*(Ai-1(si-1)+Gi-1(si-1,si))i=1,...N-1---(21)]]>A0(s0)=0s0=0-∞s0≠0...(22)]]>Bi-1(si-1)=MAXsi*(Bi(si)+Gi-1(si-1,si))i=N,N-1...,2---(23)]]>BN(SN)=0sN=0-∞sN≠0...(24)]]>由此,得到LOG-MAP算法的計(jì)算過(guò)程包括以下步驟第一步前向遞推。由公式(22)初始化A0,由公式(21)遞推計(jì)算Ai,i=1,...,N-1。
第二步反向遞推。由公式(24)初始化BN,由公式(23)計(jì)算Bi,i=N-1,...,0第三步由公式(19)計(jì)算得到對(duì)數(shù)似然比Li。
在Turbo碼LOG-MAP譯碼算法中,公式(19)中G稱(chēng)為分支轉(zhuǎn)移度量,其計(jì)算式為公式(20)。經(jīng)推導(dǎo)出可得到一種簡(jiǎn)化計(jì)算方法Gi(si,si+1)=λi[c(si,si+1)],其中si=0,1,...,2v-1,si+1=0,1,...,2v-1對(duì)于第三代移動(dòng)通信系統(tǒng)中采用的Turbo碼,有λi(00)=0,λi(01)=2aσ2yi,0+z,]]>λi(10)=2aσ2yi,1,]]>λi(11)=(2aσ2yi,0+z+2aσ2yi,1),---(25)]]>上式中,λi(00)、λi(01)、λi(10)和λi(11)中的標(biāo)號(hào)分別是用二進(jìn)制進(jìn)行表示。如果是十進(jìn)制表示,分別為λi(0)、λi(1)、λi(2)、λi(3)。
目前現(xiàn)有的Turbo碼譯碼器包括N個(gè)分量譯碼器和N-1個(gè)交織器,通過(guò)N個(gè)分量譯碼器和N-1個(gè)交織器的迭代處理來(lái)完成整個(gè)譯碼過(guò)程。其中,N個(gè)分量譯碼器中的每個(gè)分量譯碼器都按照相應(yīng)編碼器進(jìn)行編碼的順序產(chǎn)生數(shù)據(jù)塊中每一個(gè)數(shù)據(jù)的軟判信息,N-1個(gè)交織器中的每一個(gè)交織器都交織來(lái)自上一個(gè)分量譯碼器的軟判信息,并把被置換軟信息塊提供給后續(xù)分量譯碼器。因?yàn)椴煌姆至孔g碼器之間有反饋路徑,所以造成邏輯復(fù)雜和Turbo碼譯碼器硬件規(guī)模較大,因此Turbo碼譯碼器硬件的運(yùn)算速度也受到很大的限制。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的主要目的是提出一種Turbo碼譯碼器,以降低Turbo碼譯碼器的硬件規(guī)模。
為達(dá)到上述目的,本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的一種Turbo碼譯碼器,該譯碼器包括主控模塊,用于接收譯碼器外部所提供的譯碼參數(shù),并向RAM讀寫(xiě)控制模塊提供該譯碼參數(shù);定時(shí)器模塊,用于產(chǎn)生迭代計(jì)算所需要的定時(shí)信號(hào)和狀態(tài)機(jī)信號(hào),并向內(nèi)核計(jì)算模塊發(fā)送該定時(shí)信號(hào)和狀態(tài)機(jī)信號(hào);交織器模塊,用于在收到交織器模塊啟動(dòng)信號(hào)后產(chǎn)生交織地址,并向RAM讀寫(xiě)控制模塊提供交織地址;RAM讀寫(xiě)控制模塊,產(chǎn)生交織器模塊啟動(dòng)信號(hào),并根據(jù)主控模塊提供的譯碼參數(shù)、交織器模塊提供的交織器地址向內(nèi)核計(jì)算模塊提供計(jì)算輸入和讀寫(xiě)內(nèi)核計(jì)算模塊的計(jì)算輸出;內(nèi)核計(jì)算模塊,用于根據(jù)定時(shí)信號(hào)與狀態(tài)機(jī)信號(hào)和計(jì)算輸入迭代計(jì)算出譯碼結(jié)果。
所述內(nèi)核計(jì)算模塊為MAP算法計(jì)算模塊或Max-log-MAP算法計(jì)算模塊或log-MAP算法計(jì)算模塊。
所述RAM讀寫(xiě)控制模塊進(jìn)一步連接RAM0、RAM1和RAM2,其中RAM0,用于存儲(chǔ)反向迭代的累積路徑度量β;RAM1,用于存儲(chǔ)變量待譯碼的系統(tǒng)向量X、分量編碼器1輸出的校驗(yàn)向量Y、分量編碼器2輸出的校驗(yàn)向量Y’、上一次迭代的輸出的外信息L;RAM2,存儲(chǔ)迭代譯碼輸出的硬判決Z。
所述RAM1包括順序排列的四部分,其中第一部分存儲(chǔ)X向量、第二部分存儲(chǔ)Y向量、第三部分存儲(chǔ)Y’向量,第四部分存儲(chǔ)L向量;所述第一部分存儲(chǔ)X向量為在第一部分順序存儲(chǔ)譯碼塊的X向量和譯碼塊的網(wǎng)格終止比特X、X’;所述第二部分存儲(chǔ)Y向量為在第一部分順序存儲(chǔ)譯碼塊的Y向量和譯碼塊的網(wǎng)格終止比特Y;所述第三部分存儲(chǔ)Y’向量為在第三部分順序存儲(chǔ)譯碼塊的Y’向量和譯碼塊的網(wǎng)格終止比特Y’;所述第四部分存儲(chǔ)L向量為在第四部分存儲(chǔ)譯碼塊的L向量。
所述RAM讀寫(xiě)控制模塊包括Ram_control_adder模塊,用于根據(jù)從Ram1中讀出的X、Y、L計(jì)算分支轉(zhuǎn)移度量λ1、λ2和λ3;Ram_control_ram0模塊,用于將Ram0中保存的累積路徑度量β發(fā)送到內(nèi)核計(jì)算模塊,并將內(nèi)核計(jì)算模塊計(jì)算出的累積路徑度量β返回到Ram0;Ram_control_ram1模塊,用于將Ram1讀出的X、Y、L送到Ram_control_adder,并將內(nèi)核計(jì)算模塊計(jì)算出的L發(fā)送到Ram1;Ram_control_ram3模塊,用于將內(nèi)核計(jì)算模塊計(jì)算出的Z發(fā)送到Ram3。
所述RAM讀寫(xiě)控制模塊向內(nèi)核計(jì)算模塊提供計(jì)算輸入,并讀寫(xiě)內(nèi)核計(jì)算模塊的計(jì)算輸出為RAM讀寫(xiě)控制模塊以復(fù)幀為單位向內(nèi)核計(jì)算模塊提供計(jì)算輸入,并讀寫(xiě)內(nèi)核計(jì)算模塊的計(jì)算輸出和產(chǎn)生交織器模塊啟動(dòng)信號(hào)。
所述復(fù)幀由4個(gè)譯碼幀frame組成,每個(gè)譯碼幀由N+10個(gè)周期cycle組成,其中N表示譯碼塊長(zhǎng)度,每個(gè)周期包括4個(gè)時(shí)隙slot,一個(gè)slot與一個(gè)時(shí)鐘周期clock cycle對(duì)應(yīng),其中,第0譯碼幀為垂直后向迭代,第1譯碼幀為垂直前向迭代,第2譯碼幀為水平后向迭代,第3譯碼幀為水平前向迭代;對(duì)垂直后向迭代對(duì)于RAM1從cycle3至cycle5,在每個(gè)cycle中的第0slot讀Y1,第1slot讀X1;從cycle6開(kāi)始,在每個(gè)cycle中的第0slot讀Y1,第1slot讀X1,第2slot讀LL1,第3slot根據(jù)讀出的Y1,X,LL1計(jì)算出λ1、λ2、λ3,并在第3slot末將其鎖存輸出;第0、1、2、N+5、N+6、N+7、N+8cycle不做操作;對(duì)RAM0從cycle4開(kāi)始,在每個(gè)cycle中的第0slot寫(xiě)第0到第15比特位,第1slot寫(xiě)第16到第31比特位,第2slot寫(xiě)第32到第47比特位,第3slot寫(xiě)第48到第63比特位;其中,第0、1、2、3、N+7、N+8slot不做操作;對(duì)垂直前向迭代對(duì)RAM1從cycle1開(kāi)始,在每個(gè)cycle中的第0slot讀Y1,第1slot讀X1,第2slot讀LL1,第3slot根據(jù)讀出的Y1、X、LL1計(jì)算出λ1、λ2、λ3,并在第3slot末將其鎖存輸出;其中第0、(N+1)~(N+8)cycle不讀數(shù)據(jù);
對(duì)RAM0從cycle1開(kāi)始,在每個(gè)cycle中的第0slot寫(xiě)第0到第15比特位,第1slot寫(xiě)第16到第31比特位,第2slot寫(xiě)第32到第47比特位,第3slot寫(xiě)第48到第63比特位;其中第0、(N+1)~(N+8)cycle不做操作;對(duì)水平后向迭代對(duì)RAM1從cycle1至cycle3,在每個(gè)cycle中的第0slot讀Y0,第1slot讀X0,第2slot空操作,第3slot根據(jù)讀出的Y0,X0計(jì)算出λ1、λ2、λ3,并在第3slot末將其鎖存輸出,從cycle4開(kāi)始,在每個(gè)cycle中的第0slot讀Y0,第1slot讀X0,第2slot讀LL0,第3slot根據(jù)讀出的Y0,X0,LL0計(jì)算出λ1、λ2、λ3,并在第3slot末將其鎖存輸出;其中第0、(N+3)~(N+8)cycle不做操作;對(duì)RAM0從cycle2開(kāi)始,在每個(gè)cycle中的第0slot寫(xiě)第0到第15比特位,第1slot寫(xiě)第16到第31比特位,第2slot寫(xiě)第32到第47比特位,第3slot寫(xiě)第48到第63比特位;其中第0、1、(N+5)~(N+8)cycle不做操作;對(duì)水平前向迭代對(duì)RAM1從cycle1開(kāi)始,在每個(gè)cycle中的第0slot讀Y0,第1slot讀X0,第2slot讀LL0,第3slot根據(jù)讀出的Y0,X0,LL0計(jì)算出λ1、λ2、λ3,并在第3slot末將其鎖存輸出;其中第0、(N+1)~(N+8)cycle不讀數(shù)據(jù);對(duì)RAM0從cycle1開(kāi)始,在每個(gè)cycle中的第0slot寫(xiě)第0到第15比特位,第1slot寫(xiě)第16到第31比特位,第2slot寫(xiě)第32到第47比特位,第3slot寫(xiě)第48到第63比特位;其中第0、(N+1)~(N+8)cycle不做操作。
所述的主控模塊進(jìn)一步接收譯碼器啟動(dòng)信號(hào),并啟動(dòng)譯碼器。
從以上的技術(shù)方案可以看出,本發(fā)明所提出的Turbo碼譯碼器包括主控模塊、定時(shí)器模塊、交織器模塊、RAM讀寫(xiě)控制模塊和內(nèi)核計(jì)算模塊。主控模塊負(fù)責(zé)總體控制和對(duì)外接口,RAM讀寫(xiě)控制模塊負(fù)責(zé)譯碼迭代定時(shí)和存取控制,內(nèi)核計(jì)算模塊負(fù)責(zé)迭代計(jì)算。本發(fā)明通過(guò)各種模塊的功能整合和復(fù)用使得不同分量碼的譯碼之間不存在顯式的反饋路徑,本發(fā)明中交織器模塊可以完成譯碼所需的交織/解交織及順/逆序輸出功能,內(nèi)核計(jì)算模塊也可以完成正/逆向迭代計(jì)算,從而不存在反饋路徑,因此本發(fā)明所提出的Turbo譯碼器邏輯清晰,時(shí)序規(guī)則緊湊,極大地降低了Turbo碼譯碼器的硬件規(guī)模。
圖1為本發(fā)明一實(shí)施例的Turbo碼譯碼器的結(jié)構(gòu)圖。
圖2為本發(fā)明一實(shí)施例的定時(shí)器模塊的時(shí)序圖。
圖3為本發(fā)明一實(shí)施例的RAM讀寫(xiě)控制模塊的結(jié)構(gòu)示意圖。
圖4為本發(fā)明一實(shí)施例的RAM讀寫(xiě)控制模塊在第0譯碼幀的時(shí)序圖。
圖5為本發(fā)明一實(shí)施例的RAM讀寫(xiě)控制模塊在第1譯碼幀的時(shí)序圖。
圖6為本發(fā)明一實(shí)施例的RAM讀寫(xiě)控制模塊在第2譯碼幀的時(shí)序圖。
圖7為本發(fā)明一實(shí)施例的RAM讀寫(xiě)控制模塊在第3譯碼幀的時(shí)序圖。
具體實(shí)施例方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)表達(dá)得更加清楚明白,下面結(jié)合附圖及具體實(shí)施例對(duì)本發(fā)明再作進(jìn)一步詳細(xì)的說(shuō)明。
圖1為本發(fā)明的Turbo碼譯碼器(下面簡(jiǎn)稱(chēng)譯碼器)的結(jié)構(gòu)圖。如圖1所示,該譯碼器包括主控模塊101、定時(shí)器模塊102、交織器模塊103、RAM讀寫(xiě)控制模塊104和內(nèi)核計(jì)算模塊105。主控模塊101用于接收譯碼器外部所提供的譯碼參數(shù),并向RAM讀寫(xiě)控制模塊104提供該譯碼參數(shù);定時(shí)器模塊102用于產(chǎn)生迭代計(jì)算所需要的定時(shí)信號(hào)和狀態(tài)機(jī)信號(hào),并向內(nèi)核計(jì)算模塊105發(fā)送該定時(shí)信號(hào)和狀態(tài)機(jī)信號(hào);交織器模塊103用于在收到交織器模塊啟動(dòng)信號(hào)后產(chǎn)生交織地址,并向RAM讀寫(xiě)控制模塊104提供交織地址;RAM讀寫(xiě)控制模塊104用于產(chǎn)生交織器模塊啟動(dòng)信號(hào),并根據(jù)主控模塊101提供的譯碼參數(shù)、交織器模塊103提供的交織器地址向內(nèi)核計(jì)算模塊105提供計(jì)算輸入和讀寫(xiě)內(nèi)核計(jì)算模塊105的計(jì)算輸出;內(nèi)核計(jì)算模塊105用于根據(jù)定時(shí)模塊102提供的定時(shí)信號(hào)與狀態(tài)機(jī)信號(hào)和RAM讀寫(xiě)控制模塊104提供的輸入迭代計(jì)算出譯碼結(jié)果。
主控模塊101是譯碼器的控制部分,它接收譯碼器外部所提供的控制參數(shù),這些控制參數(shù)至少包括譯碼參數(shù),而譯碼參數(shù)包括譯碼塊長(zhǎng)度、迭代次數(shù)、待譯碼數(shù)據(jù)存放地址。優(yōu)選地,控制參數(shù)包括譯碼參數(shù)和啟動(dòng)譯碼器信號(hào)。主控模塊101將這些譯碼參數(shù)鎖存在主控模塊中,并向RAM讀寫(xiě)控制模塊104提供該譯碼參數(shù)。主控模塊101根據(jù)譯碼參數(shù)和譯碼器內(nèi)部的狀態(tài)控制譯碼器的工作,并在譯碼結(jié)束時(shí)產(chǎn)生譯碼結(jié)束信號(hào)和向譯碼器外部上報(bào)譯碼結(jié)果。主控模塊101和外部接口模塊106、定時(shí)器模塊102、交織器模塊103、RAM讀寫(xiě)控制模塊104連接。主控模塊101的操作歸結(jié)為啟動(dòng)譯碼器事件和在本次迭代結(jié)束時(shí)進(jìn)行譯碼器未來(lái)工作仲裁操作。
當(dāng)譯碼器收到外部接口模塊106所提供的啟動(dòng)譯碼器信號(hào)后,主控模塊101首先初始化譯碼器,其中包括初始化主控模塊101的迭代計(jì)數(shù)器和主控模塊中用于存放待譯碼數(shù)據(jù)的RAM讀寫(xiě)首地址寄存器組,然后主控模塊101啟動(dòng)定時(shí)器模塊102,至此完成啟動(dòng)譯碼器的事件。
啟動(dòng)譯碼器后,當(dāng)主控模塊101收到定時(shí)器模塊102發(fā)出的本次迭代結(jié)束信號(hào)時(shí),主控模塊101開(kāi)始進(jìn)行譯碼器未來(lái)工作仲裁操作。首先主控模塊101控制迭代計(jì)數(shù)器進(jìn)位;然后根據(jù)迭代計(jì)數(shù)器是否等于給定的迭代次數(shù)來(lái)判斷是否本塊譯碼結(jié)束,如果是則產(chǎn)生塊譯碼結(jié)束信號(hào),否則進(jìn)行下一次迭代。
定時(shí)器模塊102、交織器模塊103和RAM讀寫(xiě)控制模塊104組成迭代子系統(tǒng)。主控模塊101直接控制該迭代子系統(tǒng),迭代子系統(tǒng)負(fù)責(zé)一次迭代當(dāng)中的所有邏輯控制。主控模塊101在啟動(dòng)迭代子系統(tǒng)之前,首先將迭代計(jì)算所需要的控制參數(shù)鎖存到自身相應(yīng)的寄存器中,這些控制參數(shù)包括譯碼器長(zhǎng)度、迭代次數(shù)和待譯碼數(shù)據(jù)地址。主控模塊101通過(guò)產(chǎn)生定時(shí)器模塊啟動(dòng)信號(hào)啟動(dòng)迭代子系統(tǒng)。
主控模塊101啟動(dòng)迭代控制子系統(tǒng)后,定時(shí)器模塊102產(chǎn)生一次迭代所需要的迭代定時(shí)信號(hào),并給出迭代計(jì)算所需的各計(jì)數(shù)器的計(jì)數(shù)值,即狀態(tài)機(jī)信號(hào)。迭代定時(shí)信號(hào)和計(jì)數(shù)器的計(jì)數(shù)值將作為迭代子系統(tǒng)工作的定時(shí)之用。RAM讀寫(xiě)控制模塊104在迭代定時(shí)信號(hào)及計(jì)數(shù)器的計(jì)數(shù)值的驅(qū)動(dòng)下,根據(jù)主控模塊101提供的譯碼參數(shù),向內(nèi)核計(jì)算模塊105提供計(jì)算輸入及讀寫(xiě)內(nèi)核計(jì)算模塊105的計(jì)算輸出,同時(shí)根據(jù)時(shí)序需要產(chǎn)生包括交織器模塊103的控制信號(hào),其中這些控制信號(hào)包括啟動(dòng)交織器模塊103的信號(hào)和方向信號(hào)。
交織器模塊103在RAM讀寫(xiě)控制模塊104給出啟動(dòng)信號(hào)后,根據(jù)主控模塊101提供的參數(shù)和RAM讀寫(xiě)控制模塊104給出的方向信號(hào)的指示,正序或逆序產(chǎn)生交織地址,供RAM讀寫(xiě)控制模塊104使用。本次迭代計(jì)算完成時(shí),定時(shí)器模塊102產(chǎn)生本次迭代結(jié)束信號(hào),并將該信號(hào)上報(bào)主控模塊101。
啟動(dòng)信號(hào)在各時(shí)鐘信號(hào)有效前有效,為1個(gè)時(shí)鐘寬度的負(fù)脈沖信號(hào),啟動(dòng)信號(hào)后第2個(gè)時(shí)鐘周期開(kāi)始,各時(shí)鐘信號(hào)有效。在啟動(dòng)信號(hào)有效時(shí),主控模塊的各個(gè)參數(shù)已有效。
下面分別對(duì)迭代子系統(tǒng)的中的定時(shí)器模塊102、交織器模塊103和RAM讀寫(xiě)控制模塊104進(jìn)行說(shuō)明,并且對(duì)內(nèi)核計(jì)算模塊105也進(jìn)行說(shuō)明。
定時(shí)器模塊102用于產(chǎn)生迭代計(jì)算所需要的各種定時(shí)信號(hào)及必要的狀態(tài)機(jī)信號(hào)。由于譯碼器外部送給譯碼器的只有一個(gè)時(shí)鐘信號(hào),因此譯碼器本身必須具備定時(shí)器模塊101。當(dāng)譯碼器外部向譯碼器發(fā)出譯碼器啟動(dòng)信號(hào)后,譯碼器的主控模塊101就啟動(dòng)定時(shí)器模塊102,以后的迭代計(jì)算工作都是以定時(shí)器模塊產(chǎn)生的迭代定時(shí)信號(hào)作為時(shí)序基準(zhǔn)。圖2為本發(fā)明一實(shí)施例的迭代定時(shí)器模塊的時(shí)序圖。
在迭代定時(shí)信號(hào)及狀態(tài)機(jī)的驅(qū)動(dòng)下,RAM讀寫(xiě)控制模塊104用于根據(jù)主控模塊101提供的控制參數(shù),向內(nèi)核計(jì)算模塊105提供計(jì)算輸入及讀寫(xiě)內(nèi)核計(jì)算模塊105的計(jì)算輸出,同時(shí)根據(jù)時(shí)序需要產(chǎn)生交織器模塊103所需的控制信號(hào)。RAM讀寫(xiě)模塊104還分別連接RAM0、RAM1和RAM2,其中RAM0用于存儲(chǔ)反向迭代的累積路徑度量β;RAM1用于存儲(chǔ)變量待譯碼的系統(tǒng)向量X、分量編碼器1輸出的校驗(yàn)向量Y、分量編碼器2輸出的校驗(yàn)向量Y’、上一次迭代的輸出的外信息L;RAM2用于存儲(chǔ)迭代譯碼輸出的硬判決Z,Z即譯碼結(jié)果。
譯碼器對(duì)一幀數(shù)據(jù)的譯碼由若干次迭代完成,迭代次數(shù)多少可以由外部設(shè)定。每次迭代稱(chēng)為譯碼器的一個(gè)復(fù)幀(multi-frame),每個(gè)譯碼器的復(fù)幀由4個(gè)譯碼幀(frame)組成,每個(gè)譯碼幀由N+10個(gè)周期(cycle)組成,其中N表示譯碼塊長(zhǎng)度,每個(gè)周期包括4個(gè)時(shí)隙(slot),一個(gè)時(shí)隙與一個(gè)時(shí)鐘周期對(duì)應(yīng)。各時(shí)間單位的標(biāo)號(hào)均從“0”開(kāi)始。
內(nèi)核計(jì)算模塊105是計(jì)算譯碼算法的內(nèi)核模塊。內(nèi)核計(jì)算模塊105可以為實(shí)現(xiàn)MAP算法的模塊,或者是實(shí)現(xiàn)Max-log-MAP算法的模塊、或者是實(shí)現(xiàn)log-MAP等算法的模塊。優(yōu)選地,內(nèi)核計(jì)算模塊105是實(shí)現(xiàn)log-MAP算法的模塊。
內(nèi)核計(jì)算模塊105用于根據(jù)輸入的待譯碼數(shù)據(jù)進(jìn)行迭代計(jì)算,并計(jì)算出譯碼結(jié)果。待譯碼數(shù)據(jù)為信道觀測(cè)的對(duì)數(shù)似然比(LLR),用8比特定點(diǎn)有符號(hào)數(shù)表示。待譯碼數(shù)據(jù)可存放在譯碼器外部的RAM1,并通過(guò)譯碼器與RAM1的接口而輸入譯碼器。在RAM1中存儲(chǔ)的待譯碼數(shù)據(jù)的存儲(chǔ)空間包括4部分。第一部分存儲(chǔ)待譯碼的系統(tǒng)向量X向量,第二部分存儲(chǔ)分量編碼器1輸出的校驗(yàn)向量Y向量,第三部分存儲(chǔ)Y’向量,第四部分存儲(chǔ)上一次迭代的輸出的外信息L向量。
表1為RAM1中待譯碼數(shù)據(jù)的存儲(chǔ)空間表,如表1所示,待譯碼數(shù)據(jù)的存儲(chǔ)空間分為四部分,其中第一部分存儲(chǔ)X向量、第二部分存儲(chǔ)Y向量、第三部分存儲(chǔ)Y’向量,第四部分存儲(chǔ)L向量。待譯碼數(shù)據(jù)的存儲(chǔ)空間分配如下
表1待譯碼數(shù)據(jù)存儲(chǔ)空間表待譯碼數(shù)據(jù)的存儲(chǔ)空間的第一部分用于存儲(chǔ)X向量。表2為第一部分中X向量存儲(chǔ)的空間表。如表2所示,X向量的存儲(chǔ)空間為
表2X向量存儲(chǔ)空間表待譯碼數(shù)據(jù)的存儲(chǔ)空間的第二部分用于存儲(chǔ)Y向量。表3為第二部分中Y向量存儲(chǔ)空間表,如表3所示,Y向量的存儲(chǔ)空間為
表3Y向量存儲(chǔ)空間表待譯碼數(shù)據(jù)的存儲(chǔ)空間的第三部分用于存儲(chǔ)Y’向量。表4為第三部分中Y’向量存儲(chǔ)空間表。如表4所示,Y’向量的存儲(chǔ)空間為
表4Y’向量存儲(chǔ)空間表待譯碼數(shù)據(jù)的存儲(chǔ)空間的第四部分用于存儲(chǔ)Y’向量。表5為第三部分中L向量存儲(chǔ)空間表。如表5所示,L向量的存儲(chǔ)空間為
表5L向量存儲(chǔ)空間表其中,X向量網(wǎng)格終止比特的排列順序?yàn)閄(N+1)X(N+2)X(N+3)X’(N+1)X’(N+2)X’(N+3)Y向量網(wǎng)格終止比特的排列順序?yàn)閅(N+1)Y(N+2)Y(N+3)Y’向量網(wǎng)格終止比特的排列順序?yàn)閅’(N+1)Y’(N+2)Y’(N+3)圖3所示為本發(fā)明一實(shí)施例的RAM讀寫(xiě)控制模塊的結(jié)構(gòu)示意圖。如圖3所示,該RAM讀寫(xiě)控制模塊包括ram_control_adder子模塊301、ram_control_ram0子模塊302和ram_control_ram1子模塊303。ram_control_adder子模塊301用于根據(jù)從ram1中讀出的X、Y、L計(jì)算分支轉(zhuǎn)移度量λ1、λ2和λ3,并將λ1、λ2和λ3送至內(nèi)核計(jì)算模塊105進(jìn)行計(jì)算;ram_control_ram0子模塊303用于將ram0中保存的β發(fā)送到內(nèi)核計(jì)算模塊105,并將內(nèi)核計(jì)算模塊105計(jì)算出來(lái)的β發(fā)送到ram0;ram_control_ram1子模塊302用于將ram1中讀出的X、Y、L發(fā)送到ram_control_adder301子模塊,以用于計(jì)算λ1、λ2和λ3,并將內(nèi)核計(jì)算模塊105中計(jì)算出來(lái)的L發(fā)送到ram1。ram_control_ram2子模塊304用于將內(nèi)核計(jì)算模塊105計(jì)算出來(lái)的Z每32位一次送到ram2。
RAM讀寫(xiě)控制模塊104的工作以復(fù)幀(multi-frame)為單位,在定時(shí)器模塊102提供的各種定時(shí)信號(hào)的驅(qū)動(dòng)下完成工作。不同復(fù)幀中,RAM讀寫(xiě)控制模塊104所完成的工作完全相同。即RAM讀寫(xiě)控制模塊不關(guān)心復(fù)幀號(hào),不關(guān)心當(dāng)前是第幾次迭代。
圖4為RAM讀寫(xiě)控制模塊在第0譯碼幀的時(shí)序圖。對(duì)第0譯碼幀即為垂直后向迭代。其中Int_gen表示交織器模塊,Ram_read_write_logic表示RAM讀寫(xiě)控制模塊,Kernel表示內(nèi)核計(jì)算模塊。如圖4所示對(duì)RAM1從cycle3至cycle5,在每個(gè)cycle中的第0slot讀Y1,第1slot讀X1;從cycle6開(kāi)始,在每個(gè)cycle中的第0slot讀Y1,第1slot讀X1,第2slot讀LL1,第3slot根據(jù)讀出的Y1,X,LL1計(jì)算出λ(包括λ1,λ2,λ3),并在第3slot末將其鎖存輸出;第0、1、2、N+5、N+6、N+7、N+8cycle不做操作。
地址說(shuō)明對(duì)于X1,前三個(gè)地址分別為N+2,N+1,N,其余依次為交織器生成器給出的Int(N-1)~I(xiàn)nt(1);
對(duì)于Y1,其讀地址為(N+2)~1;對(duì)于LL1,前三位不讀,LL1以零值記,其余依次為交織器生成器給出的Int(N-1)~I(xiàn)nt(1);交織地址從交織器模塊103讀到。
對(duì)RAM0從cycle4開(kāi)始,在每個(gè)cycle中的第0slot寫(xiě)第0到第15比特位,即β(15~0),第1slot寫(xiě)β(31~16),第2slot寫(xiě)β(47~32),第3slot寫(xiě)β(63~48);其中,第0、1、2、3、N+7、N+8slot不做操作;地址說(shuō)明對(duì)于β,其寫(xiě)地址依次為(N+3)~1;由于每一個(gè)β要用ram0的4個(gè)存儲(chǔ)單元,因而實(shí)際映射到ram中的寫(xiě)地址為(4N+12)~4。
圖5為RAM讀寫(xiě)控制模塊在第1譯碼幀的時(shí)序圖。第1譯碼幀是垂直前向迭代。如圖5所示對(duì)RAM1從cycle1開(kāi)始,在每個(gè)cycle中的第0slot讀Y1,第1slot讀X1,第2slot讀LL1,第3slot根據(jù)讀出的Y1,X,LL1計(jì)算出λ(包括λ1,λ2,λ3),并在第3slot末將其鎖存輸出;其中第0、(N+1)~(N+8)cycle不讀數(shù)據(jù);地址說(shuō)明對(duì)于X1,讀地址為交織器生成器給出的Int(0)~I(xiàn)nt(N-1);對(duì)于Y1,讀地址為0~(N-1);對(duì)于LL1,讀地址為交織器生成器給出的Int(0)~I(xiàn)nt(N-1);從cycle6開(kāi)始,在每個(gè)cycle中的第3slot寫(xiě)LL0;其中第0~5、N+6、N+7、N+8cycle不做操作;對(duì)于LL0,寫(xiě)地址為交織器生成器給出的Int(0)~I(xiàn)nt(N-1),相當(dāng)于對(duì)LL1的讀地址延后5拍;
對(duì)RAM0從cycle1開(kāi)始,在每個(gè)cycle中的第0slot讀β(15~0),第1slot讀β(31~16),第2slot讀β(47~32),第3slot讀β(63~48);其中第0、(N+1)~(N+8)cycle不做操作地址說(shuō)明對(duì)于β,其讀地址依次為1~N;實(shí)際映射到ram0中的讀地址為4~4N。
圖6為RAM讀寫(xiě)控制模塊在第2譯碼幀的時(shí)序圖。第2譯碼幀是水平后向迭代。如圖6所示對(duì)RAM1從cycle1至cycle3,在每個(gè)cycle中的第0slot讀Y0,第1slot讀X0,第2slot空操作,第3slot根據(jù)讀出的Y0,X0計(jì)算出λ(包括λ1,λ2,λ3),并在第3slot末將其鎖存輸出;從cycle4開(kāi)始,在每個(gè)cycle中的第0slot讀Y0,第1slot讀X0,第2slot讀LL0,第3slot根據(jù)讀出的Y0,X0,LL0計(jì)算出λ(包括λ1,λ2,λ3),并在第3slot末將其鎖存輸出;其中第0、(N+3)~(N+8)cycle不做操作;地址說(shuō)明對(duì)于X0,其讀地址為(N+2)~1;對(duì)于Y0,其讀地址為(N+2)~1;對(duì)于LL0,前三位(cycle1至cycle3)不讀,LL0以零值記,其余讀地址為(N-1)~1;對(duì)RAM0從cycle2開(kāi)始,在每個(gè)slot中的第0cycle寫(xiě)β(15~0),第1cycle寫(xiě)β(31~16),第2cycle寫(xiě)β(47~32),第3cycle寫(xiě)β(63~48);其中第0、1、(N+5)~(N+8)cycle不做操作;地址說(shuō)明
對(duì)于β,其寫(xiě)地址依次為(N+3)~1;映射到ram0中的寫(xiě)地址為4(N+3)~4。
圖7為RAM讀寫(xiě)控制模塊在第3譯碼幀的時(shí)序圖。第3譯碼幀是水平前向迭代。其中,pipeline_1到pipeline_4分別表示流水時(shí)延。如圖7所示對(duì)RAM1從cycle1開(kāi)始,在每個(gè)cycle中的第0slot讀Y0,第1slot讀X0,第2slot讀LL0,第3slot根據(jù)讀出的Y0,X0,LL0計(jì)算出λ(包括λ1,λ2,λ3),并在第3slot末將其鎖存輸出;其中第0、(N+1)~(N+8)cycle不讀數(shù)據(jù);地址說(shuō)明對(duì)于X0,讀地址為0~(N-1);對(duì)于Y0,讀地址為0~(N-1);對(duì)于LL0,讀地址為0~(N-1);從cycle6開(kāi)始,在每個(gè)cycle中的第3slot寫(xiě)LL1;其中第0~5、N+6、N+7、N+8cycle不做操作;對(duì)于LL1,寫(xiě)地址為0~(N-1),相當(dāng)于對(duì)LL0的讀地址延后5拍。
對(duì)RAM0從cycle1開(kāi)始,在每個(gè)cycle中的第0slot讀β(15~0),第1slot讀β(31~16),第2slot讀β(47~32),第3slot讀β(63~48);其中第0、(N+1)~(N+8)cycle不做操作;地址說(shuō)明對(duì)于β,其讀地址依次為1~N,映射到ram0中的地址為4~4N。
對(duì)RAM3從cycle(6)至cycle(N+5),每個(gè)cycle都會(huì)收到kernel送來(lái)的一個(gè)Z,每收到16個(gè)Z,向ram3中寫(xiě)入一次;其中第0~5,(N+6)~(N+8)cycle不做操作;
地址說(shuō)明對(duì)于Z,其寫(xiě)地址依次為0~(N-1)/4。
在一個(gè)復(fù)幀結(jié)束時(shí),RAM讀寫(xiě)控制模塊將需要上報(bào)的參數(shù)穩(wěn)定在相應(yīng)的信號(hào)線上。
以上所述,僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種Turbo碼譯碼器,其特征在于,該譯碼器包括主控模塊,用于接收譯碼器外部所提供的譯碼參數(shù),并向RAM讀寫(xiě)控制模塊提供該譯碼參數(shù);定時(shí)器模塊,用于產(chǎn)生迭代計(jì)算所需要的定時(shí)信號(hào)和狀態(tài)機(jī)信號(hào),并向內(nèi)核計(jì)算模塊發(fā)送該定時(shí)信號(hào)和狀態(tài)機(jī)信號(hào);交織器模塊,用于在收到交織器模塊啟動(dòng)信號(hào)后產(chǎn)生交織地址,并向RAM讀寫(xiě)控制模塊提供交織地址;RAM讀寫(xiě)控制模塊,產(chǎn)生交織器模塊啟動(dòng)信號(hào),并根據(jù)主控模塊提供的譯碼參數(shù)、交織器模塊提供的交織器地址向內(nèi)核計(jì)算模塊提供計(jì)算輸入和讀寫(xiě)內(nèi)核計(jì)算模塊的計(jì)算輸出;內(nèi)核計(jì)算模塊,用于根據(jù)定時(shí)信號(hào)與狀態(tài)機(jī)信號(hào)和計(jì)算輸入迭代計(jì)算出譯碼結(jié)果。
2.根據(jù)權(quán)利要求1所述的Turbo碼譯碼器,其特征在于,所述內(nèi)核計(jì)算模塊為MAP算法計(jì)算模塊或Max-log-MAP算法計(jì)算模塊或log-MAP算法計(jì)算模塊。
3.根據(jù)權(quán)利要求1所述的Turbo碼譯碼器,其特征在于,所述RAM讀寫(xiě)控制模塊進(jìn)一步連接RAM0、RAM1和RAM2,其中RAM0,用于存儲(chǔ)反向迭代的累積路徑度量β;RAM1,用于存儲(chǔ)變量待譯碼的系統(tǒng)向量X、分量編碼器1輸出的校驗(yàn)向量Y、分量編碼器2輸出的校驗(yàn)向量Y’、上一次迭代的輸出的外信息L;RAM2,存儲(chǔ)迭代譯碼輸出的硬判決Z。
4.根據(jù)權(quán)利要求3所述的Turbo碼譯碼器,其特征在于,所述RAM1包括順序排列的四部分,其中第一部分存儲(chǔ)X向量、第二部分存儲(chǔ)Y向量、第三部分存儲(chǔ)Y’向量,第四部分存儲(chǔ)L向量;所述第一部分存儲(chǔ)X向量為在第一部分順序存儲(chǔ)譯碼塊的X向量和譯碼塊的網(wǎng)格終止比特X、X’;所述第二部分存儲(chǔ)Y向量為在第一部分順序存儲(chǔ)譯碼塊的Y向量和譯碼塊的網(wǎng)格終止比特Y;所述第三部分存儲(chǔ)Y,向量為在第三部分順序存儲(chǔ)譯碼塊的Y’向量和譯碼塊的網(wǎng)格終止比特Y’;所述第四部分存儲(chǔ)L向量為在第四部分存儲(chǔ)譯碼塊的L向量。
5.根據(jù)權(quán)利要求3所述的Turbo碼譯碼器,其特征在于,所述RAM讀寫(xiě)控制模塊包括Ram_control_adder模塊,用于根據(jù)從Ram1中讀出的X、Y、L計(jì)算分支轉(zhuǎn)移度量λ1、λ2和λ3;Ram_control_ram0模塊,用于將Ram0中保存的累積路徑度量β發(fā)送到內(nèi)核計(jì)算模塊,并將內(nèi)核計(jì)算模塊計(jì)算出的累積路徑度量β返回到Ram0;Ram_control_ram1模塊,用于將Ram1讀出的X、Y、L送到Ram_control_adder,并將內(nèi)核計(jì)算模塊計(jì)算出的L發(fā)送到Ram1;Ram_control_ram3模塊,用于將內(nèi)核計(jì)算模塊計(jì)算出的Z發(fā)送到Ram3。
6.根據(jù)權(quán)利要求5所述的Turbo碼譯碼器,其特征在于,所述RAM讀寫(xiě)控制模塊向內(nèi)核計(jì)算模塊提供計(jì)算輸入,并讀寫(xiě)內(nèi)核計(jì)算模塊的計(jì)算輸出為RAM讀寫(xiě)控制模塊以復(fù)幀為單位向內(nèi)核計(jì)算模塊提供計(jì)算輸入,并讀寫(xiě)內(nèi)核計(jì)算模塊的計(jì)算輸出和產(chǎn)生交織器模塊啟動(dòng)信號(hào)。
7.根據(jù)權(quán)利要求6所述的Turbo碼譯碼器,其特征在于,所述復(fù)幀由4個(gè)譯碼幀frame組成,每個(gè)譯碼幀由N+10個(gè)周期cycle組成,其中N表示譯碼塊長(zhǎng)度,每個(gè)周期包括4個(gè)時(shí)隙slot,一個(gè)slot與一個(gè)時(shí)鐘周期clock cycle對(duì)應(yīng),其中,第0譯碼幀為垂直后向迭代,第1譯碼幀為垂直前向迭代,第2譯碼幀為水平后向迭代,第3譯碼幀為水平前向迭代;對(duì)垂直后向迭代對(duì)于RAM1從cycle3至cycle5,在每個(gè)cycle中的第0slot讀Y1,第1slot讀X1;從cycle6開(kāi)始,在每個(gè)cycle中的第0slot讀Y1,第1slot讀X1,第2slot讀LL1,第3slot根據(jù)讀出的Y1,X,LL1計(jì)算出λ1、λ2、λ3,并在第3slot末將其鎖存輸出;第0、1、2、N+5、N+6、N+7、N+8cycle不做操作;對(duì)RAM0從cycle4開(kāi)始,在每個(gè)cycle中的第0slot寫(xiě)第0到第15比特位,第1slot寫(xiě)第16到第31比特位,第2slot寫(xiě)第32到第47比特位,第3slot寫(xiě)第48到第63比特位;其中,第0、1、2、3、N+7、N+8slot不做操作;對(duì)垂直前向迭代對(duì)RAM1從cycle1開(kāi)始,在每個(gè)cycle中的第0slot讀Y1,第1slot讀X1,第2slot讀LL1,第3slot根據(jù)讀出的Y1、X、LL1計(jì)算出λ1、λ2、λ3,并在第3slot末將其鎖存輸出;其中第0、(N+1)~(N+8)cycle不讀數(shù)據(jù);對(duì)RAM0從cycle1開(kāi)始,在每個(gè)cycle中的第0slot寫(xiě)第0到第15比特位,第1slot寫(xiě)第16到第31比特位,第2slot寫(xiě)第32到第47比特位,第3slot寫(xiě)第48到第63比特位;其中第0、(N+1)~(N+8)cycle不做操作;對(duì)水平后向迭代對(duì)RAM1從cycle1至cycle3,在每個(gè)cycle中的第0slot讀Y0,第1slot讀X0,第2slot空操作,第3slot根據(jù)讀出的Y0,X0計(jì)算出λ1、λ2、λ3,并在第3slot末將其鎖存輸出,從cycle4開(kāi)始,在每個(gè)cycle中的第0slot讀Y0,第1slot讀X0,第2slot讀LL0,第3slot根據(jù)讀出的Y0,X0,LL0計(jì)算出λ1、λ2、λ3,并在第3slot末將其鎖存輸出;其中第0、(N+3)~(N+8)cycle不做操作;對(duì)RAM0從cycle2開(kāi)始,在每個(gè)cycle中的第0slot寫(xiě)第0到第15比特位,第1slot寫(xiě)第16到第31比特位,第2slot寫(xiě)第32到第47比特位,第3slot寫(xiě)第48到第63比特位;其中第0、1、(N+5)~(N+8)cycle不做操作;對(duì)水平前向迭代對(duì)RAM1從cycle1開(kāi)始,在每個(gè)cycle中的第0slot讀Y0,第1slot讀X0,第2slot讀LL0,第3slot根據(jù)讀出的Y0,X0,LL0計(jì)算出λ1、λ2、λ3,并在第3slot末將其鎖存輸出;其中第0、(N+1)~(N+8)cycle不讀數(shù)據(jù);對(duì)RAM0從cycle1開(kāi)始,在每個(gè)cycle中的第0slot寫(xiě)第0到第15比特位,第1slot寫(xiě)第16到第31比特位,第2slot寫(xiě)第32到第47比特位,第3slot寫(xiě)第48到第63比特位;其中第0、(N+1)~(N+8)cycle不做操作。
8.根據(jù)權(quán)利要求1所述的Turbo碼譯碼器,其特征在于,所述的主控模塊進(jìn)一步接收譯碼器啟動(dòng)信號(hào),并啟動(dòng)譯碼器。
全文摘要
本發(fā)明公開(kāi)了一種Turbo碼譯碼器,包括主控模塊,用于接收譯碼器外部所提供的控制參數(shù),并向RAM讀寫(xiě)控制模塊提供該控制參數(shù);定時(shí)器模塊,用于產(chǎn)生迭代計(jì)算所需要的定時(shí)信號(hào)和狀態(tài)機(jī),并向內(nèi)核計(jì)算模塊發(fā)送該定時(shí)信號(hào)和狀態(tài)機(jī);交織器模塊,用于在收到交織器模塊啟動(dòng)信號(hào)后產(chǎn)生交織地址,并向RAM讀寫(xiě)控制模塊提供交織地址;RAM讀寫(xiě)控制模塊,根據(jù)主控模塊提供的控制參數(shù)、交織器模塊提供的交織器地址向內(nèi)核計(jì)算模塊提供計(jì)算輸入,并讀寫(xiě)內(nèi)核計(jì)算模塊的計(jì)算輸出和產(chǎn)生交織器模塊啟動(dòng)信號(hào);內(nèi)核計(jì)算模塊,用于根據(jù)定時(shí)信號(hào)與狀態(tài)機(jī)和計(jì)算輸入迭代計(jì)算出譯碼結(jié)果。本發(fā)明所提出的Turbo碼譯碼器沒(méi)有反饋,邏輯清晰,時(shí)序規(guī)則,極大地降低了硬件規(guī)模。
文檔編號(hào)H03M13/00GK1790919SQ200410098700
公開(kāi)日2006年6月21日 申請(qǐng)日期2004年12月15日 優(yōu)先權(quán)日2004年12月15日
發(fā)明者趙訓(xùn)威 申請(qǐng)人:普天信息技術(shù)研究院