張風(fēng)源,唐振剛,閔康磊,田毅輝,彭 飛
(1.上海電子技術(shù)研究所,上海 201109; 2.上海衛(wèi)星工程研究所,上海 200240)
?
短幀長Turbo編譯碼的FPGA實(shí)現(xiàn)研究
張風(fēng)源1,唐振剛2,閔康磊1,田毅輝1,彭 飛1
(1.上海電子技術(shù)研究所,上海 201109; 2.上海衛(wèi)星工程研究所,上海 200240)
對深空通信中短幀長信息的Turbo編譯碼FPGA實(shí)現(xiàn)進(jìn)行了研究。設(shè)計(jì)了Turbo編譯碼方法,編碼由兩個(gè)分量編碼器并行級(jí)聯(lián)組成,選擇遞歸系統(tǒng)卷積碼,編碼采用特殊行列交織器;譯碼由兩個(gè)獨(dú)立的軟輸入軟輸出譯碼器串行聯(lián)級(jí)聯(lián)組成,采用近似Log-Map算法。給出了Turbo編譯碼的現(xiàn)場可編程邏輯陣列(FPGA)實(shí)現(xiàn),給出了Turbo編譯碼單元的接口和頂層接口時(shí)序,以及Map譯碼單元流程。仿真結(jié)果表明:對幀長小于500 b、碼率為1/2的Turbo編譯碼器的FPGA實(shí)現(xiàn)了編碼數(shù)據(jù)實(shí)時(shí)輸出,譯碼延時(shí)0.45 ms,滿足輸入數(shù)據(jù)速率要求。實(shí)測結(jié)果驗(yàn)證了仿真結(jié)果與理論性能相符。
深空通信; Turbo碼; 近似Log-Map算法; 現(xiàn)場可編程邏輯陣列; 短幀長信息; 編碼; 譯碼
深空通信是較地球衛(wèi)星更遠(yuǎn)的探測器與探測器間或探測器與地球間的通信,無線電波具傳輸距離遠(yuǎn)、時(shí)間長、能量低且可適應(yīng)惡劣的太空條件的基本特性。這些都要求通信系統(tǒng)需增強(qiáng)傳輸能力,因此在通信系統(tǒng)中必須使用信道編譯碼。1993年,BERROU等在國際通信會(huì)議上提出Turbo編譯碼方法,其性能距離香農(nóng)限僅0.7 dB[1-2]。深空通信與無記憶高斯信道(AWGN)非常相似,香農(nóng)噪聲信道編碼理論也以AWGN信道為基礎(chǔ),對香農(nóng)噪聲信道仿真研究可直接用于實(shí)際通信[3]??臻g數(shù)據(jù)標(biāo)準(zhǔn)咨詢委員會(huì)(CCSDS)已將16狀態(tài)Turbo碼列為一個(gè)新的信道編碼標(biāo)準(zhǔn)[4]。Turbo碼譯碼基本算法主要有最大后驗(yàn)概率算法(MAP)和軟輸出維特比算法(SOVA)[5]。文獻(xiàn)[6]研究表明MAP算法是最優(yōu)算法,但計(jì)算量極大,不利于硬件實(shí)現(xiàn),一般情況下僅用于理論分析。針對MAP算法,提出了Log-Map,Max-Log-Map等算法,這些算法通過取對數(shù)將指數(shù)運(yùn)算變成加減運(yùn)算,顯著減少了計(jì)算量,便于硬件實(shí)現(xiàn)[7-8]。文獻(xiàn)[9]給出了SOVA算法的計(jì)算方法,SOVA算法整體性能不如MAP算法,但其計(jì)算量較低,便于硬件實(shí)現(xiàn),在信道條件較好時(shí),可選擇該種算法。針對深空通信具信息傳輸時(shí)延大、信號(hào)能量嚴(yán)重衰減等特點(diǎn),本文提出了一種幀長小于500 b,碼率1/2的Turbo碼FPGA的實(shí)現(xiàn),其中Turbo編碼器采用特殊的行列交織器,通過兩個(gè)分量編碼器并行級(jí)聯(lián)而成,Turbo譯碼器采用改進(jìn)的近似Log-Map算法,降低譯碼的復(fù)雜度達(dá)到工程最優(yōu)實(shí)現(xiàn),以使短幀長Turbo編碼獲得較好的編碼增益和性能,改進(jìn)的譯碼算法降低對硬件和軟件的需求,滿足深空通信的要求。
Turbo編碼器采用兩個(gè)分量編碼器并行級(jí)聯(lián)而成,分量編碼器選擇遞歸系統(tǒng)卷積碼(RSC),遞歸系統(tǒng)卷積碼在限制長度相同條件下,信噪比低時(shí)的性能略優(yōu)于非系統(tǒng)卷積碼(NSC),其結(jié)構(gòu)如圖1所示。工作原理為:信息數(shù)據(jù)分三路處理,其中一路通過延時(shí)后形成原始延時(shí)輸出數(shù)據(jù)O0a,另兩路數(shù)據(jù)中的一路通過延時(shí)進(jìn)入編碼器形成延時(shí)編碼數(shù)據(jù)O1a,一路通過交織器再進(jìn)入編碼器形成交織編碼數(shù)據(jù)O1b;對編碼器a、b的輸出數(shù)據(jù)進(jìn)行刪余后獲得碼率1/2的Turbo編碼。
圖1 并行級(jí)聯(lián)Turbo碼編碼器結(jié)構(gòu)Fig.1 Structure of parallel cascaded Turbo coder
Turbo編碼通過反饋到每個(gè)分量編碼器的最左邊的異或完成遞歸運(yùn)算,兩個(gè)分量編碼器相同,均由后向連接矢量G0=1+D3+D4和前向連接矢量G1=1+D+D3+D4共同實(shí)現(xiàn),此處D為單比特延時(shí)器。編碼時(shí),先將一幀數(shù)據(jù)暫存于信息塊緩沖區(qū)中,編碼器a的輸入為順序輸入的信息塊,編碼器b的輸入為經(jīng)交織處理后的信息數(shù)據(jù)。編碼如圖2所示。
開始編碼時(shí),兩個(gè)分量編碼器的所有寄存器均初始化為0,運(yùn)行1個(gè)幀長周期(500 b)后,輸入開關(guān)在低位接收輸入數(shù)據(jù),接收496 b數(shù)據(jù)后剩余4 b時(shí),開關(guān)切換至高位,從移位寄存器接收反饋信號(hào),該反饋與最左邊相加器的反饋抵消,最后4 b數(shù)據(jù)輸入后,4個(gè)寄存器清零,在寄存器清零期間,編碼器仍繼續(xù)輸出非零編碼符號(hào)。
圖2 1/2 Turbo編碼結(jié)構(gòu)Fig.2 Structure of 1/2 Turbo coding
Turbo碼譯碼器的原理如圖3所示。其工作流程為:輸入數(shù)據(jù)經(jīng)過數(shù)據(jù)處理單元將信息位與校驗(yàn)位分離,譯碼部分由兩個(gè)獨(dú)立的軟輸入軟輸出譯碼器串行級(jí)聯(lián)組成(DEC 1,DEC 2)。鑒于編碼時(shí)選用了相同的編碼器,故對應(yīng)的兩個(gè)子譯碼器也相同。交織器也與編碼器中使用的交織器相同。
圖3 Turbo譯碼單元原理Fig.3 Principle of Turbo decoding unit
設(shè)MAP算法中似然比Λk、分支度量δk、前向狀態(tài)量度αk、后向狀態(tài)量度βk的對數(shù)形式分別為Lk,Γk,Ak,Bk。由雅可比對數(shù)算法可得
max*(δ1,δ2)=ln(eδ1+eδ2)=max(δ1,δ2)+
ln(1+e-δ1-δ2)=max(δ1,δ2)+fc(δ).
(1)
式中:fc(δ)為修正函數(shù)項(xiàng);δ=δ1-δ2;max*表示對數(shù)求和。則有
max*(Ak-1+Γk-1|i=0,Ak-1+
Γk-1|i=1)-max(Ak).
(2)
綜合可得
(4)
式中:
(5)
外信息為
(6)
a)規(guī)定
b)將lg1+expWL_a近似為
文獻(xiàn)[10]給出了對幀長小于500 b、碼率1/2 Turbo碼實(shí)現(xiàn)軟判決Log-Map算法的誤碼率如圖4所示。為降低譯碼復(fù)雜度,Turbo譯碼采用硬判決。硬判決實(shí)現(xiàn)Turbo編譯碼與軟判決性能相比損失約3 dB。由此,可得本文近似Log-Map算法能達(dá)到的性能如圖5所示。比較圖4、5可知:用本文方法實(shí)現(xiàn)的編譯碼性能與理論極限值相差約3 dB,這是根據(jù)目前硬件資源和可實(shí)現(xiàn)性能達(dá)到的較好結(jié)果。隨著算法的進(jìn)一步改進(jìn),性能可進(jìn)一步提升。
圖4 Log-Map基本算法編譯碼性能Fig.4 Performance of coding and decoding of Log-Map algorithm
圖5 近似Log-Map基本算法編譯碼性能Fig.5 Performance of coding and decoding of approximately Log-Map algorithm
Turbo編碼器采用并行編碼結(jié)構(gòu),交織器可用交織映射表實(shí)現(xiàn),將交織器前后位置存儲(chǔ)在FPGA的ROM表中,編碼是讀取ROM表中的值,得到交織后的比特位置。Turbo編碼模塊接口如圖6所示。編碼流程為:緩存1幀數(shù)據(jù)完成后,分別以順序地址和交織后的地址從存儲(chǔ)器中讀取數(shù)據(jù)進(jìn)行Turbo并行編碼;編碼后將數(shù)據(jù)信息位、校驗(yàn)位分別輸入Turbo編碼輸出控制模塊,進(jìn)行校驗(yàn)位刪余和輸出控制,最后輸出編碼后串行數(shù)據(jù)。
圖6 Turbo編碼單元接口Fig.6 Interface of Turbo coding unit
Turbo譯碼器主要包含信號(hào)轉(zhuǎn)換單元、數(shù)據(jù)檢驗(yàn)單元、數(shù)據(jù)分離單元和MAP譯碼單元共4個(gè)模塊。Turbo譯碼單元接口關(guān)系如圖7所示。為保證數(shù)據(jù)可實(shí)時(shí)譯碼,選用乒乓存儲(chǔ)譯碼模型。RAM_index_W為“0”,RAM_index_R為“1”,表示當(dāng)前幀數(shù)據(jù)存入RAM 1,反之,當(dāng)前幀數(shù)據(jù)存入RAM 2。在時(shí)刻t0,Turbo譯碼單元開始接收第1幀480 b數(shù)據(jù)并將其存入RAM 1中;在時(shí)刻t1,第1幀數(shù)據(jù)存儲(chǔ)完畢,Turbo譯碼模塊開始譯碼;在時(shí)刻t2,將第2幀接收的數(shù)據(jù)存入RAM 2中;在時(shí)刻t3,Turbo譯碼模塊譯碼完畢,輸出譯碼數(shù)據(jù);按此順序,RAM 1,2交替存儲(chǔ)數(shù)據(jù),譯碼單元進(jìn)行實(shí)時(shí)譯碼。Turbo譯碼單元頂層接口時(shí)序如圖8所示。
圖7 Turbo譯碼單元接口Fig.7 Interface of Turbo decoding unit
圖8 Turbo譯碼單元頂層接口時(shí)序Fig.8 Top interface timing sequence of Turbo decoding unit
數(shù)據(jù)檢驗(yàn)?zāi)K校驗(yàn)外部模塊的輸入數(shù)據(jù),丟棄異常數(shù)據(jù)幀,并控制數(shù)據(jù)乒乓存儲(chǔ),奇數(shù)幀數(shù)據(jù)存入RAM 1,偶數(shù)幀數(shù)據(jù)存入RAM 2。數(shù)據(jù)分離模塊先分離存儲(chǔ)譯碼器1的信息位、譯碼器1的校驗(yàn)位和譯碼器2的校驗(yàn)位,同時(shí)頂層控制模塊同步計(jì)數(shù)。當(dāng)分離完1幀數(shù)據(jù)后,頂層模塊給交織模塊使能,讀出交織數(shù)據(jù)作為譯碼器1信息位的讀取地址,將交織后的數(shù)據(jù)存入譯碼器2信息位RAM;譯碼器2信息位存儲(chǔ)完成后,給出譯碼給MAP譯碼模塊使能,表示可進(jìn)行譯碼。
MAP譯碼模塊給出地址,讀取譯碼所需數(shù)據(jù)。數(shù)據(jù)通過輸出控制模塊輸出。Map譯碼單元流程如圖9所示。工作流程如下:
a)Map譯碼單元接收到數(shù)據(jù)分離模塊(Data_Depart)傳送的Map單元使能信號(hào)(Map_decodeEn)后,子譯碼器選擇信號(hào)(Decode_index),若為“0”,代表子譯碼器1(DEC 1)開始工作;若為“1”,代表子譯碼器2(DEC 2)開始工作。
b)Beta計(jì)算模塊使能信號(hào)有效(Beta_En),開始計(jì)算Beta值,計(jì)算結(jié)束后生成Beta_Done信號(hào),代表Beta計(jì)算結(jié)束,并開始計(jì)算Alpha,Extend_info。
圖9 Map譯碼單元流程Fig.9 Flowchart of Map decoding unit
c)Alpha計(jì)算模塊使能信號(hào)有效(Alpha_En),開始計(jì)算Alpha值,計(jì)算結(jié)束后生成Alpha_Done信號(hào),代表Alpha計(jì)算結(jié)束。
d)Extend_info計(jì)算模塊使能信號(hào)有效(Extend_En),開始計(jì)算Extend_info值,與Alpha計(jì)算同步,計(jì)算結(jié)束后生成Extend_Done信號(hào),代表Extend_info計(jì)算結(jié)束。
e)對外信息處理成先驗(yàn)信息,并進(jìn)行交織存儲(chǔ),供子譯碼器2(DEC 2)使用。子譯碼器2的計(jì)算過程與子譯碼器1相同,子譯碼器2先計(jì)算Beta值,然后同時(shí)計(jì)算Alpha和外信息。子譯碼器2計(jì)算完成后,對得到的外信息進(jìn)行解交織并存儲(chǔ),供下次迭代時(shí)子譯碼器1使用。
f)子譯碼器2計(jì)算完成后,迭代次數(shù)加1,如迭代次數(shù)達(dá)到6次,將解交織結(jié)果判決輸出。
對Turbo編譯碼單元進(jìn)行FPGA實(shí)現(xiàn)[11]。Turbo編碼單元仿真結(jié)果如圖10所示。編碼單元時(shí)鐘頻率60 MHz,當(dāng)EncodeStart為高脈沖時(shí)代表1幀數(shù)據(jù)開始,接收到1幀數(shù)據(jù)后,Turbo編碼數(shù)據(jù)實(shí)時(shí)輸出。整個(gè)Turbo編碼單元占用資源見表1。該單元時(shí)鐘頻率最高可達(dá)391.366 MHz。
Turbo譯碼單元資源統(tǒng)計(jì)見表2。該單元時(shí)鐘頻率最高可達(dá)355.967 MHz。Turbo譯碼單元輸入輸出結(jié)果分別如圖11、12所示。譯碼單元時(shí)鐘頻
表1 Turbo編碼單元資源
率60 MHz,DecodeStart為高脈沖時(shí),代表1幀數(shù)據(jù)開始,在收到接收到1幀數(shù)據(jù)后數(shù)據(jù)啟動(dòng)Map_decode模塊,經(jīng)過計(jì)算,迭代6次得出Turbo譯碼結(jié)果需0.45 ms,即此模塊譯碼延時(shí)0.45 ms,滿足輸入數(shù)據(jù)速率要求。
圖10 Turbo編碼單元仿真時(shí)序Fig.10 Simulation timing sequence of Turbo coding unit
圖11 Turbo譯碼單元輸入時(shí)序Fig.11 Input timing sequence of Turbo decoding unit
圖12 Turbo譯碼單元輸出時(shí)序Fig.12 Output timing sequence of Turbo decoding unit
表2 Turbo譯碼單元資源
對本文提出的算法進(jìn)行Matlab仿真。設(shè)幀長400 b,迭代次數(shù)6次,結(jié)果見表3。由表3可知:信噪比5.4 dB時(shí),誤碼率小于10-5,本文算法的仿真結(jié)果與理論性能相符。
表3 近似Log-Map迭代6次誤碼率
將Turbo編譯碼程序下載配置到Xilinx公司 xc7k325t FPGA芯片進(jìn)行自閉換測試。連續(xù)測試3 000幀數(shù)據(jù),結(jié)果見表4。由表4可知:實(shí)測結(jié)果與仿真結(jié)果完全符合,正確實(shí)現(xiàn)了短幀長Turbo編譯碼功能,達(dá)到了設(shè)計(jì)要求。
表4 短幀長Turbo編譯碼實(shí)測結(jié)果
本文對一種短幀長Turbo編譯碼FPGA實(shí)現(xiàn)技術(shù)進(jìn)行了研究,給出了幀長小于500 b,碼率1/2的Turbo編譯碼的FPGA實(shí)現(xiàn)。Turbo編碼采用特殊的行列交織器,通過流水線(Pipeline)并行處理的方法實(shí)現(xiàn)了交織深度為2的Turbo編碼,減少了編碼延時(shí),提高編碼增益;Turbo譯碼器采用近似Log-Map算法,優(yōu)化算法采用乒乓譯碼方式實(shí)現(xiàn),提高譯碼的效率和速率,在輸入數(shù)據(jù)硬判決時(shí),當(dāng)信噪比大于等于5.4 dB時(shí),誤碼率小于110-5。選用Xilinx公司K7系列xc7k325t器件實(shí)現(xiàn)。仿真結(jié)果表明:Turbo編碼器單元時(shí)鐘頻率最高可達(dá)391.366 MHz,Turbo譯碼單元時(shí)鐘頻率最高可達(dá)355.967 MHz。仿真結(jié)果和實(shí)測結(jié)果均表明:本設(shè)計(jì)實(shí)現(xiàn)的Turbo編譯碼性能滿足需求,研究結(jié)果可用于中低速率的短幀長深空信息傳輸。后續(xù)工程實(shí)踐中還需將K7實(shí)現(xiàn)的結(jié)果遷移到宇航級(jí)FPGA中實(shí)現(xiàn),通過進(jìn)一步優(yōu)化算法、優(yōu)化FPGA實(shí)現(xiàn)結(jié)構(gòu)和合理的資源使用,提升整個(gè)編譯碼的性能。
[1] MONCAYO H, KAABOUCH N, HU W C. et al. Performance evaluation of a Turbo code with Log-MAP algorithm on FPGA and CPU[J]. Cell Biology International, 2001, 29(1): 1-6.
[2] 繆鵬飛, 周帥, 姜洪偉. 基于航天測控通信系統(tǒng)LT碼的應(yīng)用研究[J]. 上海航天, 2014, 31(4): 47-51+68.
[3] WORM A, HOEHER P, WHEN N. Turbo-decoding without SNR estimation[J]. IEEE Communication,2000,(4):193-195.
[4] CCSD. CCSDS131.0-B-2 TM synchronization and channel coding[S]. CCSDS, 2009.
[5] 馬建, 邵朝. Turbo 碼及其譯碼算法研究[J]. 西安郵電大學(xué)學(xué)報(bào), 2010, 15(5): 38-42.
[6] ZHANG D, LU J, XU H, et al. Multiary Turbo code fitting for unitary space-time modulation and its MAP decoding algorithm[J]. Science China, 2010, 53(12): 2610-2619.
[7] LI C, DENG W, DUAN L. Performance analysis of Turbo-codes in communication channels with impulsive noise[J]. Journal of Systems Engineering & Electronics, 2009, 20(1): 27-31.
[8] ASHWINI S, KUMAR P M, UMAYAL S, et al. Area efficient of max Log-Map algorithm using SB/DB methods for Turbo decoder[J]. International Journal of Scientific Engineering & Technology, 2014, 3(6): 775-780.
[9] KENE J D, KULAT K D. WiMAX physical layer optimization by implementing SOVA decoding algo-rithm[C]// International Conference on Circuits, Systems, Communication & Information Technology Applications. Mumbai: CSCITA, 2014: 179-183.
[10] KARIM S M, CBAKRABARTI I. An improved low-power high-throughput Log-Map Turbo decoder[J]. IEEE Transactions on Consumer Electronics, 2010, 56(2): 450-457.
[11] ATAR O, SAZLI M H, ILK H G. FPGA Implementation of Turbo decoders[C]// KTTO 2011 11th International Conference on Knowledge in Telecommunication Technologies and Optics.Szczyrk: [s.n.], 2011: 103-108.
Implementation of Short Frame Length Turbo Encoding and Decoding on FPGA
ZHANG Feng-yuan1, TANG Zhen-gang2, MIN Kang-lei1, TIAN Yi-hui1, PENG Fei1
(1. Shanghai Aerospace Electronic Technology Institute, Shanghai 201109, China; 2. Shanghai Institute of Satellite Engineering, Shanghai 201109, China)
The realization in FPGA of Turbo coding and decoding of short frame information for deep space communication was studied in this paper. The Turbo coding and decoding were designed. The coding part was composed of two sub parallel cascaded coders. The recurrence convolutional code was selected and the special row column interleaver was used. The decoding part was composed of two independent soft input soft output series cascaded decoders. The approximate Log-Map algorithm was applied. The FPGA realization of Turbo coder and decoder was given out. The interface and timing sequence of Turbo coding and decoding and the flowchart of Map decoding unit were presented. The simulation results showed that the coding data was output in real time, and decoding delay was 0.45 ms which met the requirement of input data rate for the frame length was less than 500 b and the rate was 1/2. The experiment proved that the simulation result was agreed with the theory.
Deep space communications; Turbo codes; Approximate Log-Map algorithm; FPGA; Short frame information; Coding; Decoding
1006-1630(2016)04-0095-07
2016-04-25;
2016-07-12
張風(fēng)源(1979—),男,高級(jí)工程師,主要從事衛(wèi)星數(shù)據(jù)處理、存儲(chǔ)和編碼技術(shù)研究。
TN914
A
10.19328/j.cnki.1006-1630.2016.04.016