摘 要:為滿足FPGA配置的靈活性需求,提出一種基于以太網物理層收發器的遠程配置方案。該方案以低成本CPLD-EPM570為核心,利用AC104進行物理層傳輸,通過PS方式完成對FPGA的配置,并內置完善的安全認證策略用于保護FPGA的設計產權。基于該設計方案的FPGA遠程下載控制系統已成功運用于某安檢設備中。
關鍵詞:以太網;FPGA配置;AC104;PRBS
中圖分類號:TP368.1 文獻標識碼:B
文章編號:1004-373X(2008)06-038-02
Design of Remote FPGA Download System Based on AC104
LI Zhaozhuo,DU Guoliang,ZHU Wei
(School of Electronic Science and Engineering,Southeast University,Nanjing,210018,China)
Abstract:A new kind of remote configuration architecture based on ethernet is proposed to enhance the flexibility of FPGA configuration.It takes a low cost CPLD,EMP570 as main processor,utilizes AC104 for PHY transmission and configures FPGA via passive serial way.A completely new internal security certification policy is also introduced to protect the intellectual property of FPGA designs.A practical FPGA remote download system based on this design has been applied in some security inspection equipment successfully.
Keywords:ethernet;FPGA configuration;AC104 PRBS
隨著FPGA應用的日益普及,產品上市時間壓力的不斷加大,FPGA設計人員正面臨著諸多挑戰,比如縮短設計周期、系統頻繁升級,這些變化對FPGA“重配置”的能力以及配置的靈活性提出了越來越高的要求,越來越多的系統開始采用遠程配置的方案。本文給出了一種基于物理層收發器AC104的FPGA遠程安全下載系統的實現。
1 系統設計
系統整體框架如圖1所示。其中,主控芯片采用MaxⅡ芯片EPM570,用于接收來自網絡的配置數據,并完成對FPGA的下載配置和安全認證;網絡接口芯片采用AC104QF物理層收發器,通過RMII接口與FPGA相連。
圖1 系統框架圖
2 以太網物理層芯片——AC104
AC104QF是Broadcom公司出品的一款支持4端口獨立收發的10/100 M以太網收發芯片。他完整實現了802.3/802.3u規范,包括百兆以太網所需的PCS(物理編碼子層)、PMA(物理介質接入層)和PMD(物理介質相關子層)模塊[1]。
(1) PCS(物理編碼)子層位于協調子層(RMII接口層)和物理介質接入層(PMA)子層之間,他將經過完善定義的以太網MAC功能映射到現存的編碼和物理層信號系統的功能上。AC104的PCS模塊主要包含成幀器、載波檢測以及4B/5B編碼功能;
(2) PMA子層提供PCS和PMD層之間的串行化服務接口,另外PMA子層還從接收位流中分離出用于對接收到的數據進行正確的符號對齊(定界)的符號定時時鐘。AC104的PMA模塊主要包含時鐘恢復、鏈路監控和信號檢測功能;
(3) PMD子層是物理層的最低子層,用于支持在PMA子層和介質之間交換串行化的符號代碼位,將電信號轉換成適合于在某種特定介質上傳輸的形式。AC104的PMD模塊主要包含MLT-3(3重電平傳輸)、BLW(基帶漂移補償)以及數據流加密功能。
各層的位置關系以及在OSI模型中所處位置如圖2所示。
要利用AC104進行收發數據,只需要對RMII接口進行操作。RMII接口由數據發送信號Txen,Txd[1:0]和數據接收信號Crsdv,Rxd[1:0]組成。發送數據時,需先將Txen置為有效,然后驅動Txd信號,發送完畢后需將Txen置為無效;在接收數據時,在Crsdv信號變為有效后,首先要等待Rxd引腳上出現J,K信號(J和K是4B/5B編碼中的特殊碼元,在Rxd端都表現為二進制的“0101”),然后開始接收真正的有效數據。上述所有操作都在RMII接口的時鐘(REFCLK)上升沿進行。
圖2 AC104實現的物理子層圖示
3 PS配置方式
EPM570在啟動網絡接收后,就開始對FPGA進行PS配置。在PS配置方式下,只需控制FPGA的5根信號線:nCONFIG(配置控制位輸入端)、nSTATUS(配置錯誤指示位輸出端)、CONF_DONE(配置結束標志位輸出端)、DCLK(配置時鐘輸入端)、DATA0(配置數據輸入端)引腳。具體配置步驟如下[2]:
(1) CPLD驅動nCONFIG為低電平(超過20 μs),使FPGA復位,等待nSTATUS回應1個低電平以及CONF_DONE變低,然后驅動nCONFIG產生一個由低到高的跳變(40 μs內nSTATUS也會變為高電平);
(2) FPGA驅動nSTATUS為低電平,然后釋放(外接的上拉電阻會將其上拉到高電平);
(3) 在DCLK上輸出50 MHz時鐘信號,在DCLK的上升沿將每個數據由最低位(LSB)先送出給DATA0,直到FPGA釋放CONF_DONE(外接的上拉電阻會將其上拉到高電平);
(4) CONF_DONE變高,標志著配置成功,開始初始化,然后進入用戶模式,開始正常工作。
需要注意的是,如果配置期間出錯,FPGA會將nCONFIG拉低,因此配置過程中CPLD必須保持檢測nCONFIG信號,發現為低電平即重新啟動配置過程[3]。
4 安全認證方案
上述這種配置方法存在安全性問題:在配置過程中,只要截獲上述5根配置線上的信號,得到配置數據流信息,就可以利用記錄下來的配置數據對另一塊FPGA芯片進行配置,實現對FPGA內部設計電路的克隆。為此,本系統設計了安全認證接口,可保證FPGA內程序的安全性。
在FPGA內部增加一個安全認證模塊,該模塊在FPGA下載完畢后首先運行:他產生一個隨機數p,并發送給CPLD,CPLD對其進行加密運算,并將運算結果E(p,Key)發回給FPGA;與此同時,FPGA內部同樣的加密模塊也應得到這個運算結果E(p,Key)。將這2個結果比對,如果相同,才啟動真正的工作模塊,否則,工作模塊不運行(其中,Key是加密密鑰,僅為FPGA設計者所知)。框架如圖3所示,這種方法可有效地對設計進行加密。
圖3 安全認證方案
隨機數發生模塊(RNG)采用PRBS(偽隨機二進制序列)算法,由帶反饋的簡單移位寄存器構成[4]。本系統中采用了PRBS-15序列,其生成多項式是G(x)=X15+X14+1,信號流圖如圖4所示:
圖4 PRBS序列
一個完整的隨機數生成模塊,除了隨機數算法,還需要合適的種子,即初始隨機量。對于FPGA而言,可利用的隨機量有:某支路上的瞬時電流或電壓值、RC電路的充放電時間等,其中后者的實現更為簡單。本系統中就采用這一方法,外部電路如圖5所示:
圖5 隨機種子發生電路
FPGA的管腳PIN1產生一個從0到1的跳變,同時利用高頻時鐘開始計數,直到檢測到PIN2為1。本系統中FPGA IO部分采用的是3.3 V的LVTTL電平,高電平的判決門限是2 V,則計數總時間為:
選擇合適的R,C值,控制適宜的充電時間長度,即可獲得可用的隨機數種子。
對于加密模塊,為簡單起見,本系統中采用異或運算,即對隨機數和密鑰進行異或操作,生成加密結果。這種做
法的缺點是,如果用戶截獲了多組明文(隨機數p)和加密結果,就可以逆推出加密算法和密碼。如果需要更強的加密效果,可以采用擾亂和擴散性能較好的DES算法,以提供足夠的抗分析強度。
5 結 語
本文提出的基于以太網的FPGA遠程下載系統,對于解決系統頻繁升級等問題,具有一定參考價值。同時,其內置的安全認證接口,可有效保護FPGA的設計。
在實際運用時,如果需要對多臺設備進行配置,可將以太網配置成星型結構,并對目標設備進行標識,以區分不同設備。
基于本設計方案的FPGA遠程下載控制系統,已經在某安檢設備中得到應用,并取得了良好的效果。
參考文獻
[1]Altima AC104QF Datasheet,V1.0,1998.
[2]Altera Configuration Handbook,V2.1,2005.
[3]李鵬,蘭巨龍.用CPLD和FLASH實現FPGA配置[J].電子技術應用,2006(6):101-103.
[4]Lukasz Sliwczynski.以1.5 Gb/s 運行的PRBS發生器[J].EDN電子設計技術,2007(6):122-123.
注:本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文。