<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 一種改進(jìn)Turbo碼譯碼器的FPGA設計與實(shí)現

一種改進(jìn)Turbo碼譯碼器的FPGA設計與實(shí)現

作者: 時(shí)間:2017-06-05 來(lái)源:網(wǎng)絡(luò ) 收藏

又稱(chēng)并行級聯(lián)卷積碼(PCCC),1993年由Berro等人在ICC國際會(huì )議上提出。由于其充分利用了Shannon信道編碼定理的隨機化編碼條件,因此獲得幾乎接近Shannon理論極限的譯碼性能[1]。

本文引用地址:http://dyxdggzs.com/article/201706/349283.htm

在低信噪比應用環(huán)境下的優(yōu)異性能,使得其在很多通信系統中擁有非常好的應用前景。第三、四代移動(dòng)通信系統的多種方案,都將作為信道編碼的方案之一。但是,Turbo碼存在著(zhù)譯碼時(shí)延長(cháng)、硬件實(shí)現復雜度高的問(wèn)題,這使得其實(shí)現和應用都受到了一定的局限。人們也推出了一些減小譯碼延時(shí)的譯碼方法,例如分塊并行、滑窗等方法。但是這些譯碼方法對應的譯碼性能有損失,而且在硬件實(shí)現上控制時(shí)序也比較復雜。本文給出了一種更加有效減小譯碼延時(shí)方法,其譯碼性能沒(méi)有性能損失,硬件實(shí)現時(shí)的時(shí)序控制相對簡(jiǎn)單,存儲空間也有一定的減少。

1 改進(jìn)譯碼方法

  成員譯碼器(DEC1,DEC2)首先根據輸入的外信息和接收到的信息序列進(jìn)行正向(按幀長(cháng)從前向后的順序)分支度量值計算和前向遞歸計算,同時(shí)進(jìn)行反向(按幀長(cháng)的逆序)分支度量值計算和后向遞歸計算。當正向遞歸計算和反向遞歸計算到幀長(cháng)一半(N/2)時(shí),進(jìn)行正向對數似然比計算和反向對數似然比計算,同時(shí)計算出對應的外信息經(jīng)過(guò)交織后作為另一個(gè)成員譯碼器的輸入先驗信息。

這樣每半次迭代過(guò)程可分如下二個(gè)步驟進(jìn)行:

(1)第一步:DEC正向分支轉移度量γk計算和DEC前向遞歸αk計算[2][3],同時(shí)進(jìn)行反向分支轉移度量γj計算和DEC后向遞歸βj計算:

其中:s′為前一狀態(tài),s為后一狀態(tài),k為對應的狀態(tài)數,uk為編碼的信息位,xk,v為校驗位,yk,l為接收到的信息位,yk,v為接收到校驗位,Ak為一個(gè)常數,Lc為信道可信度。同時(shí)進(jìn)行前向遞歸:

對于β的初始化,如果編碼在每幀編碼之后通過(guò)加入歸零比特使編碼狀態(tài)回到零狀態(tài)。則可初始為:

這里v為編碼成員碼中寄存器的個(gè)數。

(2)第二步:正向對數似然值計算和反向對數似然比

然后進(jìn)行交織:

其中π()為交織函數。

經(jīng)典譯碼和改進(jìn)譯碼方法的半次迭代(一個(gè)子譯碼的譯碼過(guò)程)對應的時(shí)序圖如圖1所示。由圖1可知對應半次延時(shí)為T(mén),圖中下半部分是改進(jìn)的譯碼時(shí)序,改進(jìn)的譯碼延時(shí)為T(mén)/2。這種新的譯碼方法能將譯碼延時(shí)縮短一半。由于在整個(gè)計算過(guò)程中沒(méi)有采用任何近似計算,所以譯碼性能沒(méi)有任何損失。在計算過(guò)程中,不需要對γk(s′,s)進(jìn)行存儲,從而減少了在硬件實(shí)現時(shí)所需的存儲容量。

2 與其他譯碼方法的比較

為了減小譯碼延時(shí),人們推出了分塊并行譯碼算法、滑窗譯碼等方法。它們都采用了相應的近似計算,從而在譯碼性能上或多或少有些損失,它們都是通過(guò)犧牲譯碼性能來(lái)?yè)Q取減小譯碼延時(shí)的,同時(shí)它們硬件實(shí)現時(shí)的時(shí)序控制也比較復雜。

分塊并行是將接收的整個(gè)碼字分成若干子塊[4][5],各子塊進(jìn)行并行處理,其中各子塊的前后向遞推公式的初始值由相鄰子塊的前一次的邊界計算值傳遞,這樣就引入了近似計算,譯碼性能就有一定損失。設經(jīng)典半次延時(shí)為T(mén),分塊的塊數為M,則分塊并行譯碼方法的譯碼延時(shí)為T(mén)/M。但是,由于它的控制時(shí)序很復雜,因而硬件實(shí)現復雜度較高。

對于滑窗譯碼方法而言[6][7],它通過(guò)預先遞推一段后向遞歸量作為真正計算后向遞歸的初值,也采取了近似計算,因而譯碼性能也有一定的損失。設經(jīng)典半次迭代譯碼延時(shí)為T(mén),則滑窗譯碼方法的半次迭代譯碼延時(shí)為:(T/2+T/(2×N/W)),因而其時(shí)序控制很復雜,但是這種方法能很大程度上節省存儲容量。

本文采用的譯碼方法的譯碼延時(shí)為T(mén)/2,譯碼延時(shí)能節省一半,更主要的是其譯碼性能沒(méi)有任何損失,而對應的時(shí)序控制也相對簡(jiǎn)單,更有實(shí)際應用價(jià)值。

3 幾種譯碼方法的仿真比較

對經(jīng)典譯碼方法、分塊并行方法分別做了仿真。仿真參數:生成多項式為G=(15,13),交織采用3GPP隨機交織,譯碼算法為MAX-Log-MAP,碼率為1/3,迭代次數為4和6,調制采用BPSK,信道采用AWGN,幀長(cháng)為1 024,分塊并行方案中分4塊并行譯碼。仿真圖如圖2所示。

圖2中上面兩條分別是分塊并行和改進(jìn)譯碼算法迭代4次的誤碼率性能曲線(xiàn),從圖中看出分塊并行譯碼算法有性能損失;下面兩條是分塊并行和改進(jìn)譯碼算法迭代6次的誤碼率性能曲線(xiàn),對應的分塊并行也有性能損失。但是隨著(zhù)迭代次數的增加,兩種譯碼方法的性能差別逐漸減小。由圖2分析可知,本文采用的譯碼方法的譯碼性能與經(jīng)典的譯碼方法一樣,沒(méi)有性能上的損失,在譯碼性能上優(yōu)于分塊并行和滑窗譯碼方法,在減小譯碼延時(shí)優(yōu)于滑窗譯碼方法,但比分塊并行差。

4 硬件實(shí)現方案

分量譯碼器(DEC)內部結構圖如圖3所示。首先從存儲器中順序讀出系統信息序列Xk,校驗序列Yk和先驗信息Lak,進(jìn)行正向分支度量γk計算和前向遞歸αk計算并存儲,如圖3中上半部分所示。同時(shí),從存儲器中逆序讀出系統信息序列Xj,校驗序列Yj和先驗信息Laj,進(jìn)行反向分支度量γj計算和后向遞歸βj計算并存儲,如圖3中下半部分所示。另外還設置正向計算器和反向計算器,計數器對并行運算長(cháng)度進(jìn)行計數,并將計數結果作為地址來(lái)存儲計算結果。等計數值達幀長(cháng)的一半時(shí),對數似然比計算1模塊根據已經(jīng)計算出并存儲的后向遞歸βj,當前計算出的分支度量γk和前向遞歸αk進(jìn)行對數似然比計算,并存儲計算結果。同時(shí)對數似然比計算2模塊根據已經(jīng)計算出并存儲的前向遞歸αk、當前計算出的分支度量γj和前向遞歸βj進(jìn)行對數似然比計算,并存儲計算結果。這里采用雙口RAM實(shí)現對數似然比的存儲,雙口RAM的兩個(gè)口可以在地址不沖突的情況下,進(jìn)行同時(shí)寫(xiě)操作。在硬件實(shí)現的過(guò)程中,不用對分支度量進(jìn)行存儲,從而節省了存儲單元。當然由于多加了分支度量計算單元和對數似然比計算,增加了資源,但是從減小譯碼延時(shí)并且譯碼性能不損失角度考慮,這是非常值得的。

為了進(jìn)一步節省硬件資源,考慮到兩個(gè)分量譯碼器是分時(shí)工作的,這樣可以進(jìn)行分量譯碼器的復用。整個(gè)譯碼器實(shí)現結構圖如圖4所示。當然譯碼器的實(shí)現還需要對應的控制子系統,用于使各個(gè)子模塊協(xié)調有序地工作。這樣系統實(shí)現的硬件資源就大大減小,譯碼延時(shí)也大大縮小。從而達到高速數據通信的目的。

5 硬件實(shí)現

基于以上介紹的硬件實(shí)現結構,對Xilinx公司的Virtex2pro系列的芯片進(jìn)行了配置,采用的是幀長(cháng)為2 060、1/2碼率的Turbo碼;譯碼部分采用MAX-Log-MAP譯碼算法,其中輸入數據流采用8bit(其中1bit符號位,4bit整數位,3bit小數位4)量化;內部計算采用12bit(其中1bit符號位,8bit整數位,3bit小數位4)量化;迭代6次譯碼。運用XilinxISE8.2i對2vp30ff896-7進(jìn)行了綜合實(shí)現,資源消耗如圖5的綜合報告所示,最大時(shí)鐘可達到112.331MHz。仿真工具采用Modelsim SE 6.0進(jìn)行仿真,布局布線(xiàn)后仿真波形圖如圖6。



為了在不損失譯碼性能的前提下減小譯碼延時(shí),本文提出了改進(jìn)的Turbo碼譯碼方法,通過(guò)前向遞歸和后向遞歸并行計算,等計算到幀長(cháng)一半時(shí),開(kāi)始同時(shí)進(jìn)行前向對數似然比計算和后向對數似然比計算的譯碼方法。該方案可以將譯碼延時(shí)縮短一半,譯碼性能沒(méi)有損失,能節省硬件實(shí)現所需的存儲單元,時(shí)序控制比較簡(jiǎn)單,更易于硬件實(shí)現。仿真結果表明:這種譯碼方法在性能上優(yōu)于分塊譯碼算法和雙滑窗譯碼算法。在減小譯碼延時(shí)上優(yōu)于雙滑窗譯碼算法。這個(gè)方案在中短幀長(cháng)、對譯碼延時(shí)、譯碼性能要求高的通信系統中有較高的實(shí)用價(jià)值。



關(guān)鍵詞: Turbo碼 迭代譯碼 FPGA

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>