Zynq的開發四種方式
ZYNQ中包含了兩個部分,雙核的arm和FPGA。根據XILINX提供的手冊,arm模塊被稱為PS,而FPGA模塊被稱為PL。
ZYNQ內部包含PS和PL兩部分,ZYNQ開發有一下四種方式:
A:純PS開發
PS中包含2個ARM Cortex-9的內核,一些基本的外設擴展口以及Memory接口。PS中包含以下4個主要功能模塊:
Application processor unit (APU)
Memory interfaces
I/O peripherals (IOP)
Interconnect
PS開發有兩種方式:即傳統的arm的方式和xilinx方法(這個是生成一個elf文件,這個elf文件包括了硬件配置信息(xmp)和裸跑程序(c文件))。
B:純PL開發
PL即FPGA,這個和一般的xilinx的FPGA沒有很大的區別。
C:PS+PL(不跑操作系統)開發
生成elf文件包括了硬件配置信息(xmp)和裸跑程序(c文件),還有一個.bit文件。
D:PS+PL(跑操作系統)開發
這個就需要BOOT.BIN,設備樹,linux內核鏡像,文件系統了。
其中BOOT.BIN是由3部分組成的(boot.elf, .bit, fsbl.elf),boot.elf這個是由交叉編譯環境產生的,相當于ssbl,.bit文件是PL使用文件,fsbl.elf這個是fsbl。
之前剛開始學FPGA的時候用的是基于spartan的FPGA開發板,當上手ZYNQ后一直以為ZYNQ就是在資源上做了升級,我所要做的工作無非是把開發工具從ISE升級到VIVADO罷了,后來發現自己還是過于天真了,很多事都有存在的意思,上手之后便發現ZYNQ和之前的板子有區別。
SOC FPGA
區別就是ZYNQ除了傳統FPGA外,還把ARM核和FPGA結合在了一起,成為了內嵌處理器硬核的FPGA,即SOC FPGA,二者利用高速總線AXI4進行通信。
內部結構 PL與PS
由于它既有FPGA又有ARM,所以它同時具有ARM軟件的可編程性和FPGA 的硬件可編程性,不僅可實現重要分析與硬件加速,同時還在單個器件上高度集成CPU、DSP、ASSP 以及混合信號功能。
從結構來看,支持FPGA的部分稱為PL(Programmable Logic),支持ARM的部分稱為PS(Processing System),如下圖所示。
可以看出PS部分有很多接口,如SPI,UART,CAN等等,這些接口的存在可以讓FPGA不用寫控制器去傳輸,節省了資源但是犧牲了速度。
工作
PL端和PS端一般通過AXI4總線通信,使用AXI4的PL模塊會有相應c驅動文件,用于PL端模塊的控制。這些驅動文件有裸機版本,也有linux版本,linux運行時,如果調用pl端模塊就使用這些驅動即可。
Zynq的啟動分三個階段。階段0是BOOTROM的固化代碼,不用管;階段1中,first stage boot loader 首先配置PS端,之后硬件比特流對PL進行配置。階段2運行用戶程序,Linux的BOOT loader在這個階段才開始運行。
ZYNQ并不能說是一個嵌入ARM核的FPGA。從它的啟動過程就可以發現,絕對是ARM主導的,因此稱它為以高性能FPGA為外設的雙核ARM或許更為合適。
那么就有一個問題Zynq可以作為獨立的ARM或者獨立的FPGA使用嗎?答案是肯定的,可以的。
首先,Zynq可以作為獨立的ARM使用是顯而易見的,因為Zynq中ARM就是主處理器,上電啟動過程也是由ARM來完成的,除了新建ARM工程時需要HDL硬件描述文件(HDL硬件描述文件的制作也很簡單),其他都一樣。
其次,Zynq作為獨立的FPGA使用其實也是可以的,首先我們可以跟使用傳統的FPGA一樣使用Vivado集成開發環境綜合編譯工程并通過JTAG接口下載bit文件。唯一的不同是在我們燒寫啟動時,我們需要把bit文件和FSBL源碼合成為一個bin文件燒寫后才能啟動,上電啟動時ARM會先運行加載FSBL程序,然后通過FSBL會加載FPGA的程序。FSBL程序是Xilinx提供的集成在SDK里的二級boot loader程序,我們在SDK集成開發環境中通過很簡單的操作就可以完成FSBL程序和bit文件的合成。
上圖中紅色框框出來的是二級boot loader程序,黃色框框出來的是FPGA程序,藍色框框出來的是ARM的用戶應用程序,如果我們把Zynq作為獨立的FPGA使用時,我們就可以刪除藍色框即ARM用戶應用程序,保留紅色框二級boot loader程序和黃色框FPGA程序即可。
審核編輯 :李倩
-
FPGA
+關注
關注
1643文章
21982瀏覽量
614562 -
Zynq
+關注
關注
10文章
614瀏覽量
48050
原文標題:zynq 和fpga區別快速認識Zynq開發
文章出處:【微信號:gh_9d70b445f494,微信公眾號:FPGA設計論壇】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
評論