汪智杰,周治柱,2
(1.武漢郵電科學研究院,湖北武漢 430074;2.武漢光迅科技股份有限公司,湖北武漢 430205)
電網在運行過程中需要傳輸監測信號,由于電網監測信息傳輸環境的特殊性,長跨距顯得尤為重要[1-2]。使用里德-索羅蒙(Reed-Solomone,RS)碼能夠降低收端的誤碼率[3-4],糾正突發或者連續的碼元錯誤[5-7],提高信道容量[8],降低接收端光信噪比容限[9]。但由于專用RS 編譯碼器價格不菲,使用可編程邏輯門陣列(Field-Programmable Gate Array,FPGA)完成RS 碼編譯碼器的設計,能夠降低成本,使用靈活。
現有的RS 編譯碼器使用的FPGA 芯片一般為Xillix 和Altera 這兩家公司產品,但近些年中國和美國的貿易摩擦越來越大,“中興制裁”和“華為斷供”的事件,警醒著我們核心技術必須要掌握在自己的手中,而電力通信系統更是需要自主可控。隨著國產FPGA 的發展,部分國產FPGA 的性能已經滿足RS 編譯碼器設計的基本需求。
文中以RS(255,239)為例,詳細介紹了編碼器和譯碼器的實現原理與模塊設計,并設計了FPGA 板卡和長距傳輸測試系統,在安路最新推出的PH1A 100SFG676 芯片上完成了RS 編譯碼器的設計與應用,并且實現了信號在編譯碼器上千兆速率的傳輸。
RS 碼的碼元是k個信息元加上n-k個校驗元的組合,所以RS 碼的編碼過程就是求解校驗多項式的過程[10]。RS 碼的碼元均來自伽羅華域GF(2m)。對于碼長為n=2m-1(m≥2)的RS(n,k)碼,其信息元長度為k,校驗段長度為n-k,可糾正t=(n-k)/2 個錯誤。RS 碼的校驗元求解方程[11]如式(1)所示:
由式(1)可知,校驗元r(x)可由信息多項式f(x)乘以xn-k然后對生成多項式g(x)取余數得到。
由RS 碼的編碼原理可知,RS 碼的編碼電路是一條除法電路,常見的RS 碼編碼器結構框圖如圖1所示。
圖1 中的g0、g1…g15為生成多項式的系數。編碼電路的工作原理如下:
1)信息元輸入時,SW1接到信息元一側,SW2接到加法器一側。
2)經過239 個時鐘周期后除法器電路中的除法運算完成,SW2接到信號0 的一側,SW1接到寄存器一側。
3)再經過16 個時鐘周期后,寄存器r0、r1…r15中的校驗元全部輸出,即得到編碼后的255 個碼元。
圖1 中的主要資源消耗為乘法器,一般實現乘法器是利用兩個元素相乘為元素冪指數相加的原理,先查找出兩個元素的指數,然后指數相加對255取余,再通過計算后的指數來查找對應的元素。因此一個乘法器需要消耗三個查找表,非常占用資源。
由圖1 可知,每一個乘法器的乘法因子中都有一個元素是確定的。通過多項式乘法展開后,合并相同次數項,即可將乘法轉換為加法運算[12]。
RS(255,239)的生成多項式特征向量是已知的,設另一元素c(x)的特征向量為(c7,c6,…,c0),將兩個多項式相乘,根據伽羅華域規則進行化簡得到相乘后元素的特征向量。通過這種優化乘法模塊的設計代替了查找表求積,減少了資源的消耗。
圖2 是編碼數據的仿真圖,使用的時鐘信號頻率為125 MHz,為了方便觀察,把輸入的碼元從1 開始累加到239 后開始輸出校驗元。從圖2 可知,輸出的16 個校驗元為(37,133,225,126,37,59,132,133,56,168,179,4,9,99,79,148)。
RS 譯碼一般使用時域譯碼,時域譯碼一般采用伯克利-梅西(Berlekamp-Massey,BM)算法或者歐幾里得算法[13],BM 算法具有消耗資源少、速度快等優點。該文采用的是BM 算法改進后的無逆伯克利-梅西(imversionless Berlekamp-Massey,iBM)算法。
RS 碼的譯碼步驟如下:
1)接收碼元R(x)進入伴隨式模塊計算伴隨式。
2)通過計算出的伴隨式求解錯誤位置多項式和錯誤值多項式。
3)計算錯誤位置和錯誤值。
4)通過得到的錯誤位置和錯誤值求解正確碼元。
RS(255,239)的伴隨式如式(2)所示:
其中,系數sj可以展開為式(3):
在計算伴隨式系數sj過程中復用16 個單元來同時計算16 個伴隨式,以減少譯碼時間。伴隨式模塊框圖如圖3 所示。
初始化后寄存器D 清零,接收碼元依次輸入伴隨式計算電路,255 個時鐘周期后輸出16 個伴隨式,如果輸出的16 個伴隨式系數為零,則沒有誤碼;否則就出現了誤碼,需進行糾錯處理。
求解出2t個伴隨式后,開始計算錯誤位置多項式σ(x),錯誤位置多項式系數使用iBM 算法迭代求解。
改進后的iBM 算法步驟[14-16]如下:1)初始狀態的條件如下:
2)根據下面各環節公式依次進行循環迭代,每次迭代后k加1,當k=2t-1 時完成迭代,完成一組碼元的糾錯:
Chien 搜索模塊的目的是通過代入法求解錯誤位置多項式的根,從而得到接收碼元中的錯誤碼元位置。直接求解位置多項式比較復雜,現在一般采用的是中國科學家錢聞天提出的Chien 搜索算法。Chien 搜索模塊框圖如圖4 所示。
設錯誤值多項式為ω(x),記ω(x)為:
在求解出σ(x)后,將錯誤位置多項式與伴隨式相乘得到錯誤值多項式:
因為S(x)和σ(x)的最高次冪均為t,所以ω(x)的最高次冪為x2t。直接求解錯誤值多項式復雜度高,一般使用Forney 公式來求解錯誤值,如式(6)所示:
完成設計后,使用Modelsim 仿真軟件進行仿真,仿真圖像如圖5所示。為了方便觀察,將編碼器的輸出送入譯碼器的輸入并且在第1,2,3,4,5,8,9,10位添加噪聲,從圖5中可見,出現錯誤后error_index 指示信號拉高,同時error信號輸出求解得到的噪聲值,error信號和data_out 信號異或后得到譯碼的數據correct_data。從仿真波形上看,能夠糾正最多8個錯誤碼元,滿足預期設計目標。通過流水線設計解碼速率能夠達到1 Gbit/s,初步滿足業務信號傳輸速率的要求。
為了驗證編譯碼器的設計效果和對系統性能的提升程度,設計了一個長距傳輸測試平臺進行驗證。長距傳輸測試平臺包含了誤碼儀、功率放大器(Booster Amplifier,BA)、前置放大器(Pre-Amplifier,PA)、電可調光衰(Electronic Variable Optical Attenuators,EVOA)和FPGA 板卡。測試FPGA 系統示意框圖如圖6所示。
在實際測試環境中,由于沒有足夠長的光纖,所以測試系統通過調整光衰值的大小來模擬不同光纖長度帶來的衰減,測試編碼的增益效果。圖6 中RS 編譯碼器位于介質訪問控制層(Medium Access Control Layer,MAC)和端口物理層(Port Physical Layer,PHY)中間,并對MAC 層產生的校驗碼進行糾錯,這樣能夠進一步提升系統的性能。
FPGA 板卡最重要的是供電部分設計也就是電源模塊的設計。PH1A100SFG676 芯片內部需要提供1.8 V、0.9 V 以及3.3 V 三種類型的電壓來給FPGA芯片內部不同區域供電。為了降低外部供電設備的復雜程度,使用的外部電源統一為12 V,通過矽力杰的SY8386AQQC 降壓芯片以及外圍分壓電路輸出3.3 V、1.8 V 及0.9 V 電壓。
圖7所示為12 V轉3.3 V的FPGA供電轉換電路。設計的FPGA 板卡如圖8 所示。
由于G.652 的光纖固定損耗為0.18 dB/km,所以模擬長度為245 km 的光纖只需要將光衰值設置為34.1 dB。設置好各項參數后,誤碼儀測試結果如圖9所示。在1010個以太網報文中未發現丟包,誤碼率為0,基本滿足千兆速率傳輸要求。
基于國產安路PH1A100SFG676 芯片,該文設計并應用了RS(255,239)編碼器和譯碼器,降低了系統誤碼率,提升系統性能并且傳輸速率能夠達到千兆。所有芯片及器件全部選用國產器件,初步滿足電網業務信號低誤碼率的傳輸要求。對通信速率要求不是很高并且需要長距傳輸的行業,該文提供了一種國產化替代的可能性。