邵 龍
(中國電子科技集團公司第十研究所,成都 610036)
?
一種基于改進型游程編碼的FPGA動態重構方法
邵龍*
(中國電子科技集團公司第十研究所,成都 610036)
摘要:在分析傳統FPGA動態重構方法性能缺陷的基礎上,創新性的提出了基于改進型游程編碼的FPGA動態重構方法,并詳細介紹了該方法的設計實現。與傳統FPGA動態重構方法對比測試結果表明,基于改進型游程編碼的FPGA動態重構方法不僅可以顯著提高FPGA動態重構的速度,而且可以降低對程序存儲器容量要求。目前,該技術已在重大工程項目中得到應用。
關鍵詞:FPGA;動態重構;全局重構;游程編碼;重構速度
FPGA 動態重構是指切換FPGA其全部或部分邏輯資源功能的應用方法[1-3]。FPGA動態重構可分為全局重構和部分重構。全局重構是指重新配置FPGA的全部邏輯,重構前后電路相互獨立,沒有關聯。部分重構是指重新配置FPGA 的部分區域,重構過程中,FPGA未重構部分的工作狀態不受影響[4-5]。
目前,實現FPGA全局重構比較通用的方法有3種:方法1通過DSP或其他CPU讀取存儲器中的bit文件對FPGA進行串行加載或并行加載[4],但重構速度一般很低,不能實現狀態高速切換;方法2是使用Xilinx 公司的專用配置芯片XCFxxP系列[6],但由于該系列配置芯片存儲容量有限,對于功能復雜的系統,FPGA的軟件版本多,需要多片專用配置芯片,不能適應小型化的要求;方法3是基于CPLD的FPGA快速動態重構[7],克服了方法1和方法2的缺點,是在實際工程應用中FPGA動態重構速度最快的方法。但隨著FPGA芯片規模增大,實現的功能也越來越復雜,bit文件大小也不斷增加,方案3在某些場景下已經逐漸不能滿足對重構速度的要求。本文在方案3的基礎上,提出了采用改進型游程編碼進一步提高FPGA動態重構速度的方法。
基于CPLD的FPGA快速動態重構工作原理框圖如所圖1示。FPGA被配置為被動并行加載模式,CPLD接收到bit文件版本切換信號后,讀取對應的bit文件并送入FPGA的被動并行加載數據端口D[7:0],完成對FPGA的加載。
基于CPLD的FPGA快速動態重構流程如圖2所示。首先拉低FPGA的PROG_B管腳一段時間再拉高FPGA的PROG_B管腳使FPGA復位,以清除配置存儲器;接著,等待FPGA的INIT_B管腳變高,CPLD開始從FLASH相應的地址讀取bit文件數據寫入FPGA的被動并行加載數據端口D[7:0];最后,待bit文件全部寫入FPGA的D[7:0]端口后,等待FPGA的DONE管腳變高,如果在超時以前變高,則FPGA重構成功,FPGA進入正常工作狀態,CPLD將FPGA重構標志寄存器置為成功,否則FPGA重構失敗,CPLD將FPGA重構標志寄存器置為失敗。

圖1 基于CPLD的FPGA快速動態重構原理框圖

圖2 基于CPLD的FPGA快速動態重構流程圖
基于CPLD的FPGA快速動態重構方法具有較高的動態重構速度,但是特定場景下重構速度還是不能滿足系統要求,分析發現其重構速度的瓶頸是FLASH的讀取時間[5],而讀取時間主要與FLASH芯片類型和FPGA程序文件的大小有關。因此要提高重構速度,要么選用速度更快的FLASH芯片,要么減小存儲在FLASH中的FPGA程序文件的大小。選用速度更快的FLASH芯片成本較高,而且不適用已有設備,即使更換速度更快的FLASH芯片,還是可通過減小存儲在FLASH中的FPGA程序文件的大小進一步提高重構速度,因此,減小存儲在FLASH中的FPGA程序文件的大小的方法從經濟和技術角度具有更廣泛的實用性。無損壓縮FPGA的bit文件正是減小存儲在FLASH中的FPGA程序文件大小最直接的方法。
游程編碼是一種簡單、易于實現無損壓縮算法。游程編碼的原理十分簡單:將一行中數值相同的相鄰點用一個計數字節和一個表示該數據值的數據字節來代替[8]。如果連續相同的字節很多,游程編碼具有很高的壓縮效率,但是孤立字節(與前后相鄰字節值均不同的字節)會導致增加一個字節(長度字節)開銷,影響壓縮效率。
為了減小孤立字節對壓縮效率的影響,改進型游程編碼的長度字節用C0+N(N為連續相同字節的個數,當N>63時需要分多次壓縮),對于值為YZ的孤立字節,只有當YZ≥C0時,才插入長度字節C1,編碼數據為C1YZ,當YZ 基于改進型游程編碼的FPGA動態重構相對于基于CPLD的FPGA快速動態重構主要不同就是存儲在FLASH中的bit文件變成了經過改進型游程編碼編碼后的壓縮文件,原理框圖如圖3所示。FPGA被配置為被動并行加載模式,CPLD接收到文件版本切換信號后,讀取對應的壓縮文件并送入FPGA的被動并行加載數據端口D[7:0],完成對FPGA的加載。 圖3 基于改進型游程編碼的FPGA動態重構原理框圖 基于改進型游程編碼的FPGA動態重構流程與基于CPLD的FPGA快速動態重構流程除了圖2虛線框中的內容(對從FLASH中讀取出的數據后續處理)不同外,其他都相同。虛線框中的內容變為了改進型游程編碼解碼過程,流程如圖4所示。 圖4 改進型游程編碼解碼流程圖 初始化時連續數值計數器的值為0,從FLASH讀取一個字節的數據V,首先需要判斷V是否大于0xC0以判斷該字節是否為長度字節,如果大于0xC0,則該字節為長度字節,長度為V-0xC0,需要將長度寫入連續數據計數器;如果小于等于0xC0,則需要判斷連續數值計數器的值R是大于0,如果大于0,則需要將該值向FPGA的被動并行加載數據端口D[7:0]連續寫入R次,否則,直接將該值寫入到FPGA的D[7:0]端口。每次從FLASH中讀取一個字節后,FLASH的地址都要增加1。 性能測試選用的FPGA目標器件為XILINX Virtex Ⅳ XC4VLX60,功能文件為各種調制模式的數傳或話音功能文件。測試結果如表1所示,表中快速重構是指基于CPLD的FPGA快速動態重構,改進型快速重構是指基于改進型游程編碼的FPGA動態重構??梢钥吹?基于CPLD的FPGA快速動態重構方法的重構時間都相同為220 ms,這是由同一型號FPGA的bit文件大小一致并且重構處理流程相同造成的。而基于改進型游程編碼的FPGA動態重構的重構時間波動較大,原因在于壓縮后的文件大小不一致以及游程編碼的解碼復雜度不同,但時間均不大于87 ms,速度提高60.4%以上。同時,基于改進型游程編碼的壓縮文件的對存儲空間占用大幅減小,存儲空間利用率提高61.8%以上。 表1 重構時間測試結果 提出了一種基于改進型游程編碼的FPGA動態重構方法,較傳統的FPGA動態重構方法有更快的重構速度和更高的FLASH存儲空間利用率。雖然該加載方法是針對FPGA全局重構設計實現,但是該方法是通過減小FPGA程序文件大小實現重構速度提高的,因此,對FPGA部分重構同樣適用。這種FPGA動態重構方法已在航空電子系統上得到應用,實踐證明該方法是一種高效可靠的FPGA動態重構方法。 參考文獻: [1]谷鑾,徐貴力,王友仁.FPGA動態可重構理論及其研究進展[J].計算機測量與控制,2007,15(11):1415-1418. [2]范斌,常青.基于DSP 的FPGA動態重構系統研究與設計[J].信息與電子工程,2010,8(2):123-127. [3]覃祥菊,朱明程,張太鎰,等.FPGA動態可重構技術原理及實現方法分析[J].電子器件,2004,27(2):277-282. [4]周盛雨,孫輝先,陳曉敏,等.基于FPGA的動態可重構系統實現[J].電子器件,2007,30(2):646-650. [5]王鵬,向厚振,張志杰.基于FPGA的動態可重構邊緣檢測系統設計[J].電視技術,2012,36(7):32-34. [6]李燕斌,李燕春.用XCF32P實現FPGA的高速動態配置[J].電訊技術,2006,46(6):199-202. [7]李燕春.基于CPLD的FPGA快速動態重構設計[J].電訊技術,2008,48(7):87-89. [8]吳樂南.數據壓縮的原理與應用[M].北京:電子工業出版社,1995. 邵龍(1982-),男,漢族,四川通江人,碩士研究生?,F任中國電子科技集團公司第十研究所工程師。研究方向為信號處理,shaolong1223@163.com。 AnApproachtoDynamicReconfigurationofFPGABasedonImprovedRun-LengthCoding SHAOLong* (The 10th Institute of China Electronic Technology Group Corporation,ChengDu,610036) Abstract:Based on the analysis of shortages in the conventional dynamic reconfiguration method,a novel approach based on improved run-length coding was advanced to improve the performance of dynamic reconfiguration of FPGA.The design and implementation of the approach were also described in detail.The performance results compared with the conventional dynamic reconfiguration method show that not only the speed of dynamic reconfiguration of FPGA can be improved but also the requirement of the storage capacity can be reduced by this approach.Now,it has already been proved in the major projects. Key words:FPGA;dynamic reconfiguration;global reconfiguration;run-length coding;speed of dynamic reconfiguration doi:EEACC:6120B10.3969/j.issn.1005-9490.2014.05.045 中圖分類號:TN791 文獻標識碼:A 文章編號:1005-9490(2014)05-1009-04 收稿日期:2013-10-10修改日期:2013-10-26

3 性能對比

4 結論
