劉學(xué),蘇建峰,孫婷
?
基于Altera IP核的RS譯碼器的設(shè)計(jì)與實(shí)現(xiàn)
劉學(xué)1,2,蘇建峰1,孫婷3
(1. 中國(guó)科學(xué)院國(guó)家授時(shí)中心,西安 710600;2. 中國(guó)科學(xué)院研究生院,北京 100039;3. 西安電子科技大學(xué),西安 710071)
介紹了一種基于Altera公司提供的Reed-Solomon IP(intellectual property)核來實(shí)現(xiàn)RS譯碼功能的設(shè)計(jì)方法,該方法具有開發(fā)周期短、系統(tǒng)成本低以及穩(wěn)定可靠特點(diǎn)。主要分析了Altera公司提供的IP核工作原理、參數(shù)配置以及接口設(shè)計(jì),最后通過時(shí)序仿真驗(yàn)證了該設(shè)計(jì)的正確性。該設(shè)計(jì)方法已經(jīng)成功應(yīng)用于BPL長(zhǎng)波接收機(jī)數(shù)據(jù)解調(diào)模塊中。
RS碼;IP核;現(xiàn)場(chǎng)可編程門陣列(FPGA)
RS(Reed-Solomon)碼是一類具有很強(qiáng)糾錯(cuò)能力的多進(jìn)制BCH碼。RS碼編解碼結(jié)構(gòu)相對(duì)簡(jiǎn)單,具有同時(shí)對(duì)突發(fā)錯(cuò)誤和隨機(jī)錯(cuò)誤進(jìn)行糾錯(cuò)的能力,因而廣泛應(yīng)用于數(shù)據(jù)通信和數(shù)據(jù)存儲(chǔ)系統(tǒng)的差錯(cuò)控制中。在工程實(shí)現(xiàn)中,可用專門的硬件芯片或DSP(數(shù)字信號(hào)處理)芯片實(shí)現(xiàn)RS譯碼功能。
在中國(guó)科學(xué)院國(guó)家授時(shí)中心主持的“BPL長(zhǎng)波授時(shí)系統(tǒng)現(xiàn)代化改造”項(xiàng)目中,對(duì)原有BPL系統(tǒng)進(jìn)行加發(fā)時(shí)間信息編碼設(shè)計(jì),在發(fā)播端需對(duì)時(shí)碼數(shù)據(jù)信息進(jìn)行RS編碼以保證信息的正確傳輸,因此需要在接收機(jī)數(shù)據(jù)解調(diào)中進(jìn)行RS譯碼設(shè)計(jì)。由于接收機(jī)設(shè)計(jì)主要由Altera公司提供的FPGA芯片實(shí)現(xiàn),因此在設(shè)計(jì)中考慮利用IP核實(shí)現(xiàn)RS譯碼功能。
基于以上背景,本文分析了Altera公司的RS IP核的原理,配置了譯碼參數(shù),設(shè)計(jì)了譯碼器接口,給出了適合接收機(jī)的配置和使用方式,并應(yīng)用該設(shè)計(jì)在FPGA中進(jìn)行驗(yàn)證,實(shí)現(xiàn)了RS譯碼器。利用IP核實(shí)現(xiàn)譯碼功能,使接收機(jī)數(shù)據(jù)解調(diào)系統(tǒng)集成在一個(gè)FPGA芯片內(nèi),不僅降低了接口設(shè)計(jì)的復(fù)雜度,而且工程上實(shí)現(xiàn)成本低,運(yùn)行穩(wěn)定可靠,便于后期調(diào)試和修改。
RS譯碼算法主要分為時(shí)域譯碼和頻域譯碼。頻域譯碼對(duì)于某些碼長(zhǎng)的RS碼會(huì)獲得更快的譯碼速度,但由于增加了時(shí)域與頻域的變換和反變換以及相應(yīng)的存儲(chǔ)延時(shí)模塊,需要消耗更多的資源,因此本文中采用時(shí)域譯碼方案。時(shí)域譯碼的關(guān)鍵步驟為錯(cuò)誤位置及錯(cuò)誤值多項(xiàng)式的求解,工程上常用的算法為修正的歐幾里德算法 MEA(modified euclidean algorithm),其算法描述如下[3]:
1)根據(jù)接收到的碼多項(xiàng)式計(jì)算伴隨式;
2)采用MasseyFSR算法,確定錯(cuò)誤位置多項(xiàng)式;
3)采用Chien搜索法,尋找錯(cuò)誤位置;
4)計(jì)算錯(cuò)誤值。
Altera公司的Reed-Solomon v8.0 IP核能提供RS編譯碼算法,并且算法配置采用全參數(shù)化。Reed-Solomon v8.0 IP核支持包括Cyclone、Stratix在內(nèi)的所有Altera的主流FPGA產(chǎn)品。Reed-Solomon v8.0會(huì)自動(dòng)把緩沖計(jì)算中間變量的存儲(chǔ)器塊綜合到M4K單元上,提高了RS編譯碼器的數(shù)據(jù)吞吐量和執(zhí)行速度[3]。
譯碼器設(shè)計(jì)的關(guān)鍵環(huán)節(jié)是譯碼參數(shù)配置和譯碼器接口設(shè)計(jì)。根據(jù)RS譯碼原理、RS譯碼IP核參數(shù)約束以及項(xiàng)目設(shè)計(jì)要求,譯碼器中需要配置的參數(shù)及方法如下(以RS(15,9)碼為例):
每個(gè)碼組的監(jiān)督碼碼元數(shù)根據(jù)實(shí)際工作需要可靈活設(shè)置。
在譯碼參數(shù)設(shè)置成功后,需要進(jìn)行譯碼器接口設(shè)計(jì)。譯碼器輸入輸出端口如圖1所示:clk為時(shí)鐘信號(hào),上升沿有效;reset為復(fù)位信號(hào),異步復(fù)位;rsin[4..1]為四位總線輸入數(shù)據(jù);sink_val表示數(shù)據(jù)有效;sink_sop和sink_eop分別表示一組數(shù)據(jù)的開始和結(jié)尾;source_ena系統(tǒng)運(yùn)行使能信號(hào),為“1”時(shí)表示當(dāng)前模塊可以運(yùn)行且可以輸出數(shù)據(jù),為“0”時(shí)系統(tǒng)保存當(dāng)前編碼值,不輸出數(shù)據(jù);rout[4..1]為四位總線輸出數(shù)據(jù);sink_ena是輸入使能信號(hào),當(dāng)它為“1”時(shí)表示當(dāng)前模塊可以接收數(shù)據(jù),為“0”時(shí)表示不能接收數(shù)據(jù);source_val表示數(shù)據(jù)有效;source_sop和source_eop分別表示一組數(shù)據(jù)的開始和結(jié)尾。
譯碼器的工作流程為:當(dāng)source_ena為高時(shí),編碼器開始工作。sink_ena為高,可以接收輸入數(shù)據(jù);當(dāng)sink_val為高時(shí),數(shù)據(jù)有效,同時(shí)開始接收數(shù)據(jù);當(dāng)sink_eop為高時(shí),一組數(shù)據(jù)發(fā)送結(jié)束,此次接收數(shù)據(jù)結(jié)束,等待下一次接收信號(hào)開始。
圖1 RS譯碼器模塊
項(xiàng)目中采用的是Altera公司的EP1C12Q芯片,該芯片屬于Cyclone系列[4]。該設(shè)計(jì)已經(jīng)在QuartusII環(huán)境下全編譯,占用EP1C6Q中的5個(gè)引腳(4%),共使用了1 398個(gè)邏輯單元(23%),4 096 bit的存儲(chǔ)單元(4%)。從使用情況來看,占用的邏輯單元和存儲(chǔ)單元很少,適合大部分的FPGA器件。利用QuartusII進(jìn)行時(shí)序仿真,波形如圖2所示。編碼模式下,當(dāng)輸入信息碼元(1,2,3,4,5,6,7,8,9)時(shí),輸出編碼碼組為(1,2,3,4,5,6,7,8,9,2,1,3,C,F,B)。譯碼模式下,當(dāng)接收碼組中含錯(cuò)誤碼元時(shí),如圖2所示,其中信息碼元出錯(cuò)2個(gè),監(jiān)督碼元出錯(cuò)1個(gè),通過譯碼后得到碼組仍然為(1,2,3,4,5,6,7,8,9,2,1,3,C,F,B),表明譯碼器成功糾錯(cuò),譯碼正確。
本文探討了利用Altera公司提供的IP核實(shí)現(xiàn)RS譯碼功能的設(shè)計(jì)方法,該設(shè)計(jì)方法已經(jīng)應(yīng)用在BPL接收機(jī)數(shù)據(jù)解調(diào)模塊中。文中討論的RS譯碼方法不僅縮短了開發(fā)周期,降低了實(shí)現(xiàn)的復(fù)雜度和系統(tǒng)成本,而且穩(wěn)定可靠,集成度高,便于調(diào)試和修改。這種方法同時(shí)適用于數(shù)字定位技術(shù)中RS檢錯(cuò)糾錯(cuò)系統(tǒng)[5]。需要說明的是,在今后工作中如果參考此方案,需要根據(jù)不同的RS碼參數(shù)以及生成多項(xiàng)式進(jìn)行參數(shù)配置以及對(duì)接口進(jìn)行取舍。
[1] BERLEKAMP E R. Algebraic Coding Theory[M]. New York: McGraw Hill Book Corporation, 1968: 134-168.
[2] Altera. Reed-Solomon Compiler User Guide[Z]. California: Altera, 2006.
[3] 王新梅, 肖國(guó)鎮(zhèn). 糾錯(cuò)碼: 原理與方法[M]. 西安: 西安電子科技大學(xué)出版社, 2002.
[4] 孫航. Xilinx可編程邏輯器件的高級(jí)應(yīng)用與設(shè)計(jì)技巧[M]. 北京: 電子工業(yè)出版社, 2004.
[5] 向渝, 華宇, 吳海濤. 基于數(shù)字鎖相環(huán)的GPS可馴鐘系統(tǒng)研究[J]. 時(shí)間頻率學(xué)報(bào), 2008, 31(1): 50-55.
Design and Implementation of a RS Decoder Based on Altera’s IP Core
LIU Xue1,2, SU Jian-feng1, SUN Ting3
(1. National Time Service Center, Chinese Academy of Sciences, Xi’an 710600, China;2. Graduate University of Chinese Academy of Sciences, Beijing 100039, China;3. Xidian University, Xi’an 710071, China)
This paper introduces an Altera’s Reed-Solomon IP core to achieve the RS decoding function, and the method is characterized by short development cycle, low cost and reliability. This paper analyzes the principle of Altera company’s IP core, parameter configuration and interface designing, and verifies the correctness of the design through the timing simulation. This design method has been successfully applied to the data demodulation of BPL long wave receiver module.
RS code; IP core; FPGA(field programmable gate array)
2009-08-01
劉學(xué),男,碩士,主要從事衛(wèi)星導(dǎo)航技術(shù)的研究。
TN76
A
1674-0637(2010)01-0028-04