Xilinx FPGA的上電配置過程-7系列和zynq對比

一、7系列FPGA的啓動模式

以nexys開發板爲例,其他系列的fpga上電過程基本相同。

分爲4種模式:

JTAG下載

FPGA作爲從設備,接受外部設備(如PC、上位機等)的JTAG寫入bit流,完成內部ram的配置。

這種模式的典型場景就是使用PC通過vivado進行燒寫bit,燒寫完畢即完成了FPGA內ram的配置,掉電丟失,需要重新燒寫。

SPI閃存設備啓動

FPGA作爲主設備,上電後主動通過QSPI對板上flash芯片讀取bin,完成內部ram的配置。

這樣自動完成了上電過程,對用戶是無感的,所以達到了掉電不丟失的效果。

這種模式的典型場景是使用PC通過vivado進行燒寫bin,需要在燒寫時選的flash芯片型號,燒寫較慢,掉電不丟失。

micro SD卡啓動

FPGA作爲主設備,上電後主動通過SDIO對板上SD卡的發起讀取bit,完成內部ram的配置。

這種方式,掉電不丟失。

U盤啓動

FPGA作爲主設備,上電後主動通過USB對U盤發起讀取bit,完成內部ram的配置。

這種方式,掉電不丟失。

 

二、zynq系列FPGA的啓動模式

 

zynq有兩種啓動模式:

JTAG啓動

FPGA作爲從設備,接受外部設備(如PC、上位機等)的JTAG寫入bit流,完成內部ram的配置。

與7系列FPGA的燒寫過程一致,掉電丟失。

arm核發起的bootrom啓動

Zynq會先啓動arm核,通過內部的rom執行啓動模式判斷,然後選擇從SPI FLASH、SD和JTAG這幾個設備中啓動。

過程如下:

傳統的SRAM型FPGA都是通過JTAG接口、外置非易失性存儲器(PROM、FLASH)或者外部處理器一次性將程序下載到FPGA中配置。而Zynq芯片則不同,其內部集成了處理器硬核和可編程邏輯,所以它的配置啓動是分階段的。

  • Stage 0:bootROM過程,Zynq芯片PS部分有片上ROM和RAM,在芯片上電或者復位後,其中一個處理器會執行片上ROM的代碼進行初始化,判斷啓動設備(boot device),將啓動設備上的FSBL(first boot loader)代碼拷貝到片上RAM內。
  • Stage 1:啓動設備包括SPI FLASH、SD和JTAG,FSBL代碼是用戶自己定製的,拷貝到片上RAM後執行。包括初始化PS部分配置、配置PL部分邏輯、加載和執行SSBL(second boot loader)或應用程序。
  • Stage 2:上一階段後硬件已經配置完成。這一階段是可選的,完成Linux系統啓動過程(U-BOOT)

通過Zynq芯片的啓動過程可以看到上電或者復位後片內處理器首先啓動,然後根據MODE引腳判斷啓動方式,Zedboard的啓動可以通過Quad-SPI FLASH、SD卡或者JTAG接口,如下表:

管腳

MIO6

MIO5 MIO4 MIO3 MIO2
跳線 JP11 JP10 JP9 JP8 JP7
JTAG Mode
Cascade JTAG         0
Independent JTAG         1
Boot Device
JTAG   0 0 0  
Quad-SPI   1 0 0  
SD card   1 1 0  

PLL Mode

PLL used 0        
PLL bypass 1        

JTAG啓動

  • 上電後,片上ROM程序執行,初始化後判斷從SPI FLASH啓動。
  • 等待JTAG加載比特流(bitstream)到片上RAM執行

QSPI啓動

  • 上電後,片上ROM程序執行,初始化後判斷從SPI FLASH啓動。
  • 從SPI FLASH拷貝FSBL到片上RAM執行
  • FSBL執行,處理器從SPI FLASH讀取比特流(bitstream)配置Zynq的PL部分
  • PL配置完成後執行,點亮LED

SD卡啓動

  • 上電後,片上ROM程序執行,初始化後判斷從SD卡啓動。
  • 從SD卡拷貝FSBL到片上RAM執行,FSBL配置FPGA,藍色LED(LD12)變亮說明配置完成。
  • 從SD讀取SSBL,開始Uboot過程(啓動Linux),啓動過程中VGA輸出了一個Demo演示圖像。
  • 串口監視程序會顯示Linux啓動過程(需要上電前打開putty窗口),啓動完成後,板上OLED會顯示一個Digilent demo圖像。

 

 

 

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