徐晶晶 陳帥
摘 要: 為了解決多級FPGA在線自動升級與加載的技術難題,本文提出了利用其中一片FPGA實現自動更新的方案,設計了存儲系統的邏輯方案,主要功能有:PCI-E接口的橋、多級FPGA在線系統升級、NANDFLASH的讀寫等操作控制、DDR2的讀寫等操作控制及校驗與智能磨損平衡技術算法等,降低了硬件成本。
關鍵詞: SSD FPGA 在線 升級電路
1.引言
目前,傳統的FPGA升級與加載方式主要有兩種[1]-[5]:一種是通過JTAG口直接加載配置文件到FPGA內部的SRAM中,但是由于SRAM掉電后數據將丟失,因此在下次重新上電時,需要重新通過JTAG加載線進行手動加載;另外一種是通過外置FLASH存儲器件,首先將加載文件燒錄到FLASH中,然后在每次上電時,利用FPGA的專用接口直接自動加載FLASH中的配置文件,克服第一種方法存在的每次上電都要手動加載的缺點[6]-[7]。對于單FPGA硬件系統來說,利用上述的第二種方法與網絡接口的聯合可以實現對單個FPGA的在線自動升級與加載,但是如果對于多級FPGA系統來說,為了保證下電后配置文件不丟失,采用上述第二種辦法則需要在每個FPGA的外圍都掛上一個NANDFLASH存儲器,才能保證重新上電后能夠自動加載,硬件成本較高。同時對FLASH中的配置文件的更新需要更多的外圍器件支持。
本文利用一片FPGA并通過SPI接口與加載接口實施更新NORFLASH與其他四片FPGA加載的方案。設計了存儲系統的邏輯方案,采用MLC結構的NANDFLASH顆粒作為存儲單元,使用多片FPGA器件作為整個系統的邏輯控制核心。邏輯部分主要功能有:PCI-E接口的橋、多級FPGA在線系統升級、NANDFLASH的讀寫等操作控制、DDR2的讀寫等操作控制,以及校驗與智能磨損平衡技術算法等,降低了硬件成本和系統復雜性。
2.多級FPGA在線自動升級與加載方案的電路結構
設計如圖1所示的硬件系統的核心結構,由5片FPGA組成;其中的FPGA1采用xilinx公司的Virtex5系列的30T器件,內部包含PCI-EXPRESS endpoint IP核,利用IP核構成的總線節點實現FPGA1與內存和CPU之間的通信。其他四片FPGA2采用xilinx公司的SPARTAN6系列的150T器件。首先通過PCIE的IP核接口實現從內存中讀取到新的加載文件,然后再進行并串的轉換,通過SPI接口控制模塊實現從SPI_NORFLASH中讀取數據與下發擦除、讀寫狀態寄存器等指令,更新了SPI_NORFLASH中的存儲的文件,存儲的文件內容包括FPGA1與FPGA2的配置文件存放地址不同。為了保證在升級或者加載失敗時避免FPGA癱瘓,因此還需在FLASH空間里把上述兩個文件內容實現備份,供發生意外所需。其次在SPI_NORFLASH文件更新成功后,FPGA1內部通過一些控制模塊將SPI_NORFLASH中的數據讀出,然后進行數據串并轉換與并串轉換,并將轉換后的數據按照SPARTAN6 150T的串行SLAVE加載模式,加載到其他4片FPGA中,從而實現整個5片FPGA的在線自動升級與加載。
圖1 多級FPGA在線升級與加載方案
3.多級FPGA在線自動升級與加載方案的模塊化實現
在FPGA1內部為了實現在線自動升級與加載的功能,特設計了以下幾個模塊,包括PCI-E IP核的包裝模塊,SPI接口控制器模塊SPI_CONTROLLER,以及對其他4片FPGA的加載控制模塊UPDATA_CONTROLLER,這3個部分共同組成了整個在線自動升級與加載的控制模塊如圖2所示。其中PCI-E ENDPIONT模塊主要是實現PCI-E IP所需要的各種接收與發送數據的時序與數據的封裝,包括TLP幀的封裝與解析并將數據傳送給SPI_CONTROLLER模塊。
圖2 FPGA1內部部分結構框圖
SPI_CONTROLLER模塊需要將接收到的數據處理后才能通過SPI接口燒錄到NORFLASH中。從總線上傳送下來的數據為32位比特,其中包括8比特命令碼和24比特的地址碼或者32比特全為數據或者32比特中前8位為指令碼,剩余24比特無效,等格式數據。由于外置的SPI_NORFLASH根據M25P128 FLASH器件的特點,特設計了SPI_CONTROLLER模塊中的一些狀態機,如圖3所示,根據接收到指令狀態機由空閑狀態轉移到解碼狀態,分析出32位比特數據中前8位是具體指令。根據解碼后的分析并進行相關狀態,模塊內的其他部分小模塊根據這些狀態產生相關的時序與數據,待操作完成后,狀態機跳轉到操作完成等待狀態,并隨后跳轉到空閑狀態,從而完成整個操作流程,實現對外置NORFLASH的數據更新等其他操作。具體模塊內部的狀態機轉換如下圖3所示:
圖3 SPI控制模塊內部狀態機
其中操作完成中最主要的兩個操作是讀FLASH與寫FLASH,根據M25P128器件的特點及SPI接口的時序要求,因此所設計模塊中clk,spi_di,spi_do及片選信號滿足下面的時序要求,具體如圖4、圖5所示:
圖4 SPI讀操作時序
圖5 SPI寫操作時序
本模塊加載過程中的狀態機為:首先進入復位狀態,然后判斷復位是否成功;通過啟動加載狀態直接進入初始化狀態;從發完讀加載數據指令后直接進入等待讀取數據完成狀態;開始加載后計入加載計時狀態如果加載成功則進入空閑狀態;最終無論加載成功與否都需要釋放SPI端口。在加載過程中,可以利用在加載部分文件期間同時讀取下一部分需加載的內容,從而提高加載效率。
4.仿真與調試
上述的電路設計方案利用VERILOG語言編寫實現,并通過NC-VERILOG仿真工具。首先進行仿真驗證,在仿真結果正確的條件下,再進行板級調試。仿真波形如下圖6所示:
圖6 FPGA在線升級系統仿真波形
5.結語
通過上述設計的方案和模塊與最后的調試與完善,該方案已經在SSD存儲卡產品中穩定可靠地應用于整個硬件核心FPGA系統中,實現在線自動升級與加載,很大程度上降低了維護的人力與物力成本,從而提高了產品的市場競爭力。
參考文獻:
[1]魏書軍,劉振安,趙棣新,過雅南.VME總線在線“從串模式”配置FPGA的設計與實現[J].核電子學與探測技術,2007,(05).
[2]張煒,楊虎,張爾揚.一種靈活的實時FPGA數據配置方法[J].通信技術,2003,(02).
[3]李鵬,蘭巨龍.用CPLD和Flash實現FPGA配置[J].電子技術應用,2006,(06).
[4]彭冰,劉舒,黃振.基于共用總線的多片FPGA配置電路的設計與實現[J].中國新通信,2009,(05).
[5]毛劍慧,黑勇,吳斌,喬樹山.一種新穎的多模式FPGA配置方案[J].微計算機信息,2008,(29).
[6]蘇嵐,陳銘,鐘銳.FPGA被動串行配置方法在稅控機中的應用[J].電子器件,2007,(02).
[7]孫云峰,段哲民.基于微處理器系統的FPGA在線配置方法[J].微處理機,2008,(05).