两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

現(xiàn)場實時產(chǎn)生寬帶碼分多址Turbo碼內(nèi)交織器算法及其裝置的制作方法

文檔序號:7631688閱讀:268來源:國知局
專利名稱:現(xiàn)場實時產(chǎn)生寬帶碼分多址Turbo碼內(nèi)交織器算法及其裝置的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及信道糾錯編碼,具體涉及寬帶碼分多址Turbo碼內(nèi)交織器現(xiàn)場實時產(chǎn)生的算法和硬件實現(xiàn)。
寬帶碼分多址(WCDMA)是第三代移動通信系統(tǒng)標(biāo)準(zhǔn)化組織3GPP(3rdGeneration Partnership Project)提出的無線傳輸技術(shù)(RTT)方案。3GPP的技術(shù)規(guī)范中將Turbo碼作為誤碼率10-6以下數(shù)據(jù)業(yè)務(wù)的信道編碼。Turbo碼是一種并行級聯(lián)碼,需要交織器對原信息比特序列重新組合后輸入第二個系統(tǒng)遞歸卷積編碼器中進(jìn)行編碼。而譯碼時也需要使用相應(yīng)的交織器給出信息比特重新組合的具體方式。
3GPP給出了Turbo內(nèi)交織器算法(見附錄一),可唯一確定40-5114間任意長度的交織器。現(xiàn)簡述其主要步驟如下Turbo內(nèi)交織器的產(chǎn)生分為兩個階段,一為母交織矩陣的計算,二為無效交織位的刪除。母交織矩陣的深度需確保大于等于目標(biāo)交織器的深度,而矩陣變換后得到的母交織器中可能有一些超出目標(biāo)交織器深度的位,必須刪除后得到目標(biāo)交織器??梢?,第二階段的算法比較簡單,只要對交織位和目標(biāo)交織器的深度的大小作出判斷就可以實現(xiàn),而算法的重點在于第一階段。
母交織矩陣的計算又分為三個步驟。
首先是確定母交織矩陣的行數(shù)(R)和列數(shù)(C),以及質(zhì)數(shù)核p。列數(shù)的確定相對簡單,為5、10或20,由目標(biāo)交織器深度(K)決定。然后確定質(zhì)數(shù)核,p應(yīng)為滿足(p+1)×R≥K的最小質(zhì)數(shù)。行數(shù)C則取為p-1、p或p+1,在保證C×R≥K的前提下盡量取較小者。
第二步是母交織矩陣的行內(nèi)變換。行內(nèi)變換模式各行都不相同,但都由同樣的基序列變換而來。基序列&lt;s(j)&gt;j∈{0,1,…,p-2}的由質(zhì)數(shù)核p唯一確定s(j)=(v×s(j-1))modp,j=1,2,…,(p-2),且s(0)=1其中,v由3GPP提供的表查找而得,和p有直接對應(yīng)關(guān)系(見附錄一Table2)。而各行的變換模式是通過對基序列的抽取實現(xiàn)的,第i行的抽取序列由質(zhì)數(shù)ri完全刻劃,而各行的ri可組成一個質(zhì)數(shù)序列&lt;ri&gt;i∈{0,1,…,R-1}。&lt;ri&gt;i∈{0,1,…,R-1}從&lt;qi&gt;i∈{0,1,…,R-1}而來rT(i)=qi,i=0,1,…,R-1,其中,&lt;Ti&gt;i∈{0,1,…,R-1}是3GPP規(guī)范給出的行間變換模式,根據(jù)目標(biāo)交織器的深度有在4種模式中選擇(見附錄一Table3)。而&lt;qi&gt;i∈{0,1,…,R-1}是這樣定義的q0等于1,&lt;qi&gt;i∈{1,…,R-1}是最小的質(zhì)數(shù)序列,且序列中各質(zhì)數(shù)須和(p-1)互質(zhì)??梢钥吹?,基序列的長度僅為p-1,而母交織矩陣的列數(shù)則可能為p-1、p或p+1,其算法如下<pre listing-type="program-listing"><![CDATA[ if(C=p)thenUi(j)=s((j×ri)mod(p-1)),j=0,1,…,(p-2),and Ui(p-1)=0,where Ui(j)is the original bit position of j-th permuted bit of i-th row. end if if(C=p+1)thenUi(j)=s((j×ri)mod(p-1)),j=0,1,…,(p-2). Ui(p-1)=0,and Ui(p)=p,where Ui(j)is the original bit position of j-th permuted bit ofi-throw,andif(K=R×C)thenExchange UR-1(p) with UR-1(0).end if end if if(C=p-1)then Ui(j)=s((j×ri)mod(p-1))-1,j=0,1…,(p-2), where Ui(j) is the original bit position of j-th permuted bit of i-th row.end if]]></pre>第三步是母交織矩陣的行間變換。3GPP根據(jù)交織器長度給出了四種變換模式,只要將母交織矩陣各行按新模式排列即可。
總結(jié)3GPP規(guī)范的Turbo內(nèi)交織算法,發(fā)現(xiàn)用FPGA實施具有以下難點(1)母交織矩陣的計算是逐行進(jìn)行的,但輸出卻是列序的,使得必須先存儲全部母交織矩陣然后才能輸出,因此需要的片內(nèi)存儲空間至少應(yīng)滿足最大交織深度所要求的13bit×5114=66,482bit對FPGA內(nèi)部存儲器來說是相當(dāng)可觀的開銷。(2)母交織矩陣計算和輸出方向的不一致還導(dǎo)致時間復(fù)雜度的增加。由于交織器必須在計算完整張表后才能開始輸出數(shù)據(jù),Turbo譯碼器在此之前即使已完成一次迭代算法,也必須等交織表計算完畢才能工作,降低了交織器和譯碼器的并行度。(3)母交織矩陣的行間變換和行內(nèi)變換過程中大量使用乘法和取模運算,在硬件電路實現(xiàn)中開銷過大。
目前,對現(xiàn)場實時產(chǎn)生Turbo內(nèi)交織器的算法研究較少,主要采用對少數(shù)幾種業(yè)務(wù)中涉及到的交織器事先存儲的方法?,F(xiàn)場產(chǎn)生Turbo交織器的算法國外有在DSP上實現(xiàn)的例子,但對其作大規(guī)模的簡化得以在單片F(xiàn)PGA上實現(xiàn),并做到和Turbo譯碼器并行工作,集成于單芯片上,國內(nèi)外尚無相關(guān)先例和研究成果的報導(dǎo)。
本發(fā)明目的是針對上述現(xiàn)有技術(shù)的不足,提出現(xiàn)場實時產(chǎn)生交織器的算法。新算法順序計算并輸出交織器,可以和基于滑動窗算法的Turbo譯碼器協(xié)同工作,避免了整張交織表的存儲,大大降低了存儲器需求。由于新算法實現(xiàn)的交織器僅需要少量邏輯和存儲資源即可實現(xiàn),為集成Turbo譯碼器和交織器于單片F(xiàn)PGA創(chuàng)造了條件。
本發(fā)明技術(shù)方案描述如下
首先,注意到原算法母交織矩陣的計算和輸出方向不一致是導(dǎo)致空間和時間復(fù)雜度增加的主要原因,新算法采取了不同的算法結(jié)構(gòu)。
觀察行間變換和行內(nèi)變換算法,假設(shè)變換后的母交織矩陣為MIII(x,y),原交織矩陣為MI(x,y),則可以寫出它們位元的對應(yīng)關(guān)系MIII(x,y)=MI(T(x),UT(x)(y))因為T{},S{},U{}都是由交織深度唯一確定的,故原交織矩陣MI相應(yīng)位元的行標(biāo)和列標(biāo)之間沒有耦合給定變換后母交織矩陣位元的位置(x,y),可以寫出最終母交織表中它的值為MIII(x,y)=T(x)×C+UT(x)(y)=Rb(x)+UT(x)(y)所以,母交織矩陣的每個值都有兩部分組成,一是反映行首地址偏移量的Rb(x),還有每行中該列的相對偏移UT(x)(y)。Rb(x)由固定數(shù)組的乘法定義,實時產(chǎn)生比較方便,更可以事先計算并儲存,供輸出交織表時隨時調(diào)用。UT(x)(y)的定義涉及遞推關(guān)系,每行中某列的偏移和該行前一列的偏移有關(guān),故現(xiàn)場產(chǎn)生時需要把上一列各行內(nèi)偏移量計算中同遞推有關(guān)的參數(shù)保存起來,這樣交織器算法實現(xiàn)中就不必考慮列序計算的特殊性了。這種算法類似于計算機軟件的現(xiàn)場保護(hù)和恢復(fù)機制,好比把列序計算分解為順序的行序計算的中斷,通過對行序計算進(jìn)程的控制達(dá)到列序計算并輸出的效果。
新算法的結(jié)構(gòu)示意圖如圖1所示,可以把算法分為三個步驟。第一步和原算法一致,都是根據(jù)目標(biāo)交織器的深度確定質(zhì)數(shù)核和母交織矩陣的行數(shù)和列數(shù)。第二步是計算變換序列Rb,s和q。s和q和原算法的定義一致,Rb是新算法定義的,用數(shù)學(xué)表達(dá)式可以寫為Rb(j)=T(j)×C第三步列序計算并輸出交織表是原算法中沒有的,它是本算法思想的集中體現(xiàn)。簡而言之,它的作用就是在已知Rb,b,s,q的情況下,計算MIII(x,y)=T(x)×C+UT(x)(y)=Rb(x)+UT(x)(y)
的值。Rb的計算已在第二步完成,所以只需要解決UT(x)(y)的計算。原算法分C=p-1,p,p+1三種情況討論,這里按行號對它們統(tǒng)一處理。
<pre listing-type="program-listing"><![CDATA[If y=0if C=p+1 and K=R×C and T(x)=R-1UT(x)(y)=pElse if C=p-1 UT(x)(y)=s(0)-1ElseUT(s)(y)=s(0)End ifElse If y<=p-2UT(x)(y)=s((y×rT(x))mod(p-1))=s((y×q(x))mod(p-1)) =s(CPq(x)(y))if C=p-1UT(x)(y)=UT(x)(y)-1End ifElse if y=p-1UT(x)(y)=0Else if y=p and K=R×C and T(x)=R-1UT(x)(y)=s(0)ElseUT(x)(y)=pEnd if]]></pre>可見,UT(x)(y)的計算除了簡單的邏輯判斷和常數(shù)的賦值外,需要計算CPq(x)(y)??梢园袰Pq(x)(y)看成前面提到過的“行內(nèi)變換基序列的抽取序列”。y是由0到C-1遞增的序號,而抽取序列的性質(zhì)由該行對應(yīng)的抽取質(zhì)數(shù)列q中的第x個質(zhì)數(shù)決定。上面已經(jīng)隱含了CPq(x)(y)表達(dá)式CPq(x)(y)=(y×q(x))mod(p-1),y=0,1,…p-2至此,新算法已完成了母交織矩陣的計算,并且其算法完全適合FPGA實現(xiàn)。而且,以上算法的描述已給出整個交織器的框架。
本發(fā)明有益效果1.可以和基于滑動窗算法的Turbo譯碼器協(xié)同工作,避免了整張交織表的存儲,大大降低了存儲器需求。
2.新算法實現(xiàn)的交織器僅需要少量邏輯和存儲資源即可實現(xiàn),為集成Turbo譯碼器和交織器于單片F(xiàn)PGA創(chuàng)造了條件。


圖1為交織算法結(jié)構(gòu)2為Rb計算模塊電路示意3為s序列計算電路示意4為q序列計算電路圖5為交織表計算電路圖6為譯碼器和交織器接口示意圖下面就各序列和參數(shù)的計算作具體說明,并給出可供參考的電路圖和相關(guān)說明。
步驟一的實現(xiàn)。本步驟要計算的參量有母交織矩陣的行數(shù)R,列數(shù)C,質(zhì)數(shù)核p。行數(shù)R的計算直接用VHDL的條件賦值語句實現(xiàn)如下R<= 5 when 40≤K<160 else10 when(160≤K<201)or(480<K<531)else20 when others;列數(shù)C和質(zhì)數(shù)核p的計算是相關(guān)的,依據(jù)算法,先計算p,然后求C。p是滿足(p+1)×R≥K的最小質(zhì)數(shù),直接計算會牽涉乘法、質(zhì)數(shù)檢驗等復(fù)雜的運算,所以要采取技術(shù)處理。定義p_id=「(K/R-7)/2」,然后查找表給出相應(yīng)的質(zhì)數(shù)核偏移p_offset,從而得到質(zhì)數(shù)核p=(p_id+p_offset)×2+7這里的除法,除數(shù)為R=5,10或20。由于除數(shù)之間是2倍遞增的,所以只要構(gòu)造除以5的運算模塊就可以實現(xiàn)此除法。被除數(shù)最大為(5114-7×120)/8<535,故構(gòu)造1024以內(nèi)5的除法運算為x/5」=((((x>>2+x)>>1+x)>>3+x)>>1+x)>>3(48)&lt;證明&gt;
令t=2051024x,]]>則t-x5=x1024&CenterDot;15&lt;15]]>,即x5&le;t&lt;x+15]]>有 所以, 而,2051024=18(1+12(1+18(1+12(1+14))))]]>故 將其寫為移位加法的形式即得證。證畢。#這樣,除法被轉(zhuǎn)換為一系列移位加法,用FPGA實現(xiàn)很方便。而p_offset可用以下查找表實現(xiàn)
表1、p_offset查找表

由于上表中,地址p_id取值在0~124之間,數(shù)據(jù)p_offset取值在0~6之間,所以只需要建立125×3=375bit的p_offset查找表就可以完成對質(zhì)數(shù)核p的求取。
利用p_offet和p_id的性質(zhì),母交織矩陣列數(shù)C的求解變得很簡單C<=53 when 480<K<531 elsep-1 when p_offset>0 elsep when R×p≥K else
p+1 when others;步驟二需要計算Rb,q和s三個序列。Rb序列比較簡單,只是一個數(shù)目為R,級差為C的等差數(shù)列,然后經(jīng)一定模式的地址映射即得。地址映射的模式反映了行間變換模式,也是整個交織器計算用到行間變換模式的地方。行間變換模式由目標(biāo)交織器深度決定,并對其取逆后結(jié)果如下表所示表2、逆行間變換模式表

其具體電路圖如圖2所示Rb內(nèi)存的數(shù)據(jù)在鎖存器的控制下每次遞加C,且能在clr信號的控制下初始化。地址則由計數(shù)器產(chǎn)生,并在行間變換模式查找表T-1的作用下反映出行間變換的作用。當(dāng)計數(shù)大于等于R時,表示序列已計算完畢,clr信號有效,鎖存器和計數(shù)器清零,隨時準(zhǔn)備開始下一次計算。
s的計算難點在于常數(shù)乘法的實現(xiàn)和取模運算。為此,定義算子Δ

當(dāng)0≤a<K,0≤b<K時,有a&Delta;Kb=(a+b)modK]]>觀察s表達(dá)式中常數(shù)v的取值,發(fā)現(xiàn)乘法可以化為以下運算中的一個Y2=X&Delta;KX,Y3=Y2&Delta;KX,Y5=Y2&Delta;KY3]]>Y6=Y3&Delta;KY3,Y7=Y2&Delta;KY5,Y19=Y6&Delta;KY6&Delta;KY7]]>這樣,可以給出s序列計算電路,如圖3所示
可以看到,上面電路的主要時延在于Δ算子的多階迭代。階數(shù)最多的是v=19的情形,需要5階,但這樣的情況只有在p=191時才會出現(xiàn),概率很低。若對這種情況單獨查表處理,則可以把階數(shù)控制在3,大大提高時延特性。
q序列的計算主要涉及質(zhì)數(shù)判斷、互質(zhì)判斷、取模運算等。由于最大的質(zhì)數(shù)核為257,而最小的待判斷質(zhì)數(shù)為7,輾轉(zhuǎn)相減需要大量時鐘周期才能實現(xiàn)取模運算,時延過大。經(jīng)計算機搜索,發(fā)現(xiàn)q質(zhì)數(shù)列必是以下序列的一部分{1,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89}而如何從中選取取決于質(zhì)數(shù)是否和p-1互質(zhì)。這可以通過查找表實現(xiàn)表3、和p-1非互質(zhì)質(zhì)數(shù)查找表

從表中看到,除239外,其他質(zhì)數(shù)都只需要排除不超過一個的質(zhì)數(shù),實現(xiàn)比較方便。p=239的情況下也不過2個質(zhì)數(shù),單獨處理也容易實現(xiàn)。還有,原質(zhì)數(shù)序列差分后儲存,可以大大減少存儲空間,如下所示dlt_q={(1),6,4,2,4,2,4,6,2,6,4,2,4,6,6,2,6,4,2,6,4,6}初始的1不存儲,更可約去共因子2,使存儲更簡便。q序列計算電路如圖4所示。
第三步就可以計算并輸出交織表了。先用Δ算子化簡原CP序列計算公式中的乘法和取模,得 其中x為0到R-1的整數(shù)。另外,為了便于統(tǒng)一處理,擴(kuò)充定義 這樣,可以得到輸出交織表電路圖如圖5所示。
其中,用三維方框表示的模塊主要完成時序控制。因為母交織矩陣是按序輸出的,從母交織矩陣到目標(biāo)交織表的刪節(jié)只要用比較器判斷是否有效地址,并控制一個鎖存器就可以實現(xiàn),非常簡單。若將比較器的輸出接到外部端口上還能提供目標(biāo)交織表的采樣時鐘。
另外值得一提的是本交織器和滑動窗Turbo譯碼器的接口。由于本交織器可以按序輸出交織表,使交織表在產(chǎn)生過程中沒必要全部存儲。而Turbo譯碼器采用滑動窗機制又令交織表的使用沒有必要全部存儲,充分發(fā)揮了本交織器的功效。鑒于Turbo譯碼器對交織表是順序?qū)ぶ返模豢棻淼漠a(chǎn)生也是順序進(jìn)行的,所以FIFO更適合擔(dān)當(dāng)二者并行協(xié)同工作的接口。
下面具體說明這種協(xié)同工作的原理,譯碼器和交織器的接口如圖6所示。Turbo譯碼器先進(jìn)行奇數(shù)次MAP運算,此時不需要使用交織器,可以利用這個間隙完成交織算法第一、第二階段的內(nèi)存初始化工作,并計算首批交織位數(shù)據(jù)存入FIFO直至滿。當(dāng)進(jìn)行偶數(shù)次MAP運算時,每當(dāng)譯碼器讀取一個交織位就計算一個交織位并填入FIFO。可見,F(xiàn)IFO是為了匹配譯碼器和交織器的速率而設(shè)的當(dāng)交織器速率較高時,F(xiàn)IFO一直為滿,譯碼器永遠(yuǎn)可以有充足的數(shù)據(jù)供應(yīng);當(dāng)譯碼器速率較高時,交織器一直全速工作,F(xiàn)IFO初始的那些數(shù)據(jù)維持著二者的速率差,直至完成此次迭代過程。譯碼器讀FIFO速率恒定,設(shè)平均cycle_per_read個時鐘周期讀一次;交織器雖有刪節(jié),但也均勻分布,可以認(rèn)為速率基本恒定,設(shè)為平均cycle_per_write個時鐘周期可產(chǎn)生一個交織位。若cycle_per_write≤cycle_per_read,則FIFO的容量可以設(shè)得較小,只要應(yīng)付峰值讀寫速度差即可。但若cycle_per_write>cycle_per_read,F(xiàn)IFO要保證不被讀空,容量至少為(單位為“個交織位”) 其中,N是Turbo譯碼塊的長度,也是目標(biāo)交織器的深度??梢姡現(xiàn)IFO的容量下限和譯碼幀長度成正比,又和讀寫速率之比有關(guān)。
權(quán)利要求
1.現(xiàn)場實時產(chǎn)生寬帶分多址Turbo碼內(nèi)交織器算法,其特征在于按以下步驟(1)確定母交織矩陣行數(shù)R、列數(shù)C及質(zhì)數(shù)核P(2)計算變換序列RB{}、行內(nèi)變換基序列S{}及行內(nèi)變換質(zhì)數(shù)列q{}(3)列序計算并輸出交織表
2.如權(quán)利要求1所述的現(xiàn)場實時產(chǎn)生寬帶碼分多址Turbo碼內(nèi)交織器算法,其特征在于(1)所述計算變換序列Rb時基于數(shù)學(xué)表達(dá)式Rb(j)=T(j)×C(2)所述列序計算并輸出交織表,其作用在于在已知Rb、s和q的情況下,計算MIII(x,y)=T(x)×C+UT(x)(y)=Rb(x)+UT(x)(y)
3.現(xiàn)場實時產(chǎn)生寬帶碼分多址Turbo碼內(nèi)交織器算法的裝置,其特征在于(1)在步驟(1)的計算中,行數(shù)R的計算直接用VHDL的條件賦值語句,質(zhì)數(shù)核P的計算中將除法轉(zhuǎn)換為一系列移位加法,再以FPGA實現(xiàn)。(2)在步驟(2)的序列Pb計算時,在Rb計算模塊電路中Rb內(nèi)存的數(shù)據(jù)在鎖存器的控制下每次遞加C,且能在clr信號的控制下初始化。地址則由計數(shù)器產(chǎn)生,并在行間變換模式查找表T1的作用下反映出行間變換的作用。在序列s計算電路中,主要時延在于Δ算子的多階迭代階數(shù)最多時可通過查表處理將階數(shù)降低。在序列q的計算電路中原質(zhì)數(shù)序列差分后儲存,以大大養(yǎng)活存儲空間。(3)在交織表計算電路中,從母交織矩陣到目標(biāo)交織表的刪節(jié)用比較器判斷是否有效地址,并控制一個鎖存器予以實現(xiàn)。
全文摘要
本發(fā)明目的是針對現(xiàn)有技術(shù)的不足,提出現(xiàn)場實時產(chǎn)生交織器的算法。新算法順序計算并輸出交織器,可以和基于滑動窗算法的Turbo譯碼器協(xié)同工作,避免了整張交織表的存儲,大大降低了存儲器需求。由于新算法實現(xiàn)的交織器僅需要少量邏輯和存儲資源即可實現(xiàn),為集成Turbo譯碼器和交織器于單片F(xiàn)PGA創(chuàng)造了條件。
文檔編號H04J13/00GK1336738SQ0112019
公開日2002年2月20日 申請日期2001年7月11日 優(yōu)先權(quán)日2001年7月11日
發(fā)明者阮銘, 徐友云, 羅漢文, 宋文濤 申請人:信息產(chǎn)業(yè)部電信傳輸研究所, 上海交通大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
丰城市| 柯坪县| 平安县| 林口县| 老河口市| 漯河市| 浦县| 荆州市| 洛扎县| 临洮县| 融水| 屏东县| 大同市| 凤庆县| 麦盖提县| 大埔区| 萨迦县| 南丹县| 民权县| 松阳县| 承德县| 卓尼县| 湘阴县| 扬中市| 井陉县| 邻水| 龙海市| 凌海市| 丁青县| 城口县| 新沂市| 洱源县| 泰顺县| 萍乡市| 安塞县| 沭阳县| 政和县| 那曲县| 绥化市| 巴楚县| 宁南县|