劉永恩,王俊芳
(中國電子科技集團公司第五十四研究所,河北石家莊050081)
FPGA是作為專用集成電路(ASIC)領域中的一種半定制電路而出現的,既解決了定制電路的不足,又克服了原有可編程器件門電路數有限的缺點。獨特的技術優勢使得FPGA自1985年第一片誕生,在短短20多年內廣泛用于各個領域,尤其是通信、信息處理等領域[1]。隨著 FPGA的廣泛應用,FPGA設計工程師們也越來越感到,當電路板置入設備中尤其是當這些設備分布各地且位于較偏僻地域時,用傳統FPGA升級方法升級帶來的諸多不便。
絕大多數FPGA均為基于SRAM的工藝,最大特點是掉電數據會丟失,無法保存,所以它們的系統除了一個FPGA器件以外,外部還需要增加一個配置芯片用于保存編程數據,每次上電的時候都需要從這個配置芯片將配置數據流加載到FPGA,然后才能正常運行。FPGA的配置和開發環境一般由FPGA器件生產廠商提供或推薦。Altera公司推薦的當前FPGA開發環境為QuartusII,用于 Altera公司各類FPGA的設計、配置等。其中QuartusII中集成的Programmer工具用于FPGA的在線配置或外置掉電不易失器件的燒寫。
Altera公司FPGA器件的配置主要有3種:主動模式、被動模式和聯合測試行動組(JTAG)模式[2],其具體說明如表1所示。

表1 Altera FPGA配置簡表
盡管Altera的FPGA器件可以支持表1所示多種配置方法,但受限于芯片支持范圍、成本和設計復雜度等因素,真正在工程中被推薦使用的常用方法有:主動串行(AS)方式、被動串行(PS)方式和JTAG下載方式。
FPGA的配置一般是通過計算機的并口、網口或通用串行總線(USB)接口經專用下載電纜完成。FPGA的遠程升級就是實現能從遠端包括在不用打開設備機箱的情況下脫離專用下載電纜就可以完成FPGA的更新。
FPGA的遠程升級需要解決的關鍵技術包括配置方式、配置文件、文件傳輸和文件更新等。
2.1.1 JTAG配置方式
JTAG配置方式一般是由調試主機通過專用下載纜在線配置,每次掉電,配置數據丟失,再次加電時必須重新配置。為了使FPGA在每次加電時可以不必采用調試主機下載方式而能自動完成配置加載,Altera公司推薦了如下配置方式:采用外接微處理器(或微處理器+復雜可編程邏輯(EPLD))+通用存儲器實現,利用微處理器(或微處理器 +EPLD)設計實現JTAG接口,將通用存儲器中的FPGA配置代碼通過該JTAG接口完成更新[3]。
基于JTAG下載的遠程升級方案的優點是可以采用通用存儲器來存儲FPGA配置代碼。
不足:① 需要增加分離器件微處理器(或EPLD),增大了電路面積、成本和功耗等;② JTAG接口的技術實現比較復雜;③與通過JTAG接口的編程下載纜方式容易沖突,很難共存,對于單板調試非常不便。
2.1.2 PS配置方式
PS是并行配置模式,配置速率較高。典型的PS下載電路為:微處理器+通用存儲器+EPLD。EPLD用來設計實現PS接口,微處理器+通用存儲器實現配置代碼的存儲與控制[4]。
基于PS的遠程升級方法的優點是可以采用通用存儲器來存儲FPGA配置代碼。
不足是需要增加分離器件微處理器(或EPLD)而增大了電路面積、成本和功耗等。
相比較于JTAG方法,PS接口的實現相對簡單、對于單板調試影響較小。
2.1.3 AS配置方式
AS下載方式是Altera公司針對其專用的配置代碼存儲Flash芯片EPCS系列推出的下載方法,EPCS系列的存儲容量為4 ~128 Mbit,價格相對低廉,內置配置時序電路,用戶使用方便,是工程應用最為廣泛的配置方法。
基于AS的配置方式不需要增加分離器件,無需設計配置接口,有效避免了前2種配置方法的不足,其專用存儲Flash芯片EPCS成本低廉,設計簡單,不影響單板調試,不增加額外的芯片或電路模塊,可以利用FPGA實現上電復位,增加遠程升級功能對于單板調試沒有任何影響[5]。
從Cyclone系列FPGA開始,為了配合軟核Nios處理器的靈活應用,Altera公司開始在本公司的FPGA器件中集成了一個叫altasmi_parallel的知識產權(IP)核。altasmi_parallel可以像雙端口RAM等IP一樣通過內置Megawizard工具在設計中調用,提供了一種通過并行數據端口對配置芯片EPCS的擦除、寫入和讀取等功能。這樣FPGA設計中編寫一個控制邏輯電路,就可以方便地通過地址數據總線這樣一種通用處理器控制模式(GPCM)對其進行操作,完成對EPCS的讀寫操作,如采用擦除—寫入—讀出校驗的流程,其數字邏輯電路設計框圖如圖1所示。
實現的邏輯流程圖如圖2所示。

圖1 數字邏輯電路設計

圖2 可靠遠程升級配置方法流程
對于Cyclone III及以后的FPGA器件,還可以采用更為可靠的遠程配置方案。需要利用Altera公司提供的一個專用遠程控制模塊(ALTREMOTE_UPDATE),將專用串行存儲器件(EPCS)根據容量和功能需要劃分為若干個頁,目前最大支持7個頁,其中頁0存儲成為廠級配置的代碼,可以保證FPGA的基本功能的實現。其他頁中可以存儲不同的應用配置代碼,每次上電時,根據遠程控制寄存器設定需要選擇的應用代碼進行配置,當應用代碼異常時,看門狗定時器將會超時,此時自動進入頁0的廠級配置區,完成廠級代碼的配置,保證電路的基本功能。可靠遠程升級配置方法的數字邏輯電路設計框圖如圖3所示。

圖3 可靠遠程升級設計
Altera公司FPGA的配置文件格式有:①SRAM目標配置文件(.sof),一般用于JTAG方式在線下載;②編程目標文件 (.pof),一般用于專用配置器件如 EPCS等器件的下載;③ 原始二進制文件(.rbf),用于并行配置方案;④ 原始編程數據文件(.rpd),多用于AS模式對專用配置器件下載;⑤十六進制文件(.hex或.hexout),符合 Intel方式的ASCII編碼文件,多用于采用第三方存儲器件時;⑥ 列表文本文件(.ttf),用于 FPP、PPS、PPA或 PS配置方案;⑦ 串行位流文件(.sbf),僅限于用專用BitBlaster下載配置某些 FLEX系列器件時使用;⑧JAM文件(.jam),ASCII編碼格式文件,因包含配置器件信息而多用于多器件鏈式配置時;⑨JAM字節文件(.jbf),是字節格式的JAM文件。
根據對于配置方式的分析,在FPGA遠程升級時需要用到擴展名為sof、pof或rpd的配置文件,其中sof和pof文件用于本地配置,rpd文件專門用于遠程升級。
在FPGA的配置代碼向目標配置器件的傳輸上,傳統升級方法一般通過主機的USB接口或計算機并口采用對應的專用下載電纜傳輸。但RS-232串口和以太網接口應用更為普遍。目前基于RS-232串口的常用文件傳輸協議有協議和基于以太網接口的FTP協議。這2種協議均較成熟,參考設計較多,實現相對容易。
2.3.1 X.Modem協議
X.Modem協議最早是用于2臺計算機之間通過RS-232異步串口通信進行文件傳輸的通信協議。使用X.Modem協議的數據幀格式如表2所示。其中,循環冗余校驗(Cyclic Redundancy Check,CRC)碼是數據通信領域中最常用的一種差錯校驗碼,其特征是信息字段和校驗字段的長度可以任意選;段起始(Section Overhead,SOH)指幀的開頭字節,代表數據幀的第1個字節;信息包序號,對256取模所得到當前包號,第1個信息包的序號為1,以后依次加1,而信息包序號范圍0~255;信息包序號的補碼,當前信息包號的補碼(255減去信息包序號);數據區段,數據區段的長度固定為128 Byte,其內容沒有任何限制,可以是文本數據或二進制數據,不足128 byte的用16進制的0x1A填充。

表2 X.Modem協議的數據幀格式 (單位:Byte)
遠程升級的單元板一般用于X.Modem協議的接收處理,其核心是CRC校驗,根據CRC校驗結果啟動重傳要求或接受處理。X.Modem協議中使用的是CRC-ITU-T校驗方式,其生成多項式為:x16+x12+x5+1,用十六進制的表示為:0x1021,目前已經有很多此種CRC的推薦實現方式[6]。
2.3.2 文件傳輸協議(FTP)
FTP是文件傳輸協議/互連協議(TCP/IP)協議簇的一種具體應用,是網絡中極為實用的服務之一。它工作在開放系統互連(OSI)模型的第7層,TCP模型的第4層,即應用層,使用TCP傳輸而不是用戶自定義協議(UDP),客戶在和服務器建立連接前要經過一個“三次握手”的過程,保證客戶與服務器之間的連接是可靠的,而且是面向連接,為數據傳輸提供可靠保證。它允許用戶以文件操作的方式(如文件的增、刪、改、查、傳送等)與另一主機相互通信[7]。
FTP的內部協議命令采用四字符的美國信息交換標準碼(ASCII)序列,以一個換行符作為結束,有些代碼后還會有相應的參數。FTP的連接一般是有2個連接,一個是客戶和服務器傳輸命令的連接,另一個是數據傳送的連接。FTP服務程序一般會支持2種不同的模式:Port模式和Passive模式[8]。
X.Modem協議和FTP協議在主機側已經集成在多種應用軟件如超級終端等,各種參考實現方式一般也是開源的,非常便于進行開發利用。在實際應用中還可以考慮利用其他方式如基于TCP/IP的UDP方式等。
傳統升級方法的文件更新依賴于專用開發環境的進程控制,而且對于可靠性要求不高,可以隨時進行重新下載,而遠程升級則需要有較高的可靠性設計作為保障,否則一旦出現升級故障,則必須采用傳統升級方法完成。因此必須采取可靠的校驗機制,在校驗發現錯誤時啟動重寫操作或恢復操作。
在大型專用綜合業務互聯網絡中,核心交換機功能復雜,整個設備超過13塊單元板和20個FPGA器件,需要經常性的進行FPGA升級。設備對外提供RS-232串口和以太網接口,設備內部各單元板之間有專用通信通道。
采用FPGA遠程升級技術,可以方便地對設備內各個FPGA芯片進行升級。利用該互聯網絡的綜合業務支持能力,可以將待升級代碼通過綜合業務支持能力傳遞至目標設備,然后利用遠程升級技術便可進行所有目標設備的FPGA升級。不再需要工程師們奔波在目標設備間,打開設備機箱進行繁瑣的本地FPGA升級方式。
FPGA的遠程升級是一項復雜的系統工程,可以實現的方法很多,但核心原則就是通過對配置方式的深入研究,以依托一種可靠的便于實現的文件傳輸協議,在盡可能不增加電路成本的基礎上完成配置文件的可靠傳輸,然后實現配置代碼的更新,從而實現FPGA的升級。遠程升級技術一般不需要增加分離器件和專用電路,不增加功耗和成本,不影響基于傳統方法本地升級的單板調試,為FPGA的升級帶來了很大的便利,已經在很多工程中得到成功應用。
[1]王靈芝,林培杰,黃春暉.FPGA的配置及其接口電路的設計.電子測量與儀器學報,2007,21(2):109-112.
[2]吳冬冬,楊曉君,張佩珩.一種FPGA的遠程系統升級方法.計算機工程與應用,2006,18(1):86-89.
[3]陳興文,劉 燕,高彥龍.基于單片機實現FPGA的加載配置[J]. 現代電子技術,2005,13(3):45-47.
[4]屈 杰,朱光喜,譚 力,等.基于網絡和PowerPC系統的FPGA遠程配置.無線電通信技術,2008,12(1):101-102.
[5]石雪梅,計賢春.FPGA配置芯片測試方法的研究與實現[J]. 計算機與數字工程,2010,20(9):77-79.
[6]李 帥,聶慧饒,馬 浩,等.基于嵌入式系統的 XMODEM協議下的文件傳送[J].計算機應用,2010,10(S1):188-189.
[7]黃世權.FTP協議分析和安全研究[J].微計算機信息,2008,11(6):93-94.
[8]趙寶鋼,李齊斌,高 偉.用Winsock實現FTP文件的上傳與下載.信息技術,2005,3(2):89-91.