專利名稱:一種Turbo碼交織器及其交織方法
技術(shù)領(lǐng)域:
本發(fā)明涉及移動(dòng)通信中的交織技術(shù),具體地說(shuō),涉及一種Turbo碼交織器及其交織的方法。
背景技術(shù):
Turbo碼交織器是Turbo編譯碼器的重要組成部分,Turbo碼具有的優(yōu)異性能,其根本原因在于Turbo碼的實(shí)現(xiàn)方案中,交織器實(shí)現(xiàn)了偽隨機(jī)性。在發(fā)送端,其偽隨機(jī)性通過編碼器以及并行級(jí)聯(lián)方式來(lái)實(shí)現(xiàn);在譯碼端,則利用具有軟輸入/軟輸出特性的交織器的反饋迭代譯碼來(lái)實(shí)現(xiàn)??梢?,交織器是非常重要的,其性能直接影響Turbo碼的性能。3GPP(第三代移動(dòng)通信伙伴計(jì)劃)協(xié)議給出了一種不規(guī)則交織的算法,這種交織器算法非常復(fù)雜而且隨交織塊長(zhǎng)度的不同其算法也不同。
按照3GPP規(guī)定,Turbo碼的交織包括比特輸入矩陣,矩陣的行內(nèi)交換和行間交換,矩陣中的比特輸出時(shí)將原來(lái)不存在的比特刪除。以下說(shuō)明協(xié)議中有關(guān)Turbo碼的交織過程。
設(shè)Turbo碼的交織輸入比特記為x1,x2,x3,...,xK,K是輸入的比特?cái)?shù)機(jī)交織長(zhǎng)度,并且40≤K≤5114。Turbo碼交織的輸入比特序列xk按如下步驟寫入矩陣。
(1)確定矩陣的行數(shù)RR=5,if(40≤K≤159)10,if((160≤K≤200)or(481≤K≤530))20,if(K=any other value)]]>矩陣的行數(shù)由上到下記為0,1,2,...,R-1。
(2)確定矩陣的列數(shù)C
其中,p為素?cái)?shù)。矩陣的列數(shù)從左到右記為0,1,2,...,C-1。
(3)將比特序列xk一行一行的寫入R×C矩陣,比特x1在0行的0列上x1x2x3···xCx(C+1)x(C+2)x(C+3)···x2C···············x((R-1)C+1)x((R-1)C+2)x((R-1)C+3)···xRC]]>比特輸入R×C矩陣后,矩陣的行間交換和行內(nèi)交換按以下算法進(jìn)行(1)從表1選擇原根v(2)構(gòu)造行內(nèi)交換基本序列s(i)s(i)=[v×s(i-1)]mod p,i=1,2,…,(p-2),and s(0)=1。
其中i為矩陣列序號(hào)。
(3)以q0=1為{qj}中的第一個(gè)素?cái)?shù),按下式選擇連續(xù)的最小素?cái)?shù){qj}(j=1,2,...,R-1,為矩陣行序號(hào))g.c.d{qj,p-1}=1,qj>6,qj>q(j-1),其中g(shù).c.d.是最大公約數(shù)。
(4)變換{qj}得到交換素?cái)?shù){rj}rT(j)=qj,j=0,1,...,R-1,其中T(j)(j=0,1,2,...,R-1)是行間交換模式,由下式確定的四種行間交換模式之一Pat1,Pat2,Pat3和Pat4{T(0),T(1),T(2),...,T(R-1)}=Pat4if(40≤K≤159)Pat3if(160≤K≤200)Pat1if(201≤K≤480)Pat3if(481≤K≤530)Pat1if(531≤K≤2280)Pat2if(2281≤K≤2480)Pat1if(2481≤K≤3160)Pat2if(3161≤K≤3210)Pat1if(3211≤K≤5114)]]>Pat1,Pat2,Pat3和Pat4分別如下
Pat1{19,9,14,4,0,2,5,7,12,18,10,8,13,17,3,1,16,6,15,11}Pat2{19,9,14,4,0,2,5,7,12,18,16,13,17,15,3,1,6,11,8,10}Pat3{9,8,7,6,5,4,3,2,1,0}Pat4{4,3,2,1,0}(5)第j個(gè)(j=0,1,2,...,R-1)行內(nèi)交換如下a.如果C=p,那么Uj(i)=s([i×rj]mod(p-1)),i=0,1,2,...,(p-2),andUj(p-1)=0,其中Uj(i)是第j行經(jīng)過行內(nèi)變換后的第i個(gè)輸出的輸入比特的位置。
b.如果C=p+1,那么Uj(i)=s([i×rj]mod(p-1)),i=0,1,2,...,(p-2),Uj(p-1)=0,and Uj(p)=p,其中Uj(i)是第j行經(jīng)過行內(nèi)變換后的第i個(gè)輸出的輸入比特的位置,并且如果K=C×R,那么交換UR-1(p)和UR-1(0)的位置。
c.如果C=p-1,那么Uj(i)=s([i×rj]mod(p-1))-1,i=0,1,2,...,(p-2),Uj(i)是第j行經(jīng)過行內(nèi)交換以后的第i個(gè)輸出的輸入比特的位置。
(6)基于模式T(j)(j=0,1,2,...,R-1)進(jìn)行行間交換,T(j)是第j個(gè)交換行的原始位置。
表1素?cái)?shù)p和相關(guān)的原根v
經(jīng)過行內(nèi)和行間交換,矩陣的比特記為y′y′1y′(R+1)y′(2R+1)···y′((C-1)R+1)y′2y′(R+2)y′(2R+2)···y′((C-1)R+2)···············y′Ry′2Ry′3R···y′CR]]>Turbo碼交織的輸出比特是將經(jīng)過行內(nèi)和行間交換的矩陣R×C按列依次輸出,起始比特y′1在0列的0行,結(jié)束比特y′CR在C-1列的R-1行。輸出時(shí),將輸入序列中不存在的比特去掉,也就是說(shuō),對(duì)應(yīng)于x′k的比特y′k,如果經(jīng)過行內(nèi)和行間交換矩陣中有k>K的比特y′k,則在輸出時(shí)要去掉。交織后的輸出記為x′1,x′2,...,x′K,x′1對(duì)應(yīng)于經(jīng)過整理的y′k,k是最小序號(hào),x′2對(duì)應(yīng)于經(jīng)過整理的y′k,k是次小序號(hào)。交織的輸出比特?cái)?shù)為K,需要?jiǎng)h除的比特?cái)?shù)為R×C-K。
上述協(xié)議規(guī)定的交織算法,在實(shí)際的編譯碼應(yīng)用中,通常預(yù)先根據(jù)交織算法生成交織表,通過查表獲得用于交織的輸入比特和輸出比特位置的對(duì)應(yīng)關(guān)系,以省去交織過程中復(fù)雜的算法。例如,一種方案是,按照協(xié)議中規(guī)定的所有交織長(zhǎng)度,為某些交織長(zhǎng)度特別值建立輸入比特和輸出比特位置的對(duì)應(yīng)關(guān)系的位置表,即基本表或交織表,比如分別建立交織長(zhǎng)度為40比特、50比特、55比特等的位置表,一般包括220個(gè),進(jìn)行交織時(shí)首先根據(jù)交織長(zhǎng)度選擇對(duì)應(yīng)的位置表,然后根據(jù)位置表查找當(dāng)前輸入比特對(duì)應(yīng)的輸出比特的位置;另一種方案是,預(yù)先估計(jì)需要提供的業(yè)務(wù)類型和交織長(zhǎng)度,根據(jù)交織長(zhǎng)度建立位置表,以減少交織表的存儲(chǔ)量,進(jìn)行交織時(shí)直接根據(jù)位置表查找當(dāng)前輸入比特對(duì)應(yīng)的輸出比特的位置。
無(wú)論采用何種方式建立交織表,這種通過查表實(shí)現(xiàn)交織的方式在一定程度上可以減少交織算法的運(yùn)算量,但當(dāng)交織表的存儲(chǔ)量很大,由此所需的查找運(yùn)算量和查找時(shí)間也很大,并且非常不利于硬件的實(shí)現(xiàn)。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的目的在于提供一種Turbo碼交織器,以用硬件電路實(shí)現(xiàn)協(xié)議中規(guī)定的交織算法,避免現(xiàn)有技術(shù)中通過查表方式實(shí)現(xiàn)交織的缺點(diǎn);本發(fā)明的另一目的在于提供一種Turbo碼交織方法,以用于在本發(fā)明提供的交織器中實(shí)現(xiàn)協(xié)議中規(guī)定的交織。
本發(fā)明的交織器通過以下技術(shù)方案實(shí)現(xiàn)一種Turbo碼交織器,其特征在于,所述交織器包括初始化模塊,計(jì)算模塊,以及,包含有控制電路和用于存儲(chǔ)有效交織地址的緩存器的緩存模塊,來(lái)自外部的時(shí)鐘信號(hào)分別送至上述模塊,其中,初始化模塊接收到來(lái)自外部的初始化啟動(dòng)信號(hào)后,根據(jù)當(dāng)前業(yè)務(wù)的交織長(zhǎng)度從外部存儲(chǔ)器讀取比特輸入矩陣的行數(shù)、列數(shù)、素?cái)?shù)和原根,根據(jù)讀取的上述參數(shù)計(jì)算當(dāng)前業(yè)務(wù)的所有行內(nèi)交換基本序列并存儲(chǔ),向外部輸出初始化結(jié)束標(biāo)志,且向計(jì)算模塊輸出包括交織長(zhǎng)度、行數(shù)、列數(shù)以及素?cái)?shù)的參數(shù)組和用于讀取行內(nèi)交換模式和交換素?cái)?shù)的基地址;計(jì)算模塊接收到外部模塊根據(jù)初始化模塊輸出的初始化結(jié)束標(biāo)志而產(chǎn)生的啟動(dòng)信號(hào)后,根據(jù)當(dāng)前行序號(hào)和初始化模塊輸出的基地址,計(jì)算用于讀取存儲(chǔ)于外部存儲(chǔ)器的讀取行內(nèi)交換模式和交換素?cái)?shù)的讀地址,根據(jù)讀地址讀取行內(nèi)交換模式和交換素?cái)?shù),并讀取來(lái)自外部的正逆序標(biāo)志以及存儲(chǔ)于初始化模塊中的行內(nèi)交換基本序列,根據(jù)讀取的行內(nèi)交換模式、交換素?cái)?shù)以及行內(nèi)交換基本序列,按列數(shù)和素?cái)?shù)的關(guān)系,選擇以下公式計(jì)算比特輸入矩陣的第j行第i列對(duì)應(yīng)的交織地址如果列數(shù)和素?cái)?shù)相等,則intterleaver_address=T(j)*C+s((i*rT(j))mod(p-1)),[i=0,...,p-2;j=0,...,R-1]T(j)*C,[i=p-1;j=0,...,R-1]---(a)]]>如果列數(shù)等于素?cái)?shù)與1之和,則將交織長(zhǎng)度與比特輸入矩陣的行數(shù)和列數(shù)之積進(jìn)行比較,如果不相等,則按式(b)計(jì)算,如果相等,則按式(c)計(jì)算,intterleaver_address=T(j)*C+s((i*rT(j))mod(p-1)),[i=0,...,p-2;j=0,...,R-1]T(j)*C,[i=p-1;j=0,...,R-1]T(j)*C+p,[i=p;j=0,...,R-1---(b)]]>
intterleaver_address=T(j)*C+p,[i=0;j=0,...,R-1]T(j)*C+s((i*rT(j))mod(p-1)),[i=1,...,p-2;j=0,...,R-1]T(j)*C,[i=p-1;j=0,...,R-1]T(j)*C+1,[i=p;j=0,...,R-1]---(c)]]>如果列數(shù)等于素?cái)?shù)與1之差,則intterleaver_address=T(j)*C+s((i*rT(j))mod(p-1))-1,[i=0,...,p-2;j=0,...,R-1] (d)其中,T(j)為行間交換模式,C為比特輸入矩陣的列數(shù),R為比特輸入矩陣的行數(shù),p為素?cái)?shù),s((i*rT(j)mod(p-1))為行內(nèi)交換的基本序列,rT(j)為交換素?cái)?shù);所述計(jì)算模塊在計(jì)算交織地址后,將有效交織地址標(biāo)志、計(jì)算出的交織地址以及開始存儲(chǔ)控制信號(hào)輸出至緩存模塊中的控制電路;緩存模塊中的控制電路根據(jù)來(lái)自外部的所述啟動(dòng)信號(hào)、開始存儲(chǔ)控制信號(hào)以及有效交織地址標(biāo)志,向用于存儲(chǔ)有效交織地址的緩存器輸出寫使能信號(hào),并輸出寫地址和讀地址至所述緩存器;緩存器受控制電路的控制,將來(lái)自計(jì)算模塊輸出的交織地址中的有效交織地址寫入,并按照外部模塊的讀時(shí)序要求輸出緩存于所述緩存器的交織地址。
本發(fā)明的交織方法通過以下技術(shù)手段實(shí)現(xiàn)一種Turbo碼交織方法,其特征在于,該方法包括,A)根據(jù)交織長(zhǎng)度讀取比特輸入矩陣的行數(shù)和列數(shù);根據(jù)讀取的素?cái)?shù)和原根計(jì)算行內(nèi)交換基本序列,并存儲(chǔ);初始化比特輸入矩陣的行序號(hào)和列序號(hào);B)將列數(shù)和素?cái)?shù)進(jìn)行比較,如果列數(shù)和素?cái)?shù)相等,則讀取行間交換模式和交換素?cái)?shù),按式(a)計(jì)算比特輸入矩陣的第j行第i列對(duì)應(yīng)的交織地址,intterleaver_address=T(j)*C+s((i*rT(j))mod(p-1)),[i=0,...,p-2;j=0,..,R-1]T(j)*C,[i=p-1;j=0,...,R-1]---(a)]]>如果列數(shù)等于素?cái)?shù)與1之和,則將交織長(zhǎng)度與比特輸入矩陣的行數(shù)和列數(shù)之積進(jìn)行比較,如果不相等,則讀取行間交換模式和交換素?cái)?shù),按式(b)計(jì)算比特輸入矩陣的第j行第i列對(duì)應(yīng)的交織地址,如果相等,則按式(c)計(jì)算所述的交織地址,
intterleaver_address=T(j)*C+s((i*rT(j))mod(p-1)),[i=0,...,p-2;j=0,...,R-1]T(j)*C,[i=p-1;j=0,...,R-1]T(j)*C+p,[i=p;j=0,...,R-1]---(b)]]>intterleaver_address=T(j)*C+p,[i=0;j=0,...,R-1]T(j)*C+s((i*rT(j))mod(p-1)),[i=1,...,p-2;j=0,...,R-1]T(j)*C,[i=p-1;j=0,...,R-1]T(j)*C+1,[i=p;j=0,...,R-1]---(c)]]>如果列數(shù)等于素?cái)?shù)與1之差,則讀取行間交換模式和交換素?cái)?shù),按式(d)計(jì)算比特輸入矩陣的第j行第i列對(duì)應(yīng)的交織地址,intterleaver_address=T(j)*C+s((i*rT(j))mod(p-1))-1,[i=0,...,p-2;j=0,...,R-1] (d)其中,T(j)為行間交換模式,C為比特輸入矩陣的列數(shù),R為比特輸入矩陣的行數(shù),p為素?cái)?shù),s((i*rT(j)mod(p-1))為行內(nèi)交換基本序列,rT(j)為交換素?cái)?shù);C)比較當(dāng)前計(jì)算出的交織地址與交織長(zhǎng)度,如果計(jì)算出的交織地址大于交織長(zhǎng)度,則禁止輸出當(dāng)前計(jì)算的交織地址,否則輸出當(dāng)前計(jì)算出的交織地址。
本發(fā)明在對(duì)3GPP Turbo交織算法進(jìn)行研究的基礎(chǔ)上找出其中的規(guī)律,針對(duì)列數(shù)與素?cái)?shù)、交織長(zhǎng)度與列數(shù)與行數(shù)之積的關(guān)系的幾類情況,給出交織前后地址的映射關(guān)系,極大地節(jié)省了存儲(chǔ)空間,優(yōu)化了交織算法。根據(jù)上述交織地址的計(jì)算規(guī)律以及Turbo編譯碼器的時(shí)序要求,從而對(duì)交織器的硬件電路進(jìn)行了設(shè)計(jì),提出了其硬件實(shí)現(xiàn)方案。相對(duì)于現(xiàn)有技術(shù)中以查表進(jìn)行交織的方式而言,本發(fā)明提供的交織方法和交織器,由于其參數(shù)可以通過設(shè)置以適應(yīng)不同業(yè)務(wù)的需要,因此具有一定的靈活性,且占用的存儲(chǔ)空間少;并且通過正逆序標(biāo)志對(duì)交織器中計(jì)算模塊的控制,使得交織地址的正序計(jì)算和逆序計(jì)算可共用同一個(gè)硬件結(jié)構(gòu),更適合于Turbo碼編譯碼算法的硬件實(shí)現(xiàn),尤其是ASIC實(shí)現(xiàn)。
圖1a和圖1b為計(jì)算正序交織地址的流程圖。
圖2示出了Turbo碼交織器的總體框圖。
圖3示出了計(jì)算模塊硬件原理圖。
圖4為乘除法運(yùn)算流水線示意圖。
圖5示出了緩存模塊電路原理圖。
圖6為交織器輸入輸出的時(shí)序關(guān)系圖。
圖7為寫時(shí)序和讀時(shí)序相同時(shí)緩存模塊電路原理圖。
具體實(shí)施例方式
本發(fā)明通過對(duì)3GPP協(xié)議規(guī)定的交織方法的總結(jié)和歸納,得到在不同交織長(zhǎng)度下,比特輸入矩陣中各比特在交織后所對(duì)應(yīng)的輸出比特序列中的位置,即,得到交織前后地址的映射關(guān)系。具體方法如下首先,根據(jù)當(dāng)前比特輸入矩陣中矩陣列數(shù)選擇相應(yīng)的計(jì)算式,計(jì)算矩陣中第j行第i列的輸入比特對(duì)應(yīng)的輸出比特序列中的位置,即交織地址;(1)當(dāng)C=p時(shí),intterleaver_address=T(j)*C+s((i*rT(j))mod(p-1)),[i=0,...,p-2;j=0,...,R-1](1)T(j)*C,[i=p-1;j=0,...,R-1](2)]]>(2)當(dāng)C=p+1時(shí)a.若K≠C×Rintterleaver-address=T(j)*C+s((i*rT(j))mod(p-1)),[i=0,...,p-2;j=0,...,R-1](4)T(j)*C,[i=p-1;j=0,...,R-1](5)T(j)*C+p,[i=p;j=0,...,R-1](6)]]>b.若K=C×Rintterleaver_address=T(j)*C+p,[i=0;j=0,...,R-1](7)T(j)*C+s((i*rT(j))mod(p-1)),[i=1,...,p-2;j=0,...,R-1](8)T(j)*C,[i=p-1;j=0,..,R-1](9)T(j)*C+1,[i=p;j=0,...,R-1](10)]]>(3)當(dāng)C=p-1時(shí)intterleaver_address=T(j)*C+s((i*rT(j))mod(p-1))-1,[i=0,...,p-2;j=0,...,R-1]然后,比較計(jì)算的交織地址與交織長(zhǎng)度,如果交織地址大于交織長(zhǎng)度,則去掉該交織地址。
圖1a和圖1b為計(jì)算正序交織地址的流程圖。從流程圖可見,計(jì)算以i作為外循環(huán)(i=0,…,C-1),以j作為內(nèi)循環(huán)(j=0,...,R-1),對(duì)第(2)種情況,即C=p+1,當(dāng)K=C×R時(shí),是一種特殊情況,在3GPP協(xié)議中規(guī)定要將UR-1(p)和UR-1(0)的位置進(jìn)行交換,而在本發(fā)明中通過計(jì)算公式可以得到。如果計(jì)算逆序交織地址,只需在初始化時(shí)將行序號(hào)和列序號(hào)分別設(shè)為R-1和C-1,流程中行序號(hào)和列序號(hào)按遞減變化。
上述交織地址的計(jì)算方法可采用硬件電路實(shí)現(xiàn)。參見圖2所示,圖2示出了Turbo碼交織器的總體框圖,包括初始化模塊、交織地址計(jì)算模塊、以及用于進(jìn)行輸入輸出速率轉(zhuǎn)換的緩存模塊,該緩存模塊包含有控制電路和用于存儲(chǔ)有效交織地址的緩存器。其中,初始化模塊收到初始化啟動(dòng)信號(hào)start_ini后,根據(jù)外部模塊送來(lái)的當(dāng)前交織長(zhǎng)度、業(yè)務(wù)參數(shù)表索引地址,從交織器外部的第一ROM存儲(chǔ)器中讀取包括素?cái)?shù)p、原根v、以及比特輸入矩陣列數(shù)C、行數(shù)R的參數(shù)組,并送至計(jì)算模塊;根據(jù)協(xié)議標(biāo)準(zhǔn)按讀取的參數(shù)計(jì)算當(dāng)前業(yè)務(wù)的所有行內(nèi)交換基本序列s(i),并存入初始化模塊中的RAM,其中,當(dāng)C=p-1時(shí),將計(jì)算得到的s(i)的值減1后存入初始化模塊中的RAM;當(dāng)行內(nèi)交換基本序列計(jì)算完畢后,向交織器外部模塊輸出初始化結(jié)束標(biāo)志flag;將基地址送至計(jì)算模塊;當(dāng)外部模塊收到初始化結(jié)束標(biāo)志后,向計(jì)算模塊和緩存模塊中的控制電路發(fā)送啟動(dòng)信號(hào)start_cp,同時(shí),計(jì)算模塊讀取來(lái)自外部的正逆序標(biāo)志up_down,以確定是按正序還是按逆序計(jì)算交織地址;計(jì)算模塊從交織器外部的第二ROM存儲(chǔ)器中讀取行間交換模式T(j)和交換素?cái)?shù)rT(j),根據(jù)初始化模塊中RAM存儲(chǔ)的行內(nèi)交換基本序列s(i)、讀取的T(j)和rT(j)、以及來(lái)自初始化模塊的參數(shù)組,按C與p的關(guān)系選擇相應(yīng)的計(jì)算公式計(jì)算輸出序列的交織地址,并向緩存模塊輸出該交織地址以及控制信號(hào),其中控制信號(hào)包括開始存儲(chǔ)控制信號(hào)start_save以及有效交織地址標(biāo)志valid_flag;
緩存模塊的控制電路在來(lái)自外部的所述啟動(dòng)信號(hào)、開始存儲(chǔ)控制信號(hào)以及有效交織地址標(biāo)志的控制下,向用于存儲(chǔ)有效交織地址的緩存器輸出寫使能信號(hào),將計(jì)算出的交織地址中的有效效地址寫入緩存器,緩存器在讀時(shí)序的控制下輸出寫入的交織地址;并在寫時(shí)序和外部模塊的讀時(shí)序不相同時(shí),如果寫地址等于寫地址閾值,則向計(jì)算模塊輸出停止計(jì)算信號(hào)stop_work有效以停止交織地址的計(jì)算,并停止寫操作,如果讀地址等于讀地址閾值,則向計(jì)算模塊輸出停止計(jì)算信號(hào)stop_work無(wú)效,以啟動(dòng)交織地址的計(jì)算并啟動(dòng)寫操作。
以下以Turbo碼編譯碼器要求交織器每4個(gè)時(shí)鐘周期輸出一個(gè)交織地址為例,描述上述各模塊的電路原理。
參見圖3所示,圖3示出了計(jì)算模塊硬件原理圖。來(lái)自緩存模塊的停止計(jì)算信號(hào)stop_work以及外部的start_cp信號(hào)送至具有三個(gè)狀態(tài)的第一狀態(tài)機(jī)的使能端,所述狀態(tài)機(jī)實(shí)質(zhì)為3進(jìn)制的計(jì)數(shù)器。當(dāng)stop_work信號(hào)無(wú)效且start_cp信號(hào)有效時(shí),第一狀態(tài)機(jī)開始計(jì)數(shù)輸出,以向計(jì)算模塊中行計(jì)數(shù)器、列計(jì)數(shù)器、各鎖存器、以及輸出延遲單元提供時(shí)鐘信號(hào)。地址計(jì)算單元根據(jù)來(lái)自初始化模塊的基地址和行計(jì)數(shù)器輸出的行序號(hào)j,計(jì)算行間交換模式T(j)和交換素?cái)?shù)rT(j)對(duì)應(yīng)的存儲(chǔ)地址,向第二ROM存儲(chǔ)器的讀地址端輸出該地址,第二存儲(chǔ)器根據(jù)讀地址查找對(duì)應(yīng)的行間交換模式T(j)和交換素?cái)?shù)rT(j),分別輸出至第一乘法器和第二乘法器,其中第一乘法器計(jì)算列數(shù)C與行間交換模式T(j)的乘積后輸出到第一鎖存器,第二乘法器計(jì)算交換素?cái)?shù)rT(j)與列計(jì)數(shù)器輸出的列序號(hào)i的乘積后,輸出到第二鎖存器。第二鎖存器輸出至除法器,除法器將第二鎖存器的輸出與p-1進(jìn)行模運(yùn)算,以計(jì)算因式(i*rT(j))mod(p-1),除法器輸出計(jì)算結(jié)果至第三鎖存器。第三鎖存器將該計(jì)算結(jié)果作為讀地址輸出至存儲(chǔ)了行內(nèi)交換基本序列s(i)的初始化模塊中的RAM,該RAM根據(jù)讀地址輸出該地址對(duì)應(yīng)的行內(nèi)交換基本序列s(i)至復(fù)用器,復(fù)用器根據(jù)列數(shù)C與素?cái)?shù)p的關(guān)系以及當(dāng)C=p+1時(shí)K與C*R的關(guān)系,從復(fù)用器的0值、p值、s(i)或1值輸入信號(hào)中選擇滿足交織地址計(jì)算式的輸入信號(hào)進(jìn)行選擇性復(fù)用,復(fù)用后輸出至加法器,加法器將來(lái)自第一鎖存器的計(jì)算值與來(lái)自選擇器的值進(jìn)行疊加,然后輸出至第四鎖存器,此時(shí)加法器的輸出值即為按交織計(jì)算公式計(jì)算的交織地址。比較器將第四鎖存器的輸出值和交織長(zhǎng)度進(jìn)行比較,如果第四鎖存器的輸出值小于等于交織長(zhǎng)度,則比較器輸出有效交織地址標(biāo)志valid_flag的有效值至第五鎖存器,通過第五鎖存器輸出,否則,比較器輸出有效交織地址標(biāo)志valid_flag的無(wú)效值至第五鎖存器。同時(shí),輸出延遲單元將來(lái)自第四鎖存器的交織地址延遲一個(gè)時(shí)鐘周期后輸出至緩存模塊中的緩存器,即,向緩存模塊輸出信號(hào)cp_output,以使得交織地址的輸出與有效交織地址標(biāo)志valid_flag的輸出的時(shí)序一致。
在上述計(jì)算模塊中,各鎖存器為了滿足交織器的時(shí)序要求而引用;行計(jì)數(shù)器中可以具有分頻器,以實(shí)現(xiàn)在計(jì)算的過程中,以i作為外循環(huán)(i=0,...,c-1),以j作為內(nèi)循環(huán)(j=0,...,R-1)計(jì)算。來(lái)自外部的正逆序標(biāo)志up_down信號(hào)分別輸入至行計(jì)數(shù)器和列計(jì)數(shù)器的控制端,以控制當(dāng)進(jìn)行正序交織地址計(jì)算時(shí),行計(jì)數(shù)器和列計(jì)數(shù)器采用遞增方式計(jì)數(shù),當(dāng)進(jìn)行逆序交織地址計(jì)算時(shí),采用遞減方式計(jì)數(shù)。行計(jì)數(shù)器和列計(jì)數(shù)器的輸出信號(hào)還分別送至控制邏輯,該控制邏輯在計(jì)算出交織地址的時(shí)序中向緩存模塊輸出開始存儲(chǔ)控制信號(hào)start_save。
最核心部分是乘除器的計(jì)算,它將決定交織器的工作速度,在本發(fā)明中,使用流水線的方法來(lái)完成乘除器的運(yùn)算,一個(gè)乘法器和除法器計(jì)算一次(i*rT(j))mod(p-1),由于使用第一狀態(tài)機(jī)的狀態(tài)2來(lái)進(jìn)行鎖存、數(shù)據(jù)的讀取,所以乘法和除法的計(jì)算都是各用3個(gè)時(shí)鐘周期,乘除法運(yùn)算的速度均可以滿足要求。乘除法運(yùn)算流水線見圖4,這是一個(gè)2級(jí)流水。采用流水線的方式可以比無(wú)流水線方式的速度提高一倍。除法器可以采用EDA綜合工具中的庫(kù)直接生成,不需要自己寫VHDL程序,不僅使用方便,而且面積小,功能齊全。
參見圖5所示,圖5示出了緩存模塊電路原理圖。其中,用于提供寫操作地址控制的3進(jìn)制第三狀態(tài)機(jī)、用于提供讀操作地址控制的4進(jìn)制的第四狀態(tài)機(jī)、寫地址計(jì)數(shù)器、讀地址計(jì)數(shù)器、與門以及停止計(jì)算信號(hào)產(chǎn)生模塊組成了控制電路。來(lái)自外部的啟動(dòng)信號(hào)start_cp分別輸入至第三狀態(tài)機(jī)和第四狀態(tài)機(jī)的計(jì)數(shù)使能端,時(shí)鐘信號(hào)分別提供給第三狀態(tài)機(jī)、第四狀態(tài)機(jī)、以及用于緩存交織地址的RAM,來(lái)自計(jì)算模塊的開始存儲(chǔ)控制信號(hào)start_save、來(lái)自計(jì)算模塊的有效交織地址標(biāo)志valid_flag、以及第三狀態(tài)機(jī)的輸出信號(hào)輸入至與門進(jìn)行與邏輯運(yùn)算后輸出到緩存交織地址的緩存器的寫使能端。第三狀態(tài)機(jī)的輸出信號(hào)還輸出至寫地址計(jì)數(shù)器,第四狀態(tài)機(jī)的輸出信號(hào)輸出至讀地址計(jì)數(shù)器,從而使得寫操作每3個(gè)時(shí)鐘執(zhí)行一次,讀操作每4個(gè)時(shí)鐘執(zhí)行一次。寫地址計(jì)數(shù)器的輸出分別輸入到緩存交織地址的緩存器的寫地址端和停止計(jì)算信號(hào)產(chǎn)生模塊,讀地址計(jì)數(shù)器的輸出分別輸入到緩存交織地址的緩存器的讀地址端和停止計(jì)算信號(hào)產(chǎn)生模塊。停止計(jì)算信號(hào)產(chǎn)生模塊根據(jù)輸入的寫地址判斷當(dāng)前寫地址是否等于設(shè)定的寫地址閾值,如果是,則向計(jì)數(shù)模塊中的第一狀態(tài)機(jī)的計(jì)數(shù)使能端輸出stop_work有效;根據(jù)輸入的讀地址判斷當(dāng)前讀地址是否等于設(shè)定的讀地址閾值,如果是,則向計(jì)數(shù)模塊中的第一狀態(tài)機(jī)的計(jì)數(shù)使能端輸出stop_work無(wú)效。來(lái)自計(jì)數(shù)模塊中的輸出延遲單元的cp_output輸出至緩存交織地址的緩存器的數(shù)據(jù)端。
從緩存模塊的組成可以看出,每三時(shí)鐘周期向緩存交織地址的緩存器寫入一個(gè)交織地址,每四個(gè)時(shí)鐘周期從緩存器中讀出一個(gè)有效交織地址,由于寫的速度快,讀的速度慢,而存儲(chǔ)空間是有限的,并且交織地址的計(jì)算是實(shí)時(shí)的,因此當(dāng)讀寫進(jìn)行到一定程度時(shí),要將計(jì)算停下來(lái),待再讀出一部分?jǐn)?shù)據(jù)后再啟動(dòng)計(jì)算,以免交織地址還沒有讀出來(lái)就被覆蓋。上述停止計(jì)算信號(hào)產(chǎn)生模塊通過輸出stop_work信號(hào)來(lái)實(shí)現(xiàn)讀寫的控制。
參見圖6所示,圖6為交織器輸入輸出的時(shí)序關(guān)系圖。當(dāng)start_ini信號(hào)有效時(shí),初始化模塊開始工作,通過輸入的參數(shù)組,選擇當(dāng)前業(yè)務(wù)下相應(yīng)的參數(shù)(包括p,v,R,C),并實(shí)時(shí)計(jì)算行內(nèi)交換基本序列s(i)的值,存貯到初始模塊內(nèi)的RAM中,在初始化結(jié)束以后,輸出一個(gè)初始化結(jié)束標(biāo)志flag,反饋給外部模塊;當(dāng)外部模塊接收到flag信號(hào)后,向計(jì)算模塊和緩存模塊發(fā)出start_cp,同時(shí)交織器計(jì)算模塊讀外部送來(lái)的正逆序標(biāo)志up_down,并鎖入寄存器中,當(dāng)up_down=’1’時(shí)表示正序,為’0’時(shí)表示逆序,于是開始進(jìn)行交織地址的計(jì)算,在start_cp信號(hào)有效后的第23個(gè)時(shí)鐘周期開始,每計(jì)算出一個(gè)交織地址,則輸出一個(gè)開始存儲(chǔ)控制信號(hào)start_save。
在計(jì)算模塊中所計(jì)算出的交織地址包括有效交織地址和無(wú)效交織地址,每三個(gè)時(shí)鐘周期輸出一個(gè)交織地址。在緩存模塊,每3個(gè)時(shí)鐘周期寫入一個(gè)有效交織地址,每4個(gè)時(shí)鐘周期讀出一個(gè)有效交織地址。由于無(wú)效地址都在比特輸入矩陣的第一行,因此至少每隔20個(gè)交織地址才會(huì)有1個(gè)無(wú)效交織地址。
如果緩存模塊中的控制電路在寫時(shí)序和外部模塊的讀時(shí)序相同時(shí),這時(shí)圖2所示交織器中,將沒有停止計(jì)算信號(hào)反饋至計(jì)算模塊,而緩存模塊的電路原理如圖7所示。控制電路包括,寫地址計(jì)數(shù)器、讀地址計(jì)數(shù)器、與門以及第二狀態(tài)機(jī),其中,來(lái)自外部的所述啟動(dòng)信號(hào)輸入至第二狀態(tài)機(jī)的使能端,所述時(shí)鐘信號(hào)輸入至第二狀態(tài)機(jī)的輸入,第二狀態(tài)機(jī)的輸出分別連至寫地址計(jì)數(shù)器和讀地址計(jì)數(shù)器的輸入,并還輸入至與門的輸入;來(lái)自計(jì)算模塊的有效交織地址標(biāo)志以及開始存儲(chǔ)控制信號(hào)輸入至與門的輸入,與門的輸出連至緩存器的寫使能端;寫地址計(jì)數(shù)器輸出寫地址至緩存器的寫地址端,讀地址計(jì)數(shù)器輸出讀地址至緩存器的讀地址端。
權(quán)利要求
1.一種Turbo碼交織方法,其特征在于,該方法包括,A)根據(jù)交織長(zhǎng)度讀取比特輸入矩陣的行數(shù)和列數(shù);根據(jù)讀取的素?cái)?shù)和原根計(jì)算行內(nèi)交換基本序列,并存儲(chǔ);初始化比特輸入矩陣的行序號(hào)和列序號(hào);B)將列數(shù)和素?cái)?shù)進(jìn)行比較,如果列數(shù)和素?cái)?shù)相等,則讀取行間交換模式和交換素?cái)?shù),按式(1)計(jì)算比特輸入矩陣的第j行第i列對(duì)應(yīng)的交織地址,intterleaver_address=T(j)*C+s((i*rT(j))mod(p-1)),[i=0,...,p-2;j=0,...,R-1]T(j)*C,[i=p-1;j=0,...,R-1]---(1)]]>如果列數(shù)等于素?cái)?shù)與1之和,則將交織長(zhǎng)度與比特輸入矩陣的行數(shù)和列數(shù)之積進(jìn)行比較,如果不相等,則讀取行間交換模式和交換素?cái)?shù),按式(2)計(jì)算比特輸入矩陣的第j行第i列對(duì)應(yīng)的交織地址,如果相等,則按式(3)計(jì)算所述的交織地址,intterleaver_address=T(j)*C+s((i*rT(j))mod(p-1)),[i=0,...,p-2;j=0,...,R-1]T(j)*C,[i=p-1;j=0,...,R-1]T(j)*C+p,[i=p;j=0,...,R-1]---(2)]]>intterleaver_address=T(j)*C+p,[i=0;j=0,...,R-1]T(j)*C+s((i*rT(j))mod(p-1)),[i=0,...,p-2,j=0,...,R-1]T(j)*C,[i=p-1;j=0,...,R-1]T(j)*C+1,[i=p;j=0,...,R-1]---(3)]]>如果列數(shù)等于素?cái)?shù)與1之差,則讀取行間交換模式和交換素?cái)?shù),按式(4)計(jì)算比特輸入矩陣的第j行第i列對(duì)應(yīng)的交織地址,intterleaver_address=T(j)*C+s((i*rT(j))mod(p-1))-1,[i=0,...,p-2;j=0,...,R-1](4)其中,T(j)為行間交換模式,C為比特輸入矩陣的列數(shù),R為比特輸入矩陣的行數(shù),p為素?cái)?shù),s((i*rT(j)mod(p-1))為行內(nèi)交換基本序列,rT(j)為交換素?cái)?shù);C)比較當(dāng)前計(jì)算出的交織地址與交織長(zhǎng)度,如果計(jì)算出的交織地址大于交織長(zhǎng)度,則禁止輸出當(dāng)前計(jì)算的交織地址,否則輸出當(dāng)前計(jì)算出的交織地址。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述行間交換模式和交換素?cái)?shù)預(yù)先計(jì)算并存儲(chǔ)于存儲(chǔ)器中,所述交織長(zhǎng)度、比特輸入矩陣的行數(shù)和列數(shù)、以及素?cái)?shù)和原根以協(xié)議規(guī)定的對(duì)應(yīng)關(guān)系存儲(chǔ)。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述比特輸入矩陣的行序號(hào)和列序號(hào)分別初始化為0,步驟B所述讀取行間交換模式和交換素?cái)?shù),按式(1)計(jì)算比特輸入矩陣的第j行第i列對(duì)應(yīng)的交織地址的步驟包括,B01)判斷當(dāng)前列序號(hào)是否等于素?cái)?shù)減1之差,如果是,則設(shè)置行序號(hào)為0,然后執(zhí)行步驟B02,否則,執(zhí)行步驟B03,B02)讀取當(dāng)前行對(duì)應(yīng)的行內(nèi)交換模式,按公式intterleaver_address=T(j)*C計(jì)算所述交織地址,然后設(shè)置行序號(hào)增1,并判斷當(dāng)前列序號(hào)是否等于行數(shù)與1之差,如果是,則執(zhí)行步驟C,否則返回步驟B02;B03)讀取當(dāng)前行對(duì)應(yīng)的行內(nèi)交換模式和交換素?cái)?shù),按公式interleaver_address=T(j)*C+s((i*rT(j)mod(p-1))計(jì)算所述交織地址,然后設(shè)置行序號(hào)增1,并判斷當(dāng)前行序號(hào)是否等于行數(shù)與1之差,如果是,設(shè)置列序號(hào)增1,返回步驟B01,否則,則返回步驟B03。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述比特輸入矩陣的行序號(hào)和列序號(hào)分別初始化為0,步驟B所述讀取行間交換模式和交換素?cái)?shù),按式(2)計(jì)算比特輸入矩陣的第j行第i列對(duì)應(yīng)的交織地址的步驟包括,B11)判斷當(dāng)前列序號(hào)是否等于素?cái)?shù)減1之差,如果是,則執(zhí)行步驟B12,否則,則執(zhí)行步驟B15;B12)判斷當(dāng)前列序號(hào)是否等于素?cái)?shù),如果是則設(shè)置行序號(hào)為0,執(zhí)行步驟B13,否則設(shè)置行序號(hào)為0,然后執(zhí)行步驟B14;B13)讀取當(dāng)前行對(duì)應(yīng)的行內(nèi)交換模式,按公式intterleaver_address=T(j)*C+p計(jì)算所述交織地址,然后設(shè)置行序號(hào)增1,并判斷當(dāng)前行序號(hào)是否等于行數(shù)與1之差,如果是,設(shè)置列序號(hào)增1,返回步驟B12,否則返回步驟B13;B14)讀取當(dāng)前行對(duì)應(yīng)的行內(nèi)交換模式,按公式intterleaver_address=T(j)*C計(jì)算所述交織地址,然后設(shè)置行序號(hào)增1,并判斷當(dāng)前行序號(hào)是否等于行數(shù)與1之差,如果是,則執(zhí)行步驟C,否則,則返回步驟B14;B15)讀取當(dāng)前行對(duì)應(yīng)的行內(nèi)交換模式和交換素?cái)?shù),按公式intterleaver_address=T(j)*C+s((i*rT(j)mod(p-1))計(jì)算所述交織地址,然后設(shè)置行序號(hào)增1,并判斷當(dāng)前行序號(hào)是否等于行數(shù)與1之差,如果是,設(shè)置列序號(hào)增1,返回步驟B11,否則,則返回步驟B15。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述比特輸入矩陣的行序號(hào)和列序號(hào)分別初始化為0,步驟B所述讀取行間交換模式和交換素?cái)?shù),按式(3)計(jì)算比特輸入矩陣的第j行第i列對(duì)應(yīng)的交織地址的步驟包括,B20)判斷當(dāng)前列序號(hào)是否等于0,如果是,則執(zhí)行步驟B26,否則執(zhí)行步驟B21;B21)判斷當(dāng)前列序號(hào)是否等于素?cái)?shù)減1之差,如果是,則執(zhí)行步驟B22,否則,則執(zhí)行步驟B25;B22)判斷當(dāng)前列序號(hào)是否等于素?cái)?shù),如果是則設(shè)置行序號(hào)為0,執(zhí)行步驟B24,否則設(shè)置行序號(hào)為0,然后執(zhí)行步驟B23;B23)讀取當(dāng)前行對(duì)應(yīng)的行內(nèi)交換模式,按公式intterleaver_address=T(j)*C計(jì)算所述交織地址,然后設(shè)置行序號(hào)增1,并判斷當(dāng)前行序號(hào)是否等于行數(shù)與1之差,如果是,設(shè)置列序號(hào)增1,返回步驟B22,否則返回步驟B23;B24)讀取當(dāng)前行對(duì)應(yīng)的行內(nèi)交換模式,按公式intterleaver_address=T(j)*C+1計(jì)算所述交織地址,然后設(shè)置行序號(hào)增1,并判斷當(dāng)前列序號(hào)是否等于行數(shù)與1之差,如果是,則執(zhí)行步驟C,否則,則返回步驟B24;B25)讀取當(dāng)前行對(duì)應(yīng)的行內(nèi)交換模式和交換素?cái)?shù),按公式interleaver_address=T(j)*C+s((i*rT(j)mod(p-1))計(jì)算所述交織地址,然后設(shè)置行序號(hào)增1,并判斷當(dāng)前行序號(hào)是否等于行數(shù)與1之差,如果是,設(shè)置列序號(hào)增1,返回步驟B21,否則,則返回步驟B25;B26)讀取當(dāng)前行對(duì)應(yīng)的行內(nèi)交換模式,按公式intterleaver_address=T(j)*C+p計(jì)算所述交織地址,然后設(shè)置行序號(hào)增1,并判斷當(dāng)前行序號(hào)是否等于行數(shù)與1之差,如果是,設(shè)置列序號(hào)增1,返回步驟B20,否則,返回步驟B26。
6.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述比特輸入矩陣的行序號(hào)和列序號(hào)分別初始化為0,步驟B所述讀取行間交換模式和交換素?cái)?shù),按式(4)計(jì)算比特輸入矩陣的第j行第i列對(duì)應(yīng)的交織地址的步驟包括,B31)判斷當(dāng)前列序號(hào)是否等于素?cái)?shù)減1之差,如果是,則執(zhí)行步驟C,否則,執(zhí)行步驟B32,B32)讀取當(dāng)前行對(duì)應(yīng)的行內(nèi)交換模式和交換素?cái)?shù),按公式interleaver_address=T(j)*C+s((i*rT(j)mod(p-1))計(jì)算所述交織地址,然后設(shè)置行序號(hào)增1,并判斷當(dāng)前行序號(hào)是否等于行數(shù)與1之差,如果是,設(shè)置列序號(hào)增1,返回步驟B31,否則,返回步驟B32。
7.一種Turbo碼交織器,其特征在于,所述交織器包括初始化模塊,計(jì)算模塊,以及,包含有控制電路和用于存儲(chǔ)有效交織地址的緩存器的緩存模塊,來(lái)自外部的時(shí)鐘信號(hào)分別送至上述模塊,其中,初始化模塊接收到來(lái)自外部的初始化啟動(dòng)信號(hào)后,根據(jù)當(dāng)前業(yè)務(wù)的交織長(zhǎng)度從外部存儲(chǔ)器讀取比特輸入矩陣的行數(shù)、列數(shù)、素?cái)?shù)和原根,根據(jù)讀取的上述參數(shù)計(jì)算當(dāng)前業(yè)務(wù)的所有行內(nèi)交換基本序列并存儲(chǔ),向外部輸出初始化結(jié)束標(biāo)志,且向計(jì)算模塊輸出包括交織長(zhǎng)度、行數(shù)、列數(shù)以及素?cái)?shù)的參數(shù)組和用于讀取行內(nèi)交換模式和交換素?cái)?shù)的基地址;計(jì)算模塊接收到外部模塊根據(jù)初始化模塊輸出的初始化結(jié)束標(biāo)志而產(chǎn)生的啟動(dòng)信號(hào)后,根據(jù)當(dāng)前行序號(hào)和初始化模塊輸出的基地址,計(jì)算用于讀取存儲(chǔ)于外部存儲(chǔ)器的讀取行內(nèi)交換模式和交換素?cái)?shù)的讀地址,根據(jù)讀地址讀取行內(nèi)交換模式和交換素?cái)?shù),并讀取來(lái)自外部的正逆序標(biāo)志以及存儲(chǔ)于初始化模塊中的行內(nèi)交換基本序列,根據(jù)讀取的行內(nèi)交換模式、交換素?cái)?shù)以及行內(nèi)交換基本序列,按列數(shù)和素?cái)?shù)的關(guān)系,選擇以下公式計(jì)算比特輸入矩陣的第j行第i列對(duì)應(yīng)的交織地址如果列數(shù)和素?cái)?shù)相等,則intterleaver_address=T(j)*C+s((i*rT(j))mod(p-1)),[i=0,...,p-2;j=0,...,R-1]T(j)*C,[i=p-1;j=0,...,R-1]---(1)]]>如果列數(shù)等于素?cái)?shù)與1之和,則將交織長(zhǎng)度與比特輸入矩陣的行數(shù)和列數(shù)之積進(jìn)行比較,如果不相等,則按式(2)計(jì)算,如果相等,則按式(3)計(jì)算,intterleaver_address=T(j)*C+s((i*rT(j))mod(p-1)),[i=0,...,p-2,j=0,...,R-1]T(j)*C[i=p-1;j=0,...,R-1]T(j)*C+p,[i=p;j=0,...,R-1]---(2)]]>intterleaver_address=T(j)*C+p,[i=0;j=0,...,R-1]T(j)*C+s((i*rT(j))mod(p-1)),[i=0,...,p-2,j=0,...,R-1]T(j)*C,[i=p-1;j=0,...,R-1]T(j)*C+1,[i=p;j=0,...,R-1]---(3)]]>如果列數(shù)等于素?cái)?shù)與1之差,則intterleaver_address=T(j)*C+s((i*rT(j))mod(p-1))-1,[i=0,...,p-2;j=0,...,R-1](4)其中,T(j)為行間交換模式,C為比特輸入矩陣的列數(shù),R為比特輸入矩陣的行數(shù),p為素?cái)?shù),s((i*rT(j)mod(p-1))為行內(nèi)交換的基本序列,rT(j)為交換素?cái)?shù);所述計(jì)算模塊在計(jì)算交織地址后,將有效交織地址標(biāo)志、計(jì)算出的交織地址以及開始存儲(chǔ)控制信號(hào)輸出至緩存模塊中的控制電路;緩存模塊中的控制電路根據(jù)來(lái)自外部的所述啟動(dòng)信號(hào)、開始存儲(chǔ)控制信號(hào)以及有效交織地址標(biāo)志,向用于存儲(chǔ)有效交織地址的緩存器輸出寫使能信號(hào),并輸出寫地址和讀地址至所述緩存器;緩存器受控制電路的控制,將來(lái)自計(jì)算模塊輸出的交織地址中的有效交織地址寫入,并按照外部模塊的讀時(shí)序要求輸出緩存于所述緩存器的交織地址。
8.根據(jù)權(quán)利要求7所述的交織器,其特征在于,所述緩存模塊中的控制電路在寫時(shí)序與外部模塊的讀時(shí)序不相同時(shí),向計(jì)算模塊輸出控制計(jì)算模塊計(jì)算的停止計(jì)算信號(hào)。
9.根據(jù)權(quán)利要求7或8所述的交織器,其特征在于,所述初始化模塊包括參數(shù)提取模塊、計(jì)算行內(nèi)交換基本序列的計(jì)算單元、以及存儲(chǔ)計(jì)算出的行內(nèi)交換基本序列的存儲(chǔ)器,其中,參數(shù)讀取模塊,接收所述初始化啟動(dòng)信號(hào),讀取所述存儲(chǔ)于外部存儲(chǔ)器中比特輸入矩陣的行數(shù)、列數(shù)、素?cái)?shù)和原根,輸出讀取的素?cái)?shù)和原根至計(jì)算行內(nèi)交換基本序列的計(jì)算單元,輸出所述基地址以及所述參數(shù)組至計(jì)算模塊;計(jì)算行內(nèi)交換基本序列的計(jì)算單元,根據(jù)參數(shù)讀取模塊輸出的素?cái)?shù)和原根計(jì)算所述當(dāng)前業(yè)務(wù)的所有行內(nèi)交換基本序列,并輸出至存儲(chǔ)計(jì)算出的行內(nèi)交換基本序列的存儲(chǔ)器;存儲(chǔ)計(jì)算出的行內(nèi)交換基本序列的存儲(chǔ)器,在收到來(lái)自計(jì)算模塊的讀地址時(shí)輸出當(dāng)前行內(nèi)交換基本序列。
10.根據(jù)權(quán)利要求9所述的交織器,其特征在于,所述計(jì)算模塊包括,第一狀態(tài)機(jī)、行計(jì)數(shù)器、列計(jì)數(shù)器、地址計(jì)算單元、第一乘法器、第二乘法器、除法器、復(fù)用器、加法器、比較器、輸出延遲單元、控制邏輯、第一鎖存器、第二鎖存器、第三鎖存器、第四鎖存器、以及第五鎖存器,其中,所述啟動(dòng)信號(hào)輸入至第一狀態(tài)機(jī)的使能端,所述第一狀態(tài)機(jī)的輸出為行計(jì)數(shù)器、列計(jì)數(shù)器、輸出延遲單元、以及所述各鎖存器分別提供時(shí)鐘信號(hào),所述時(shí)鐘信號(hào)輸入至第一狀態(tài)機(jī);所述正逆序標(biāo)志分別輸入至行計(jì)數(shù)器和列計(jì)數(shù)器的控制端,行計(jì)數(shù)器輸出行序號(hào)至地址計(jì)算單元;所述基地址輸入至地址計(jì)算單元,地址計(jì)算單元根據(jù)基地址和行計(jì)數(shù)計(jì)算出所述用于讀取行內(nèi)交換模式和交換素?cái)?shù)的讀地址,并向所述外部存儲(chǔ)器輸出該讀地址;來(lái)自外部存儲(chǔ)器輸出的行內(nèi)交換模式和交換素?cái)?shù)分別輸入至第一乘法器和第二乘法器,第一乘法器將行數(shù)與行內(nèi)交換模式的乘積輸出至第一鎖存器,第一鎖存器的輸出連至比較器的輸入;第二乘法器將交換素?cái)?shù)與來(lái)自列計(jì)數(shù)器輸出的列序號(hào)的乘積輸出至第二鎖存器,第二鎖存器的輸出連至除法器的輸入;除法器將來(lái)自第二鎖存器的輸出與素?cái)?shù)減1之差進(jìn)行模運(yùn)算,將運(yùn)算結(jié)果輸出至第三鎖存器,第三鎖存器的輸出連至所述存儲(chǔ)計(jì)算出的行內(nèi)交換基本序列的存儲(chǔ)器的讀地址端;復(fù)用器根據(jù)列數(shù)與素?cái)?shù)的關(guān)系,選擇輸入復(fù)用器的0值、素?cái)?shù)、1值或來(lái)自存儲(chǔ)計(jì)算出的行內(nèi)交換基本序列的存儲(chǔ)器輸出的行內(nèi)交換基本序列進(jìn)行復(fù)用,并向加法器輸出;加法器疊加來(lái)自復(fù)用器的輸出以及來(lái)自第一鎖存器的輸出,并輸出交織地址至第四鎖存器,第四鎖存器的輸出分別連至比較器的輸入以及輸出延遲單元的輸入;比較器比較來(lái)自第四鎖存器的交織地址與交織長(zhǎng)度,如果交織地址大于交織長(zhǎng)度,則輸出有效交織地址標(biāo)志至第五鎖存器的輸入,第五鎖存器的輸出連至緩存模塊中控制電路的輸入;輸出延遲單元將來(lái)自第四鎖存器輸出的交織地址延時(shí)后輸出至緩存模塊中的緩存器;控制邏輯接收分別來(lái)自行計(jì)數(shù)器和列計(jì)數(shù)器的輸出,根據(jù)在計(jì)算出交織地址的時(shí)序中輸出開始存儲(chǔ)控制信號(hào)至緩存模塊中控制電路的輸入。
11.根據(jù)權(quán)利要求7所述的交織器,其特征在于,所述控制電路包括,寫地址計(jì)數(shù)器、讀地址計(jì)數(shù)器、與門以及第二狀態(tài)機(jī),其中,來(lái)自外部的所述啟動(dòng)信號(hào)輸入至第二狀態(tài)機(jī)的使能端,所述時(shí)鐘信號(hào)輸入至第二狀態(tài)機(jī)的輸入,第二狀態(tài)機(jī)的輸出分別連至寫地址計(jì)數(shù)器和讀地址計(jì)數(shù)器的輸入,并還輸入至與門的輸入;來(lái)自計(jì)算模塊的有效交織地址標(biāo)志以及開始存儲(chǔ)控制信號(hào)輸入至與門的輸入,與門的輸出連至緩存器的寫使能端;寫地址計(jì)數(shù)器輸出寫地址至緩存器的寫地址端,讀地址計(jì)數(shù)器輸出讀地址至緩存器的讀地址端。
12.根據(jù)權(quán)利要求10所述的交織器,其特征在于,所述控制電路包括,寫地址計(jì)數(shù)器、讀地址計(jì)數(shù)器、與門、第三狀態(tài)機(jī)、第四狀態(tài)機(jī)、以及停止計(jì)算信號(hào)產(chǎn)生模塊,其中,來(lái)自外部的所述啟動(dòng)信號(hào)分別輸入至第三狀態(tài)機(jī)的使能端和第四狀態(tài)機(jī)的使能端,所述時(shí)鐘信號(hào)分別輸入至第三狀態(tài)機(jī)和第四狀態(tài)機(jī)的輸入,第三狀態(tài)機(jī)的輸出連至寫計(jì)數(shù)器的輸入和與門的輸入,第四狀態(tài)機(jī)的輸出連至讀計(jì)數(shù)器的輸入;來(lái)自計(jì)算模塊的有效交織地址標(biāo)志以及開始存儲(chǔ)控制信號(hào)分別輸入至與門的輸入,與門的輸出連至緩存器的寫使能端;寫地址計(jì)數(shù)器輸出寫地址至緩存器的寫地址端以及停止信號(hào)產(chǎn)生模塊的輸入,讀地址計(jì)數(shù)器輸出讀地址至緩存器的讀地址端以及停止計(jì)算信號(hào)產(chǎn)生模塊的輸入;停止計(jì)算信號(hào)產(chǎn)生模塊在輸入的寫地址等于設(shè)置的寫地址閾值或輸入的讀地址等于設(shè)置的讀地址閾值時(shí),輸出停止計(jì)算信號(hào)至計(jì)算模塊中第一狀態(tài)機(jī)的使能端。
全文摘要
本發(fā)明公開了一種Turbo碼交織器及其交織的方法,所述交織器包括初始化模塊,計(jì)算模塊,以及,包含有控制電路和用于存儲(chǔ)有效交織地址的緩存器的緩存模塊;所述方法在對(duì)3GPP Turbo交織算法進(jìn)行研究的基礎(chǔ)上找出其中的規(guī)律,解決了現(xiàn)有技術(shù)中查表方式進(jìn)行交織的缺點(diǎn),使得交織器具有一定的靈活性。
文檔編號(hào)H03M13/23GK1756091SQ200410080398
公開日2006年4月5日 申請(qǐng)日期2004年9月29日 優(yōu)先權(quán)日2004年9月29日
發(fā)明者趙訓(xùn)威 申請(qǐng)人:普天信息技術(shù)研究院