本發(fā)明涉及無線通信領(lǐng)域中前向糾錯(cuò)的一種Turbo碼編譯碼器,特別適用于WCDMA或衛(wèi)星移動(dòng)通信系統(tǒng)中前向糾錯(cuò)Turbo碼編譯碼器的實(shí)現(xiàn)。
背景技術(shù):
Turbo碼在無線通信中有著廣泛的應(yīng)用。第三代地面移動(dòng)通信WCDMA,以及中國的第一代衛(wèi)星移動(dòng)通信,都采用了Turbo碼。Turbo碼的交織器對Turbo碼的性能,有著較大的影響。一般采用偽隨機(jī)交織器,實(shí)現(xiàn)時(shí)需要一個(gè)較大的存儲表。中國的第一代衛(wèi)星移動(dòng)通信標(biāo)準(zhǔn)尚不穩(wěn)定成熟,實(shí)現(xiàn)時(shí)需考慮到標(biāo)準(zhǔn)的更改或演進(jìn)。
Turbo碼的編碼較簡單,將原始碼流編碼一次,交織后再編碼一次。其中涉及到一次交織處理。
Turbo碼的譯碼計(jì)算量大,實(shí)現(xiàn)復(fù)雜。Turbo碼最常用的譯碼算法為MAX-LOG-MAP算法。在譯碼時(shí),使用兩個(gè)軟輸入軟輸出(SISO)模塊,交換軟信息。第一個(gè)SISO模塊的輸出,經(jīng)交織后送入第二個(gè)SISO;或者第二個(gè)SISO的輸出,解交織后送入第一個(gè)SISO。因此,Turbo碼的譯碼過程中,也涉及到頻繁的交織和解交織。
因此,Turbo碼的實(shí)現(xiàn)上,有較多的方法可挖掘,以便減小計(jì)算量、增加靈活性。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提供了一種增強(qiáng)Turbo碼實(shí)現(xiàn)靈活性、減小資源消耗、可配置、可復(fù)用的Turbo碼編譯碼器。本發(fā)明的要點(diǎn)有兩個(gè):1),為增強(qiáng)靈活性,設(shè)計(jì)使得交織表內(nèi)的內(nèi)容,既可以通過交織表生成器內(nèi)部生成,也可以由外部處理器通過總線接口填寫;2),為減小資源開銷,交織器和解交織器為同一個(gè)模塊,不同的配置實(shí)現(xiàn)不同的功能。同時(shí),編碼器和譯碼器共用交織器/解交織器,由一個(gè)仲裁器來裁決二者的使用權(quán)。
本發(fā)明的目的具體是這樣實(shí)現(xiàn)的:
一種交織器/解交織器可配置、可復(fù)用的Turbo碼編譯碼器,包括:
總線接口A,當(dāng)編碼器工作時(shí),將外部數(shù)據(jù)轉(zhuǎn)發(fā)給編碼器B并將編碼器B的處理結(jié)果進(jìn)行對外輸出;當(dāng)譯碼器工作時(shí),將外部數(shù)據(jù)轉(zhuǎn)發(fā)給譯碼器D并將譯碼器D的處理結(jié)果進(jìn)行對外輸出;當(dāng)對交織器/解交織器C內(nèi)交織表存儲器C1填寫時(shí),將外部數(shù)據(jù)轉(zhuǎn)發(fā)給交織器/解交織器C;
編碼器B,將輸入數(shù)據(jù)進(jìn)行Turbo編碼,并將結(jié)果輸出,在這個(gè)過程中,編碼器將調(diào)用交織器/解交織器C;
譯碼器D,將輸入數(shù)據(jù)進(jìn)行Turbo譯碼,并將結(jié)果輸出,在這個(gè)過程中,譯碼器將調(diào)用交織器/解交織器C;
交織器/解交織器C,將編碼器或譯碼器送來的數(shù)據(jù),按照交織表存儲器的內(nèi)容進(jìn)行置亂,并將結(jié)果輸出給編碼器或譯碼器。
其中,交織器/解交織器C包括:
仲裁器C0:仲裁器C0在交織表生成器C2生成交織表存儲器C1內(nèi)容時(shí),禁止編碼器B和譯碼器D對交織表存儲器C1的使用;在編碼器B使用交織表存儲器C1時(shí),禁止譯碼器D對交織表存儲器C1的使用;在譯碼器D使用交織表存儲器C1時(shí),禁止編碼器B對交織表存儲器C1的使用;
交織表存儲器C1:交織表存儲器C1為一個(gè)靜態(tài)隨機(jī)讀寫存儲器SRAM,存儲器的地址為每個(gè)待交織比特的序號,存儲器的內(nèi)容為交織后該比特的序號;在交織器/解交織器控制器C5控制下,交織表存儲器C1的內(nèi)容由外部處理器直接填寫,或由交織表生成器C2生成并填寫;
交織表生成器C2:在交織器/解交織器控制器C5控制下,交織表生成器C2生成交織圖樣,并存儲在交織表存儲器C1內(nèi);
輸入數(shù)據(jù)存儲器C3:在交織器/解交織器控制器C5控制下,輸入數(shù)據(jù)存儲器C3接收并存儲編碼器或譯碼器輸入的數(shù)據(jù);
輸出數(shù)據(jù)存儲器C4:在交織器/解交織器控制器C5控制下,輸出數(shù)據(jù)存儲器C4存儲交織或解交織的結(jié)果;
交織器/解交織器控制器C5:控制交織表生成器C2生成交織表存儲器C1里面的內(nèi)容,并根據(jù)總線接口A的配置,進(jìn)行交織或解交織操作。
顯然,本發(fā)明的優(yōu)點(diǎn)體現(xiàn)在:
1.由于交織表通過總線可配置,增強(qiáng)了系統(tǒng)的靈活性。
2.編碼器和譯碼器共用交織器/解交織器,減小了資源開銷。
附圖說明
圖1是本發(fā)明的總體原理框圖;
圖2是交織器/解交織器的詳細(xì)結(jié)構(gòu)圖。
圖3是編碼器的詳細(xì)結(jié)構(gòu)圖。
圖4是譯碼器的詳細(xì)結(jié)構(gòu)圖。
具體實(shí)施方式
參照圖1至圖4,對本發(fā)明作進(jìn)一步說明。
一種交織器/解交織器可配置、可復(fù)用的Turbo碼編譯碼器,包括總線接口A、編碼器B、譯碼器D和交織器/解交織器C。實(shí)施例按圖1連接線路。
總線接口A,當(dāng)編碼器工作時(shí),將外部數(shù)據(jù)轉(zhuǎn)發(fā)給編碼器B并將編碼器B的處理結(jié)果進(jìn)行對外輸出;當(dāng)譯碼器工作時(shí),將外部數(shù)據(jù)轉(zhuǎn)發(fā)給譯碼器D并將譯碼器D的處理結(jié)果進(jìn)行對外輸出;當(dāng)對交織器/解交織器C內(nèi)交織表存儲器C1填寫時(shí),將外部數(shù)據(jù)轉(zhuǎn)發(fā)給交織器/解交織器C;
編碼器B,將輸入數(shù)據(jù)進(jìn)行Turbo編碼,并將結(jié)果輸出,在這個(gè)過程中,編碼器將調(diào)用交織器/解交織器C;
譯碼器D,將輸入數(shù)據(jù)進(jìn)行Turbo譯碼,并將結(jié)果輸出,在這個(gè)過程中,譯碼器將調(diào)用交織器/解交織器C;
交織器/解交織器C,將編碼器或譯碼器送來的數(shù)據(jù),按照交織表存儲器的內(nèi)容進(jìn)行置亂,并將結(jié)果輸出給編碼器或譯碼器。
交織器/解交織器C包括仲裁器C0、交織表存儲器C1、交織表生成器C2、輸入數(shù)據(jù)存儲器C3、輸出數(shù)據(jù)存儲器C4和交織器/解交織器控制器C5。實(shí)施例按圖2連接線路。
仲裁器C0,仲裁器C0在交織表生成器C2生成交織表存儲器C1內(nèi)容時(shí),禁止編碼器B和譯碼器D對交織表存儲器C1的使用;在編碼器B使用交織表存儲器C1時(shí),禁止譯碼器D對交織表存儲器C1的使用;在譯碼器D使用交織表存儲器C1時(shí),禁止編碼器B對交織表存儲器C1的使用;
交織表存儲器C1,交織表存儲器C1為一個(gè)靜態(tài)隨機(jī)讀寫存儲器SRAM,存儲器的地址為每個(gè)待交織比特的序號,存儲器的內(nèi)容為交織后該比特的序號;在交織器/解交織器控制器C5控制下,交織表存儲器C1的內(nèi)容由外部處理器直接填寫,或由交織表生成器C2生成并填寫;
交織表生成器C2,在交織器/解交織器控制器C5控制下,交織表生成器C2生成交織圖樣,并存儲在交織表存儲器C1內(nèi);
輸入數(shù)據(jù)存儲器C3,在交織器/解交織器控制器C5控制下,輸入數(shù)據(jù)存儲器C3接收并存儲編碼器或譯碼器輸入的數(shù)據(jù);
輸出數(shù)據(jù)存儲器C4,在交織器/解交織器控制器C5控制下,輸出數(shù)據(jù)存儲器C4存儲交織或解交織的結(jié)果;
交織器/解交織器控制器C5,控制交織表生成器C2生成交織表存儲器C1里面的內(nèi)容,并根據(jù)總線接口A的配置,進(jìn)行交織或解交織操作。
圖2中,交織器/解交織器C由仲裁器C0、交織表存儲器C1、交織表生成器C2、輸入數(shù)據(jù)存儲器C3、輸出數(shù)據(jù)存儲器C4和交織器/解交織器控制器C5組成。仲裁器C0控制交織器/解交織器C是由編碼器B使用、譯碼器D使用,還是外部處理器直接填寫。交織器/解交織器控制器C5控制交織表生成器C2生成交織表存儲器C1里面的內(nèi)容,并控制交織器/解交織器C作交織器使用,還是作解交織器使用。交織表存儲器C1的內(nèi)容,為輸入數(shù)據(jù)存儲器C3里面按順序存儲數(shù)據(jù)交織后的地址。交織或解交織的結(jié)果,放在輸出數(shù)據(jù)存儲器C4中。
圖3中,待編碼數(shù)據(jù)首先由外部處理器放在編碼器輸入數(shù)據(jù)存儲器B1中。在編碼器控制器B3的作用下,編碼計(jì)算單元B4從編碼器輸入數(shù)據(jù)存儲器B1中讀取數(shù)據(jù),處理后存入編碼器輸出數(shù)據(jù)存儲器B2中。然后,編碼器控制器B3將編碼器輸入數(shù)據(jù)存儲器B1里面的數(shù)據(jù),搬移到交織器/解交織器C,并且啟動(dòng)交織。交織完成后,編碼器控制器B3再次啟動(dòng)編碼計(jì)算單元B4,將交織器/解交織器C的輸出數(shù)據(jù)進(jìn)行編碼。編碼結(jié)果存入編碼器輸出數(shù)據(jù)存儲器B2中。
圖4中,待譯碼數(shù)據(jù)按照x,z1,z2的分類方式,分別存儲在譯碼器輸入數(shù)據(jù)存儲器D11、譯碼器輸入數(shù)據(jù)存儲器D13和譯碼器輸入數(shù)據(jù)存儲器D14中。首先,譯碼器控制器D3啟動(dòng)交織/解交織器C,將輸入數(shù)據(jù)x進(jìn)行交織,存儲在譯碼器輸入數(shù)據(jù)存儲器D12中。然后,譯碼器控制器D3控制SISO譯碼單元D4,對輸入數(shù)據(jù)進(jìn)行譯碼。若干次迭代后,譯碼器控制器D3將譯碼結(jié)果作判決,存儲在譯碼器輸出數(shù)據(jù)存儲器D2中,譯碼結(jié)束。