劉學,蘇建峰,孫婷
?
基于Altera IP核的RS譯碼器的設計與實現
劉學1,2,蘇建峰1,孫婷3
(1. 中國科學院國家授時中心,西安 710600;2. 中國科學院研究生院,北京 100039;3. 西安電子科技大學,西安 710071)
介紹了一種基于Altera公司提供的Reed-Solomon IP(intellectual property)核來實現RS譯碼功能的設計方法,該方法具有開發周期短、系統成本低以及穩定可靠特點。主要分析了Altera公司提供的IP核工作原理、參數配置以及接口設計,最后通過時序仿真驗證了該設計的正確性。該設計方法已經成功應用于BPL長波接收機數據解調模塊中。
RS碼;IP核;現場可編程門陣列(FPGA)
RS(Reed-Solomon)碼是一類具有很強糾錯能力的多進制BCH碼。RS碼編解碼結構相對簡單,具有同時對突發錯誤和隨機錯誤進行糾錯的能力,因而廣泛應用于數據通信和數據存儲系統的差錯控制中。在工程實現中,可用專門的硬件芯片或DSP(數字信號處理)芯片實現RS譯碼功能。
在中國科學院國家授時中心主持的“BPL長波授時系統現代化改造”項目中,對原有BPL系統進行加發時間信息編碼設計,在發播端需對時碼數據信息進行RS編碼以保證信息的正確傳輸,因此需要在接收機數據解調中進行RS譯碼設計。由于接收機設計主要由Altera公司提供的FPGA芯片實現,因此在設計中考慮利用IP核實現RS譯碼功能。
基于以上背景,本文分析了Altera公司的RS IP核的原理,配置了譯碼參數,設計了譯碼器接口,給出了適合接收機的配置和使用方式,并應用該設計在FPGA中進行驗證,實現了RS譯碼器。利用IP核實現譯碼功能,使接收機數據解調系統集成在一個FPGA芯片內,不僅降低了接口設計的復雜度,而且工程上實現成本低,運行穩定可靠,便于后期調試和修改。

RS譯碼算法主要分為時域譯碼和頻域譯碼。頻域譯碼對于某些碼長的RS碼會獲得更快的譯碼速度,但由于增加了時域與頻域的變換和反變換以及相應的存儲延時模塊,需要消耗更多的資源,因此本文中采用時域譯碼方案。時域譯碼的關鍵步驟為錯誤位置及錯誤值多項式的求解,工程上常用的算法為修正的歐幾里德算法 MEA(modified euclidean algorithm),其算法描述如下[3]:
1)根據接收到的碼多項式計算伴隨式;
2)采用MasseyFSR算法,確定錯誤位置多項式;
3)采用Chien搜索法,尋找錯誤位置;
4)計算錯誤值。
Altera公司的Reed-Solomon v8.0 IP核能提供RS編譯碼算法,并且算法配置采用全參數化。Reed-Solomon v8.0 IP核支持包括Cyclone、Stratix在內的所有Altera的主流FPGA產品。Reed-Solomon v8.0會自動把緩沖計算中間變量的存儲器塊綜合到M4K單元上,提高了RS編譯碼器的數據吞吐量和執行速度[3]。

譯碼器設計的關鍵環節是譯碼參數配置和譯碼器接口設計。根據RS譯碼原理、RS譯碼IP核參數約束以及項目設計要求,譯碼器中需要配置的參數及方法如下(以RS(15,9)碼為例):

每個碼組的監督碼碼元數根據實際工作需要可靈活設置。
在譯碼參數設置成功后,需要進行譯碼器接口設計。譯碼器輸入輸出端口如圖1所示:clk為時鐘信號,上升沿有效;reset為復位信號,異步復位;rsin[4..1]為四位總線輸入數據;sink_val表示數據有效;sink_sop和sink_eop分別表示一組數據的開始和結尾;source_ena系統運行使能信號,為“1”時表示當前模塊可以運行且可以輸出數據,為“0”時系統保存當前編碼值,不輸出數據;rout[4..1]為四位總線輸出數據;sink_ena是輸入使能信號,當它為“1”時表示當前模塊可以接收數據,為“0”時表示不能接收數據;source_val表示數據有效;source_sop和source_eop分別表示一組數據的開始和結尾。
譯碼器的工作流程為:當source_ena為高時,編碼器開始工作。sink_ena為高,可以接收輸入數據;當sink_val為高時,數據有效,同時開始接收數據;當sink_eop為高時,一組數據發送結束,此次接收數據結束,等待下一次接收信號開始。

圖1 RS譯碼器模塊
項目中采用的是Altera公司的EP1C12Q芯片,該芯片屬于Cyclone系列[4]。該設計已經在QuartusII環境下全編譯,占用EP1C6Q中的5個引腳(4%),共使用了1 398個邏輯單元(23%),4 096 bit的存儲單元(4%)。從使用情況來看,占用的邏輯單元和存儲單元很少,適合大部分的FPGA器件。利用QuartusII進行時序仿真,波形如圖2所示。編碼模式下,當輸入信息碼元(1,2,3,4,5,6,7,8,9)時,輸出編碼碼組為(1,2,3,4,5,6,7,8,9,2,1,3,C,F,B)。譯碼模式下,當接收碼組中含錯誤碼元時,如圖2所示,其中信息碼元出錯2個,監督碼元出錯1個,通過譯碼后得到碼組仍然為(1,2,3,4,5,6,7,8,9,2,1,3,C,F,B),表明譯碼器成功糾錯,譯碼正確。

本文探討了利用Altera公司提供的IP核實現RS譯碼功能的設計方法,該設計方法已經應用在BPL接收機數據解調模塊中。文中討論的RS譯碼方法不僅縮短了開發周期,降低了實現的復雜度和系統成本,而且穩定可靠,集成度高,便于調試和修改。這種方法同時適用于數字定位技術中RS檢錯糾錯系統[5]。需要說明的是,在今后工作中如果參考此方案,需要根據不同的RS碼參數以及生成多項式進行參數配置以及對接口進行取舍。
[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] 王新梅, 肖國鎮. 糾錯碼: 原理與方法[M]. 西安: 西安電子科技大學出版社, 2002.
[4] 孫航. Xilinx可編程邏輯器件的高級應用與設計技巧[M]. 北京: 電子工業出版社, 2004.
[5] 向渝, 華宇, 吳海濤. 基于數字鎖相環的GPS可馴鐘系統研究[J]. 時間頻率學報, 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
劉學,男,碩士,主要從事衛星導航技術的研究。
TN76
A
1674-0637(2010)01-0028-04