專利名稱:一種移動通信中信道編碼的快速計算方法
技術領域:
本發(fā)明涉及信道編碼技術,特別是指一種移動通信中信道編碼的快速計算方法。
背景技術:
卷積碼是1955年Elias提出的一種信道編碼技術,目前已被廣泛應用于通信系統(tǒng)中,剛剛發(fā)展起來的3GPP也將其作為主要采用的信道編碼。具體來說,卷積編碼是將k個信息比特編碼成n個比特,本組的n-k個校驗元不僅與本組的k個信息碼元有關,而且與前面N-1個時刻輸入編碼器的信息有關,其中N=n+1,可見,編碼過程中相互關聯(lián)的碼元為Nn個。由于卷積碼的糾錯能力是隨N的增加而增大的,而差錯率是隨N的增加而指數(shù)下降的,因此,N被稱為約束長度。
同樣,在卷積碼譯碼過程中,不僅從當前時刻收到的碼組中提取譯碼信息,而且還要利用以前或以后各個時刻收到的碼組中提取有關信息。正是由于卷積碼在編碼過程中充分利用了各組之間的相關性,并且,相對于分組編碼而言,k和n也相對較小,實現(xiàn)最佳和準最佳譯碼也比較容易。
卷積碼編碼器的整個編碼過程可以看成是輸入信息序列與移位寄存器和異或連接方式所決定的另一個序列的卷積,一般將卷積碼記作(n,k,N),其編碼效率為Rc=k/n。根據(jù)編碼效率的不同,卷積碼又包括1/2卷積碼、1/3卷積碼等等,其中的1/2、1/3即為編碼效率,這里,編碼效率也可簡稱為碼率。
通常,卷積碼編碼器的生成多項式如公式(1)所示G(D)=A0+A1D+...+An-1Dn-1+AnDn(1)以1/2碼率為例,1/2卷積碼編碼器的生成多項式如公式(2)、公式(3)所示
G0(D)=1+D2+D3+D4+D8(2)G1(D)=1+D+D2+D3+D5+D7+D8(3)在3GPP中,卷積碼編碼器的結構如圖1所示,其中,圖1a給出的是1/2卷積碼編碼器,圖1b給出的是1/3卷積碼編碼器。參見圖1所示,3GPP的卷積碼編碼器包括八個移位寄存器,一個輸入序列經(jīng)過八個移位寄存器的不同處理后,輸出兩個或三個序列,具體的輸出序列個數(shù)與所采用的碼率相關。從圖1可以看出,每個輸出比特都是當前輸入比特與此前輸入的某些比特進行異或得到的結果。
實際上,卷積碼編碼的常規(guī)方法就是按生成多項式?jīng)Q定的邏輯結構來進行逐比特操作。由于生成多項式的不同,運算量大小也不一樣。圖1中處理每個比特所使用的異或指令為5或7條,這樣運算量相當大,不適合高速數(shù)據(jù)通信。
目前,卷積碼編碼兩種典型的計算方法是基于生成多項式狀態(tài)項計算和基于沖激響應計算。其中,基于生成多項式狀態(tài)項計算的方法主要過程是這樣的首先,將待編碼的比特流分成一個或多個處理單元,所述處理單元最好與處理器的處理位寬一致,現(xiàn)有處理器的處理位寬一般是8、16、32等等。然后,存儲各個狀態(tài)項對應的比特序列,以便以后計算使用。這里,所述狀態(tài)項是指生成多項式中D的各個指數(shù)項,對于公式(2)、公式(3)來說,狀態(tài)項包括1,D,D2,D3,D4,D5,D7,D8。其中,狀態(tài)項1對應當前處理單元;狀態(tài)項D對應的比特序列比當前處理單元延遲1個時刻;狀態(tài)項D2對應的比特序列比當前處理單元延遲2個時刻,依次類推。最后,按照生成多項式,將各個狀態(tài)項對應的比特序列進行異或,得到當前處理單元的編碼序列。雖然該方法計算速度最快能達到lcycle/bit,但其計算速度受到處理器處理位寬的限制,只有處理器位寬大于或等于約束長度的2倍,也就是W≥2(N-1)時,才能方便快速地獲取各個狀態(tài)項,否則速度將大打折扣。而且,該方法產(chǎn)生的編碼數(shù)據(jù)是按照支路存放的,在支路合并時也需要額外的處理器開銷。
對于基于沖激響應的卷積碼編碼計算,如圖1所示,由于任意時刻t的輸入比特對編碼器都會產(chǎn)生一次沖激,這次沖激會影響t時刻及以后的t+1一直到t+8時刻,每個時刻對應一個輸出比特,從c0到c8。那么,正好將輸入比特流看作一個個沖激,對應輸出碼流就是該一個個沖激響應的疊加。又由于“0”的沖激響應對應的輸出比特都是0,可以不考慮,而只考慮“1”的沖激響應。因此,基于沖激響應計算的方法包括以下步驟1)根據(jù)編碼器狀態(tài)的數(shù)據(jù)長度,選用合適的寄存器,并進行初始化。比如圖1b所示的編碼器約束長度為9,數(shù)據(jù)長度為(9-1)/(1/3)=24,所以選取三個32比特的寄存器分別存放沖激響應累加結果S、“1”沖激響應A、編碼器輸出C。
2)計算“1”的沖激響應,并存儲在對應A的寄存器中。
3)按如下步驟進行迭代a.取一個輸入比特,判斷輸入比特是0還是1,如果是1,則執(zhí)行步驟b,否則執(zhí)行步驟c;b.將寄存器A的比特流累加入寄存器S;c.將寄存器S中的比特流左移三位輸入寄存器C,該三位就是輸入比特的編碼值,寄存器S左移三位后的結果仍保留在寄存器S中;d.最后輸出寄存器C中的編碼值,返回步驟a。
所述基于沖激響應的計算方法,雖然計算速度也是lcycle/bit級的,適用于高速數(shù)據(jù)通信,但該方法始終是一個串行的方式,因為針對每個輸入比特都要有一個判斷過程,不能并行處理一塊數(shù)據(jù),因此在計算速度上的提高還是有限制的。
發(fā)明內容
有鑒于此,本發(fā)明的主要目的在于提供一種移動通信中信道編碼的快速計算方法,能大大提高信道編碼的計算速度,進而提高整體的業(yè)務處理能力。
為達到上述目的,本發(fā)明的技術方案是這樣實現(xiàn)的一種移動通信中信道編碼的快速計算方法,該方法包括以下步驟
a.根據(jù)當前所用信道碼編碼器的邏輯結構,獲取該信道碼編碼器每路輸出與編碼器中每個移位寄存器的初始狀態(tài)和每路輸入比特之間的關系;b.將所獲得的每路輸出的每個函數(shù)表示部分分別存儲,并對每個存儲部分分別生成對應的查找表;c.在計算編碼時,先將表示當前計算的、信道碼編碼器第i路輸出的所有函數(shù)分別根據(jù)各自對應的查找表獲得各自的編碼,再將所獲得的所有編碼進行模2加得到第i路輸出的最終編碼。
其中,步驟a還包括同時獲取當前所用信道碼編碼器中每個移位寄存器的更新狀態(tài)與編碼器中每個移位寄存器的初始狀態(tài)和每路輸入比特之間的關系。
上述方案中,步驟b和步驟c之間進一步包括判斷每個存儲部分是否需要繼續(xù)細分,如果需要,則按給定條件將當前的存儲部分進一步劃分為一個以上子存儲部分,并對劃分后的每個子存儲部分分別生成對應的查找表;否則,直接執(zhí)行步驟c。相應的,該方法進一步包括預先設置需要進行細分的條件,則所述判斷是否需要細分為判斷是否符合細分條件,如果符合,則需要細分;否則不需要細分。其中,所述進行細分的條件為步驟b中所述分別存儲部分的存儲量大于給定存儲量。
上述方案中,如果將當前存儲部分進一步劃分為一個以上子存儲部分,則步驟c為將表示當前計算的、信道碼編碼器第i路輸出的所有函數(shù)分別根據(jù)各自子存儲部分對應的查找表獲得各自的編碼,再將所有獲得的對應每個子存儲部分的編碼進行模2加得到第i路輸出的編碼。
上述方案中,可將每個存儲部分的內容分別存儲在表中。另外,所述信道碼編碼器為1/2碼率的卷積碼編碼器、或1/3碼率的卷積碼編碼器、或Turbo碼編碼器。
本發(fā)明所提供的移動通信中信道編碼的快速計算方法,由于根據(jù)當前信道碼編碼器對應的邏輯結構,預先獲取在不同輸入比特的處理狀態(tài)下,當前信道碼編碼器的每路輸出與編碼器中每個移位寄存器的初始狀態(tài)和每路輸入比特位之間的關系,并根據(jù)該關系生成對應的查找表;在進行對應的信道編碼時,直接利用預先生成的查找表獲取信道碼編碼器當前狀態(tài)下的每路輸出,如此能大大提高信道編碼的計算速度。由于本發(fā)明是基于并行處理實現(xiàn)的,所以具有很高的并行度,處理靈活,不受處理器處理位寬的限制;而且,一次到位,不需要任何合路操作,因此也不會帶來額外的開銷。
圖1a為3GPP中1/2卷積碼編碼器的邏輯結構示意圖;圖1b為3GPP中1/3卷積碼編碼器的邏輯結構示意圖;圖2為通用信道碼編碼器的結構組成圖;圖3為本發(fā)明方法的實現(xiàn)流程圖。
具體實施例方式
本發(fā)明的基本思想就是根據(jù)當前信道碼編碼器對應的邏輯結構,預先獲取在不同輸入比特的處理狀態(tài)下,當前信道碼編碼器的每路輸出與編碼器中每個移位寄存器的初始狀態(tài)和每路輸入比特位之間的關系,以及編碼器中每個移位寄存器的更新狀態(tài)與編碼器中每個移位寄存器的初始狀態(tài)和每路輸入比特之間的關系,并根據(jù)所述關系分別生成對應的查找表;在進行對應的信道編碼時,直接利用預先生成的查找表獲取信道碼編碼器當前狀態(tài)下的每路輸出或移位寄存器的更新狀態(tài)。
如圖2所示,圖2是一個通用的信道碼編碼器邏輯結構,該編碼器共有N路輸入和L路輸出,假設編碼器的狀態(tài)由R1,R2,......,Rk表示,且Rk~R1的初始狀態(tài)為Ck~C1。當然,編碼器也可能沒有狀態(tài),比如編碼器僅由模2加電路組成,也就是說,編碼器的輸出僅與當時的輸入有關,這種情況下,只需將Rk~R1(Ck~C1)去掉。假設INPUT1輸入的一個字節(jié)為M1=M1,8,M1,7,M1,6,M1,5,M1,4,M1,3,M1,2,M1,1,其中M1,8為最高有效位(MSB),M1,1為最低有效位(LSB);從INPUT2輸入的一個字節(jié)為M2=M2,8,M2,7,M2,6,M2,5,M2,4,M2,3,M2,2,M2,1,其中M2,8為MSB,M2,1為LSB;依此類推,從INPUTn輸入的一個字節(jié)為Mn=Mn,8,Mn,7,Mn,6,Mn,5,Mn,4,Mn,3,Mn,2,Mn,1,其中Mn,8為MSB,Mn,1為LSB。假設編碼器在所有的輸入比特Mn,i(1≤n≤N,1≤i≤8)編碼結束之后,輸出的比特按照先后順序分別記為OUT1,OUT2,...,OUTL。那么,經(jīng)過變換編碼器的L路輸出以及編碼器更新狀態(tài)R1~Rk的表達式如表一和表二所示,其中表一為通用卷積碼編碼器L路輸出的表達式,表二為通用卷積碼編碼器更新狀態(tài)的表達式。
表一表一中,φi(C1,C2,....,Ck)表示是C1,...,Ck的一個函數(shù),C1到Ck是移位寄存器的初始狀態(tài),φi的下標i表示是第i路輸出的函數(shù);f1,1(M1,1,M1,2,...M1,8)表示是M1,1,M1,2,...M1,8的函數(shù),其中M1,2表示輸入,具體講就是,第一路輸入的一個字節(jié)中的第二個比特,以此類推。f1,1下標中的第一個1表示第一路輸出,第二個1表示第一路輸入;“+”表示模2加。
表二同樣的,表二中,gi(C1,C2, ....,Ck)表示是C1,...,Ck的一個函數(shù),C1到Ck是移位寄存器的初始狀態(tài),gi的下標i表示是第i路輸出的函數(shù);h1,1(M1,1,M1,2,..M1,8)表示是M1,1,M1,2,...M1,8的函數(shù),其中M1,2表示輸入,具體講就是,第一路輸入的一個字節(jié)中的第二個比特,以此類推。h1,1下標中的第一個1表示第一路輸出,第二個1表示第一路輸入;“+”表示模2加。
實際上,本發(fā)明計算信道編碼的具體處理過程,如圖3所示包括以下步驟步驟301根據(jù)當前所用信道碼編碼器的邏輯結構,獲取該編碼器每路輸出與編碼器中每個移位寄存器的初始狀態(tài)和每路輸入比特之間的關系,同時獲取該編碼器中每個移位寄存器的更新狀態(tài)與編碼器中每個移位寄存器的初始狀態(tài)和每路輸入比特之間的關系;步驟302將所獲得的每路輸出的每個函數(shù)表示部分分別存儲,比如將表一劃分為N+1個子表,如表三、表四、表五所示;
表三
表四
表五步驟303分別生成對應每個存儲部分的查找表,也就是,分別生成N+1個子表的查找表;步驟304在計算編碼時,先將表示當前計算的第i路輸出的所有函數(shù)分別根據(jù)各自對應的查找表獲得各自的編碼,再將所獲得的所有編碼進行模2加即可得到該路輸出所要求的最終編碼。
在步驟302和步驟303之間還可以增加一個判斷,判斷分別存儲的部分是否還需繼續(xù)細分,如果需要,則按給定條件將當前的存儲部分進一步劃分為一個以上子存儲部分,并對劃分后的每個子存儲部分分別生成對應的查找表??深A先設置細分條件,比如查找表的存儲量大于某個給定值就再細分,那么,細分時就按照存儲量給定值來決定如何細分,具體說就是,當前存儲部分的查找表存儲量為64K,而給定值為32K,那么,就會將當前存儲部分再進一步劃分為兩個存儲部分。如果進行了細分,則步驟304還要分別以每個子存儲部分所含的自變量為地址索引,查找相應的查找表,再將所有查找結果進行異或。
對于上述每個步驟提到的存儲,都可以設置一個表進行存儲,如果某兩個表是從某個表中劃分出來的,則這兩個表可稱為原表的子表。實施例以圖1a所示1/2碼率的卷積碼編碼為例。
根據(jù)3GPP標準規(guī)定,3GPP 1/2碼率的卷積碼編碼器有一路輸出Input,兩路輸出Output0和Output1,該編碼器采用八個移位寄存器,具體邏輯結構如圖1a所示。本實施例中,每路輸出的各個函數(shù)表示部分就具體由相應的移位寄存器初始狀態(tài)和輸入比特位來表示。
設定圖1a中所示編碼器所用的移位寄存器從左到右分別記為D8,D7,D6,D5,D4,D3,D2,D1;每個移位寄存器的初始狀態(tài)分別記為C8,C7,C6,C5,C4,C3,C2,C1;輸入的一個字節(jié)記為M=M8M7M6M5M4M3M2M1,其中M8為MSB,M1為LSB。并且,當輸入M1比特時,編碼器的輸出Output0記為OUT1,Output1記為OUT2;當輸入M2比特時,編碼器的輸出Output0記為OUT3,Output1記為OUT4;依此類推,分別輸入M3、......、M8比特時,編碼器的輸出Output0和Output1分別記為OUT5、OUT6,OUT7、OUT8,OUT9、OUT10,OUT11、OUT12,OUT13、OUT14,OUT15、OUT16。則計算1/2卷積碼編碼的過程是第一步根據(jù)圖1a給出的邏輯結構,可以得到每輸入一個比特時,移位寄存器當前更新狀態(tài)與移位寄存器初始狀態(tài)和輸入比特之間的關系,如表六所示。比如移位寄存器D1在未輸入比特時,等于C1;在輸入第一個比特后,等于C2;在輸入第二個比特后,等于C3;以此類推。
表六同時,還根據(jù)圖1a給出的邏輯結構,可以得到每輸入一個比特時,1/2卷積碼編碼器的輸出與移位寄存器初始狀態(tài)和輸入比特之間的關系,如表七所示。比如在輸入第一個比特后,該1/2卷積碼編碼器的第一輸出為M1+C7+C6+C5+C1;第二輸出為M1+C8+C7+C6+C4+C2+C1,以此類推。其中,表中的“+”為模2加,以下各表中的“+”均表示模2加。
表七如果直接生成表七所對應的查找表,顯然不恰當,因為表中共有M8~M1、C8~C1十六個自變量,相應的,會有216=65536(64K)種組合情況,如此會導致查找表存儲量太大,因此,繼續(xù)執(zhí)行第二步。
第二步將所獲得的、表示每個輸出的與輸入比特相關部分和與移位寄存器初始狀態(tài)相關部分分別存儲,即將表七分為表八、表九兩個子表,其中表八為每個輸出與輸入比特相關的表示部分,表九為每個輸出與移位寄存器初始狀態(tài)相關的表示部分。
表八
表九第三步分別以表八或表九中的自變量為地址索引,生成對應表八或表九存儲部分的查找表。
這里,以表八為例,生成查找表的具體過程是先列出M1~M8的256種取值;再根據(jù)表八中每個輸出與M1~M8的關系,計算出M1~M8每種不同取值所對應的每個輸出值;以M1~M8為地址索引,將所有輸出值都存儲到寄存器中;最后形成的關于每個輸出的256種取值就是所需的查找表。比如M1~M8的取值為01111010時,由于OUT5為M3+M1,這里M3=1,M1=0,則計算出OUT5的取值為1,其它輸出的計算方法與此相同。
第四步在實際進行卷積編碼時,分別對兩個查找表進行尋址,然后將得到的兩個值進行模2加,即可得到最后的編碼值。也就是說,分別根據(jù)兩個查找表得到對應的兩個OUTn的值,然后將兩個OUTn的值進行模2加,得到的結果即為最終OUTn的輸出。
由于分別對表八和表九生成查找表,因此所需的存儲空間為28×2=512個字,相對于216,存儲量減小為原來的1/128。
對于圖1b所示1/3碼率的卷積碼編碼的計算方法與上述實施例完全相同,只是1/3碼率的卷積碼編碼器有三路輸出,相應的,會出現(xiàn)24個OUT。對于其它的信道編碼,只要其能通過確定邏輯結構計算,都可以采用本發(fā)明的方法,比如Turbo編碼等等,具體的基本實現(xiàn)過程也均與上述實施例相同。
本發(fā)明的方法相對于單比特計算而言,既可以節(jié)約時間,又可以節(jié)約空間。譬如如果環(huán)境對空間要求十分嚴格,可將16比特分成兩個8比特,空間可以節(jié)約為原來的2-7=1/128;也可以將8比特分成兩個4比特,空間可以節(jié)約為原來的1/8;同時,還可以省去將兩個比特或三個比特縫補為一個字或字節(jié)的繁瑣過程,當然也節(jié)約了操作時間。
本發(fā)明的方法也適用于單個比特,即不成一個字節(jié)的比特,只需將尋址得到的碼的前幾位去掉即可。此外,本發(fā)明方法的輸出比特流即為各個支路的輸出比特流的合路輸出,不需要單獨的合路操作。
對于本發(fā)明方法的計算量,可具體計算一下,比如輸入碼流為每8個比特一組,則1/2碼率、約束長度為9的卷積碼編碼器的計算量情況是,兩次查表操作和一次異或操作;1/3碼率時,僅僅需要將表格的存儲方式從按照字存儲改為按照雙字存儲就行了,并不需要額外的開銷,只是增大存儲量而已。另外,采用本發(fā)明的方法,對于圖1所示的卷積碼編碼器,其計算速度能夠達到低于lcycle/bit的速度。
以上所述,僅為本發(fā)明的較佳實施例而已,并非用于限定本發(fā)明的保護范圍。
權利要求
1.一種移動通信中信道編碼的快速計算方法,其特征在于,該方法包括以下步驟a.根據(jù)當前所用信道碼編碼器的邏輯結構,獲取該信道碼編碼器每路輸出與編碼器中每個移位寄存器的初始狀態(tài)和每路輸入比特之間的關系;b.將所獲得的每路輸出的每個函數(shù)表示部分分別存儲,并對每個存儲部分分別生成對應的查找表;c.在計算編碼時,先將表示當前計算的、信道碼編碼器第i路輸出的所有函數(shù)分別根據(jù)各自對應的查找表獲得各自的編碼,再將所獲得的所有編碼進行模2加得到第i路輸出的最終編碼。
2.根據(jù)權利要求1所述的方法,其特征在于,步驟a還包括同時獲取當前所用信道碼編碼器中每個移位寄存器的更新狀態(tài)與編碼器中每個移位寄存器的初始狀態(tài)和每路輸入比特之間的關系。
3.根據(jù)權利要求1所述的方法,其特征在于,步驟b和步驟c之間進一步包括判斷每個存儲部分是否需要繼續(xù)細分,如果需要,則按給定條件將當前的存儲部分進一步劃分為一個以上子存儲部分,并對劃分后的每個子存儲部分分別生成對應的查找表;否則,直接執(zhí)行步驟c。
4.根據(jù)權利要求3所述的方法,其特征在于,該方法進一步包括預先設置需要進行細分的條件,則所述判斷是否需要細分為判斷是否符合細分條件,如果符合,則需要細分;否則不需要細分。
5.根據(jù)權利要求4所述的方法,其特征在于,所述進行細分的條件為步驟b中所述分別存儲部分的存儲量大于給定存儲量。
6.根據(jù)權利要求3所述的方法,其特征在于,如果將當前存儲部分進一步劃分為一個以上子存儲部分,則步驟c為將表示當前計算的、信道碼編碼器第i路輸出的所有函數(shù)分別根據(jù)各自子存儲部分對應的查找表獲得各自的編碼,再將所有獲得的對應每個子存儲部分的編碼進行模2加得到第i路輸出的編碼。
7.根據(jù)權利要求1所述的方法,其特征在于,將每個存儲部分的內容分別存儲在表中。
8.根據(jù)權利要求1所述的方法,其特征在于,所述信道碼編碼器為1/2碼率的卷積碼編碼器、或1/3碼率的卷積碼編碼器、或Turbo碼編碼器。
全文摘要
本發(fā)明公開了一種移動通信中信道編碼的快速計算方法,該方法包括以下步驟a.根據(jù)當前所用信道碼編碼器的邏輯結構,獲取該信道碼編碼器每路輸出與編碼器中每個移位寄存器的初始狀態(tài)和每路輸入比特之間的關系;b.將所獲得的每路輸出的每個函數(shù)表示部分分別存儲,并對每個存儲部分分別生成對應的查找表;c.在計算編碼時,先將表示當前計算的、信道碼編碼器第i路輸出的所有函數(shù)分別根據(jù)各自對應的查找表獲得各自的編碼,再將所獲得的所有編碼進行模2加得到第i路輸出的最終編碼。該方法能大大提高信道編碼的計算速度,進而提高整體的業(yè)務處理能力。
文檔編號H03M13/23GK1633031SQ200310122448
公開日2005年6月29日 申請日期2003年12月22日 優(yōu)先權日2003年12月22日
發(fā)明者趙訓威, 王剛強 申請人:普天信息技術研究院