FPGA遠程升級方案

概述

  現場可編程門陣列(FiELD Programmable Gate Array,FPGA)器件具有高密度、低功耗、高速、高可靠性等優點,在航空航天、通信、工業控制等方面得到了大量應用。FPGA的處理器分爲軟核和硬核,並且軟核處理器具有高度的靈活性和可配置性。

  由於FPGA器件採用的是SRAM工藝,在斷電的情況下FPGA內的配置數據將丟失,所以需要非易失的存儲器來結合FPGA完成嵌入式系統的設計。EPCS(Erasable Programmable Configurable Serial)Flash屬於串行接口Flash,具有接口簡單、體積小、配置方便的特點,通常用來存儲FPGA的配置文件和NiosII的軟件可執行代碼。在經過合理的配置後,系統在上電後就可以從EPCSFlash中讀取這些文件來啓動整個系統。

       爲了能使系統得到更靈活的應用,充分發揮FPGA的靈活性、高效性,FPGA的軟硬件程序都需要方便的更新和升級功能;而當形成產品後,通過JTAG和NiosII IDE工具來聯合完成對EPCS Flash的更新燒寫很不方便。爲此,本文結合ALTEra公司提供的工具,提出了一種遠程在線更新FPGA配置文件和NiosII程序文件的方法。

  2 系統硬件結構

  系統硬件結構如圖1所示。系統主要有上位機系統、FPGA系統、EPCS Flash三個主體部分。上位機系統提供人機交互的部分,FPGA系統包括NiosII處理器、EPCS控制器、網絡及串行接口和其他外部接口,EPCSFlash主要用於存儲FPGA的配置文件和Nios程序映像文件。上位機系統通過FPGA集成的網絡及串行接口來完成通信工作。

  FPGA採用Altera公司的CycloneIII系統的EP3C40F48417N芯片。它具有低功耗、高集成度、易於使用的特性。EPCS Flash採用Altera公司的EPCS16SI16N芯片,它支持多種可配置的時鐘源,最高支持100 MHz的外部時鐘源,具有16 Mb的存儲空間,足夠滿足一般的FPGA配置文件和Nios程序文件的存儲需要。

  3 更新程序處理流程

  更新FPGA的配置文件和NiosII的應用程序的流程如圖2所示。

  本方法把由NiosII IDE生成的FPGA配置文件和NiosII程序文件合併,並編程爲一個可以直接執行的、包含FPGA配置文件和NiosII程序文件的二進制BIN文件。然後把該文件通過X-modem協議由上位機系統傳輸給NiosII的應用程序。NiosII的應用程序接收到完整的BIN文件後,把該BIN文件寫入到EPCS Flash中。最後,Nios II的應用程序停止看門狗,程序重新啓動,即完成了FPGA的遠程在線更新程序的過程。

  4 合併程序文件

  Nios II的啓動要經歷兩個過程:

  ①FPGA器件本身的配置過程。如果內部邏輯中使用了NiosII,則配置完成的FPGA中包含有NiosII軟核CPU。

  ②NiosII本身的應用過程。一旦FPGA配置成功後,NiosII就被邏輯中的復位電路復位,從reset地址開始執行代碼。

  Nios II IDE將FPGA的配置文件(.SOF文件)和應用程序(.elf文件)轉成flash格式文件,轉換後的flash格式文件是一種S-Record格式數據,包含如下區域:<type><length><address><data><checksum>。各字段的意思分別如下:<type>表示記錄的類型;<length>表示數據的長度;<address>表示數據寫入的起始地址,該字段的長度取決於<type>的取值;<data>表示存儲的數據;<checknum>表示校驗位。


配置文件和應用程序可能有多個段,每個段前面都插有一個“程序記錄”。一個“程序記錄”由2個32位的數據構成,一個是32位的整數,另一個是32位的地址,分別表示程序段本身的長度和程序段的運行時地址。其存儲佈局如圖3所示。

c.jpg

 


爲了在更新程序時把FPGA配置文件和Nios II應用程序一起更新,把FPGA配置文件和Nios II應用程序合併成一個文件,並且把合併後的Flash格式的文件轉換成不需要地址解碼就能直接執行的二進制BIN文件。具體處理流程如圖4所示。

d.jpg


在合併程序的過程中,去掉了flash文件中的長度、目的地址等用於解析程序的信息,並且把程序映像由字符格式轉換爲二進制格式。合併後的BIN文件包含FPGA配置文件和Nios II應用程序,並且Nios II應用程序緊挨在FPGA配置文件的後面,其存儲佈局如圖5所示。

e.jpg

 



5 Nios II更新程序模塊處理
Nios II程序中的更新程序模塊主要負責從上位機接收合併後的可執行BIN文件,並把該BIN文件寫入EPCSFlash,處理流程如圖6所示。

f.jpg


5.1 程序文件的傳輸
Nios II應用程序中的更新程序模塊和上位機系統採用X-modem協議傳輸程序文件,X-modem協議是一種網口和串口通信中廣泛用到的異步傳輸協議。
如果在程序傳輸過程中出現錯誤,更新程序模塊能夠通過設置超時來退出更新程序的狀態。
5.2 對EPCS Flash的讀寫
由於EPCS Flash的串行配置器件定義了特殊的讀寫協議,所以Nios II程序只能通過ALTEra提供的HAL API(ApplICation Program Inter face,應用程序接口)來完成讀寫Flash。打開、關閉Flash設備的API爲:alt flash open_dev()和alt_flash_close_dev()。操作Flash讀寫
的API爲:alt_read_flash()和alt_write_flash_bLOCk()。清除Flash的API爲alt_erase_falsh_block()。

結語
本文以提高FPGA遠程更新程序的方便性爲目標,提出了一種基於EPCS Flash的遠程在線更新FPGA程序的方法,從而在應用中能夠使基於FPGA的產品更加方便地維護升級。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章