邵 龍
(中國電子科技集團公司第十研究所,成都 610036)
?
一種基于改進型游程編碼的FPGA動態(tài)重構方法
邵龍*
(中國電子科技集團公司第十研究所,成都 610036)
摘要:在分析傳統(tǒng)FPGA動態(tài)重構方法性能缺陷的基礎上,創(chuàng)新性的提出了基于改進型游程編碼的FPGA動態(tài)重構方法,并詳細介紹了該方法的設計實現(xiàn)。與傳統(tǒng)FPGA動態(tài)重構方法對比測試結果表明,基于改進型游程編碼的FPGA動態(tài)重構方法不僅可以顯著提高FPGA動態(tài)重構的速度,而且可以降低對程序存儲器容量要求。目前,該技術已在重大工程項目中得到應用。
關鍵詞:FPGA;動態(tài)重構;全局重構;游程編碼;重構速度
FPGA 動態(tài)重構是指切換FPGA其全部或部分邏輯資源功能的應用方法[1-3]。FPGA動態(tài)重構可分為全局重構和部分重構。全局重構是指重新配置FPGA的全部邏輯,重構前后電路相互獨立,沒有關聯(lián)。部分重構是指重新配置FPGA 的部分區(qū)域,重構過程中,FPGA未重構部分的工作狀態(tài)不受影響[4-5]。
目前,實現(xiàn)FPGA全局重構比較通用的方法有3種:方法1通過DSP或其他CPU讀取存儲器中的bit文件對FPGA進行串行加載或并行加載[4],但重構速度一般很低,不能實現(xiàn)狀態(tài)高速切換;方法2是使用Xilinx 公司的專用配置芯片XCFxxP系列[6],但由于該系列配置芯片存儲容量有限,對于功能復雜的系統(tǒng),FPGA的軟件版本多,需要多片專用配置芯片,不能適應小型化的要求;方法3是基于CPLD的FPGA快速動態(tài)重構[7],克服了方法1和方法2的缺點,是在實際工程應用中FPGA動態(tài)重構速度最快的方法。但隨著FPGA芯片規(guī)模增大,實現(xiàn)的功能也越來越復雜,bit文件大小也不斷增加,方案3在某些場景下已經(jīng)逐漸不能滿足對重構速度的要求。本文在方案3的基礎上,提出了采用改進型游程編碼進一步提高FPGA動態(tài)重構速度的方法。
基于CPLD的FPGA快速動態(tài)重構工作原理框圖如所圖1示。FPGA被配置為被動并行加載模式,CPLD接收到bit文件版本切換信號后,讀取對應的bit文件并送入FPGA的被動并行加載數(shù)據(jù)端口D[7:0],完成對FPGA的加載。
基于CPLD的FPGA快速動態(tài)重構流程如圖2所示。首先拉低FPGA的PROG_B管腳一段時間再拉高FPGA的PROG_B管腳使FPGA復位,以清除配置存儲器;接著,等待FPGA的INIT_B管腳變高,CPLD開始從FLASH相應的地址讀取bit文件數(shù)據(jù)寫入FPGA的被動并行加載數(shù)據(jù)端口D[7:0];最后,待bit文件全部寫入FPGA的D[7:0]端口后,等待FPGA的DONE管腳變高,如果在超時以前變高,則FPGA重構成功,FPGA進入正常工作狀態(tài),CPLD將FPGA重構標志寄存器置為成功,否則FPGA重構失敗,CPLD將FPGA重構標志寄存器置為失敗。
圖1 基于CPLD的FPGA快速動態(tài)重構原理框圖
圖2 基于CPLD的FPGA快速動態(tài)重構流程圖
基于CPLD的FPGA快速動態(tài)重構方法具有較高的動態(tài)重構速度,但是特定場景下重構速度還是不能滿足系統(tǒng)要求,分析發(fā)現(xiàn)其重構速度的瓶頸是FLASH的讀取時間[5],而讀取時間主要與FLASH芯片類型和FPGA程序文件的大小有關。因此要提高重構速度,要么選用速度更快的FLASH芯片,要么減小存儲在FLASH中的FPGA程序文件的大小。選用速度更快的FLASH芯片成本較高,而且不適用已有設備,即使更換速度更快的FLASH芯片,還是可通過減小存儲在FLASH中的FPGA程序文件的大小進一步提高重構速度,因此,減小存儲在FLASH中的FPGA程序文件的大小的方法從經(jīng)濟和技術角度具有更廣泛的實用性。無損壓縮FPGA的bit文件正是減小存儲在FLASH中的FPGA程序文件大小最直接的方法。
游程編碼是一種簡單、易于實現(xiàn)無損壓縮算法。游程編碼的原理十分簡單:將一行中數(shù)值相同的相鄰點用一個計數(shù)字節(jié)和一個表示該數(shù)據(jù)值的數(shù)據(jù)字節(jié)來代替[8]。如果連續(xù)相同的字節(jié)很多,游程編碼具有很高的壓縮效率,但是孤立字節(jié)(與前后相鄰字節(jié)值均不同的字節(jié))會導致增加一個字節(jié)(長度字節(jié))開銷,影響壓縮效率。
為了減小孤立字節(jié)對壓縮效率的影響,改進型游程編碼的長度字節(jié)用C0+N(N為連續(xù)相同字節(jié)的個數(shù),當N>63時需要分多次壓縮),對于值為YZ的孤立字節(jié),只有當YZ≥C0時,才插入長度字節(jié)C1,編碼數(shù)據(jù)為C1YZ,當YZ 基于改進型游程編碼的FPGA動態(tài)重構相對于基于CPLD的FPGA快速動態(tài)重構主要不同就是存儲在FLASH中的bit文件變成了經(jīng)過改進型游程編碼編碼后的壓縮文件,原理框圖如圖3所示。FPGA被配置為被動并行加載模式,CPLD接收到文件版本切換信號后,讀取對應的壓縮文件并送入FPGA的被動并行加載數(shù)據(jù)端口D[7:0],完成對FPGA的加載。 圖3 基于改進型游程編碼的FPGA動態(tài)重構原理框圖 基于改進型游程編碼的FPGA動態(tài)重構流程與基于CPLD的FPGA快速動態(tài)重構流程除了圖2虛線框中的內容(對從FLASH中讀取出的數(shù)據(jù)后續(xù)處理)不同外,其他都相同。虛線框中的內容變?yōu)榱烁倪M型游程編碼解碼過程,流程如圖4所示。 圖4 改進型游程編碼解碼流程圖 初始化時連續(xù)數(shù)值計數(shù)器的值為0,從FLASH讀取一個字節(jié)的數(shù)據(jù)V,首先需要判斷V是否大于0xC0以判斷該字節(jié)是否為長度字節(jié),如果大于0xC0,則該字節(jié)為長度字節(jié),長度為V-0xC0,需要將長度寫入連續(xù)數(shù)據(jù)計數(shù)器;如果小于等于0xC0,則需要判斷連續(xù)數(shù)值計數(shù)器的值R是大于0,如果大于0,則需要將該值向FPGA的被動并行加載數(shù)據(jù)端口D[7:0]連續(xù)寫入R次,否則,直接將該值寫入到FPGA的D[7:0]端口。每次從FLASH中讀取一個字節(jié)后,FLASH的地址都要增加1。 性能測試選用的FPGA目標器件為XILINX Virtex Ⅳ XC4VLX60,功能文件為各種調制模式的數(shù)傳或話音功能文件。測試結果如表1所示,表中快速重構是指基于CPLD的FPGA快速動態(tài)重構,改進型快速重構是指基于改進型游程編碼的FPGA動態(tài)重構??梢钥吹?基于CPLD的FPGA快速動態(tài)重構方法的重構時間都相同為220 ms,這是由同一型號FPGA的bit文件大小一致并且重構處理流程相同造成的。而基于改進型游程編碼的FPGA動態(tài)重構的重構時間波動較大,原因在于壓縮后的文件大小不一致以及游程編碼的解碼復雜度不同,但時間均不大于87 ms,速度提高60.4%以上。同時,基于改進型游程編碼的壓縮文件的對存儲空間占用大幅減小,存儲空間利用率提高61.8%以上。 表1 重構時間測試結果 提出了一種基于改進型游程編碼的FPGA動態(tài)重構方法,較傳統(tǒng)的FPGA動態(tài)重構方法有更快的重構速度和更高的FLASH存儲空間利用率。雖然該加載方法是針對FPGA全局重構設計實現(xiàn),但是該方法是通過減小FPGA程序文件大小實現(xiàn)重構速度提高的,因此,對FPGA部分重構同樣適用。這種FPGA動態(tài)重構方法已在航空電子系統(tǒng)上得到應用,實踐證明該方法是一種高效可靠的FPGA動態(tài)重構方法。 參考文獻: [1]谷鑾,徐貴力,王友仁.FPGA動態(tài)可重構理論及其研究進展[J].計算機測量與控制,2007,15(11):1415-1418. [2]范斌,常青.基于DSP 的FPGA動態(tài)重構系統(tǒng)研究與設計[J].信息與電子工程,2010,8(2):123-127. [3]覃祥菊,朱明程,張?zhí)?等.FPGA動態(tài)可重構技術原理及實現(xiàn)方法分析[J].電子器件,2004,27(2):277-282. [4]周盛雨,孫輝先,陳曉敏,等.基于FPGA的動態(tài)可重構系統(tǒng)實現(xiàn)[J].電子器件,2007,30(2):646-650. [5]王鵬,向厚振,張志杰.基于FPGA的動態(tài)可重構邊緣檢測系統(tǒng)設計[J].電視技術,2012,36(7):32-34. [6]李燕斌,李燕春.用XCF32P實現(xiàn)FPGA的高速動態(tài)配置[J].電訊技術,2006,46(6):199-202. [7]李燕春.基于CPLD的FPGA快速動態(tài)重構設計[J].電訊技術,2008,48(7):87-89. [8]吳樂南.數(shù)據(jù)壓縮的原理與應用[M].北京:電子工業(yè)出版社,1995. 邵龍(1982-),男,漢族,四川通江人,碩士研究生?,F(xiàn)任中國電子科技集團公司第十研究所工程師。研究方向為信號處理,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-263 性能對比
4 結論