ZedBoard-設置Quad-SPI啓動和SD驅動

Zedboard是第一款面向開源社區的Zynq-7000系列開發板,而Zynq-7000系列FPGA,也稱爲完全可編程(All Programable)SoC,是Xilinx一個有重大意義的產品系列。

在FPGA裏集成高性能的處理器內核一直是衆多FPGA廠商以及客戶的需求,Zynq-7000的面世標誌着Xilinx在SoC集成度上的一個突破,實現了雙核Cortex-A9 MPcore和最新的28nm 7系列可編程邏輯的緊密集成。

上圖可以看出Zynq芯片內部可以分爲兩部分PS(Processing System)和PL(Programmable Logic),其中PS部分有點像傳統的處理器內部結構,包括CPU核、圖形加速、浮點運算、存儲控制器、各種通信接口外設以及GPIO外設,而PL部分就是傳統的可編程邏輯和支持多種標準的IO,它們之間通過內部高速總線互聯。這種架構既提高了系統性能(處理器和各種外設控制的”硬核“),又簡化了系統的搭建(可編程的外設配置),同時提供了足夠的靈活性(可編程邏輯)。

Zedboard的一個簡單框圖,板上的外圍功能都是圍繞Zynq芯片

Zynq芯片的配置

因爲是最新的芯片和開發套件,資料還是比較少的,而且基本都是大部頭的英文。要用FPGA進行開發,首先要了解FPGA的配置過程。傳統的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接口,如下表:


Zedboard上有兩個JTAG,一個可以接Xilinx編程電纜,一個是USB轉JTAG

1. Quad-SPI啓動

板載SPI FLASH中預置了一個非常簡單的程序,SPI-FLASH啓動過程可以分爲:

 

上電後,片上ROM程序執行,初始化後判斷從SPI FLASH啓動。
從SPI FLASH拷貝FSBL到片上RAM執行
FSBL執行,處理器從SPI FLASH讀取比特流(bitstream)配置Zynq的PL部分PL配置完成後執行,點亮LED
首先要MODE跳線選擇在SPI FLASH啓動模式,如下圖所示:

接通Zedboard電源,程序啓動,因爲是一個非常簡單程序,所以啓動配置過程非常快,藍色LED(LD12)變亮說明Zynq芯片配置完成,程序執行後按照(10101010)邏輯點亮用戶LED。

2. SD驅動

隨板附送的SD卡中有一個演示的Linux文件系統,而且在Linux系統下有一些腳本例程用來控制Zedboard板上各種外設的功能,這與之前的FPGA調試很不一樣,顯示了Zynq芯片軟硬件開發的強大和靈活性。

首先搭好Zedboard平臺,連接12V電源(J20)、USB-UART接口(J14)到計算機、插上SD卡(J12)、VGA(J19)或者HDMI(J9)。

上圖看到跳線J6必須短接,MODE跳線選擇SD啓動。

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