學會Zynq(2)Zynq-7000處理器的配置詳解

FPGADesigner發表於2019-03-10

上篇中介紹了Xilinx FPGA嵌入式開發的基本概念和軟體特性,並以Hello World為例給出了一個操作流程,熟悉該流程相當重要。上一篇中只是簡單說明了每一步應該執行哪些操作,本文將詳細介紹每一步的具體含義和涉及到的相關概念。


Zynq-7000配置

新增好ZYNQ7 Processing System IP核後,需要對其進行配置,雙擊彈出如下視窗。綠色部分表示ZYNQ PS部分中可配置的專案,可以雙擊轉向相應的設定介面,也可以直接在左邊的導航列表中選擇。
在這裡插入圖片描述
頂部有4個按鈕,Documentation查詢與Zynq相關的文件;Presets儲存或匯入一些預設配置;IP Location顯示了該IP所在路徑;Import XPS Settings匯入由XPS工程產生的XML檔案,該檔案包含對Zynq處理器的配置。XPS是老版ISE使用的嵌入式開發工具。

1. MIO與EMIO配置

Peripheral I/O Pins(如下圖)或MIO Configuration中可以檢視和配置I/O管腳。Zynq-7000器件的PS部分有超過20種可選的外設,設計者可以將這些外設直接與專用的複用I/O相連,通常稱為MIO;也可以使用擴充套件的複用I/O,通常稱為EMIO
在這裡插入圖片描述
設計者可以配置MIO的電平標準,如果要使用某個外設,選中核取方塊即可(會感覺和STM32 CubeMX軟體的使用有些相似)。PS的MIO劃分在Bank0(pin0-15)和Bank1(pin16-53)兩個電壓域內,每個bank內的MIO可以獨立程式設計,支援1.8、2.5、3.3V的CMOS單端模式,1.8V的HSTL差分模式。我們都知道每個bank的電壓必須相同,但是不同管腳可以有不同的I/O標準。

2. 快閃記憶體介面

Zynq-7000支援Quad-SPI Flash、SRAM/NOR Flash和NAND Flash三種快閃記憶體,配置時只能選擇其中一個。注意外設之間如果發生管腳衝突,會用紅色提示。如下圖SRAM和Enet0之間發生了衝突:
在這裡插入圖片描述

3. 時鐘配置

Clock Configuration中進行Zynq-7000器件的時鐘配置。這裡可以設定外設的時鐘,PS上外設的時鐘源可以由內部PLL生成,也可以來自外部時鐘源。同一個PLL可能要產生多個頻率,導致得到的頻率不是完全準確,在Actual Frequency列中檢視能夠實現的實際頻率。PS的輸入頻率範圍限制在30~60MHz之間,通常都會選擇33.33MHz,便於產生內部所需的時脈頻率。
在這裡插入圖片描述

4. DDR配置

Zynq-7000的記憶體控制器支援DDR2、DDR3、DDR3L和LPDDR2,主要由三部分組成:

  • DDRI:DDR介面,AXI記憶體埠介面。DDRI有4個64位同步AXI介面,可以同時為多個AXI主機提供服務。每個AXI介面都有一個專用FIFO。一個AXI埠專用於CPU和ACP的L2快取;兩個埠專用於AXI_HP介面;AXI網際網路絡上的其它主機共享第四個埠。
  • DDRC:帶有事務調動程式的核控制器,包含兩個內容定址儲存器(CAMs),用於執行DDR資料服務排程,最大化DDR記憶體的效率。同時包含一個低延遲的“fly-by”通道,允許在不通過CAM的情況下訪問DDR記憶體。
  • DDRP:帶有數字PHY(物理層)的控制器。PHY處理來自控制器的讀、寫請求,在目標DDR記憶體的時序約束下轉換為特定訊號。PHY利用來自控制器的訊號產生內部訊號,通過數字PHY連線到引腳。Zynq的DDR管腳在PCB上直接與DDR器件相連。

PS中DDR的大致工作流程為:根據請求等待時間、請求的緊急性、請求是否與前一個請求在同一頁內,DDRI對來自8個埠(4個讀、4個寫)的請求進行仲裁,選擇一個請求通過一個讀寫流介面傳遞到DDRC中,同時DDRP驅動DDR的事務。

在DDR Configuration中完成DDR控制器的配置,DDR型號要與開發板相符:
在這裡插入圖片描述

5. GIC中斷控制器

在Interrupts中對通用中斷控制器GIC(Generic Interrupt Controller)進行配置。GIC用於管理從PS和PL傳送到CPU中的終端。當CPU介面接收一個新中斷時,GIC以程式設計的方式啟用、禁用、遮蔽與優先處理中斷源,並將其傳送到選定的CPU。此外,GIC還支援安全擴充套件,以實現安全感知系統。
在這裡插入圖片描述
目前,控制器基於ARM®GIC架構版本1.0。獨立匯流排通過避免網際網路絡中出現臨時阻塞訪問暫存器,以實現快速讀、寫響應。中斷分配器集中所有中斷源,再將最高優先順序的中斷源分配到CPU。

當把一箇中斷定向到多個CPU時,GIC可以確保每次只有一個CPU接收中斷。所有中斷源包含一個獨一無二的中斷ID號,都有自己的可配置的優先順序和目標CPU列表。

6. AXI_HP介面

4個AXI_HP介面為PL匯流排主程式提供了到DDR和OCM記憶體的高頻寬資料通道,每個介面有兩個用於讀寫通訊的FIFO緩衝區。記憶體互連的PL將高速AXI_HP埠布線到兩個DDR記憶體埠或OCM。AXI_HP介面也可以用作AXI_FIFO介面,利用其緩衝能力。

在PS-PL Configuration中的HP Slave AXI Interface中可以啟用這些介面:
在這裡插入圖片描述
簡而言之,這種介面為PL主機和PS記憶體(DDR或OCM)之間提供了一種高吞吐量資料通道。

7. AXI ACP介面

ACP介面允許對PL主機進行低延遲訪問,帶有可選的coherency和L1、L2快取。從系統角度來看,ACP介面具有與APU CPU類似的連通性,因此ACP可以直接在APU塊爭取資源。在PS-PL Configuration中的ACP Slave AXI Interface中可以啟用該介面:
在這裡插入圖片描述

8. AXI GP介面

這種介面將主機與從機埠直接相連,不需要額外的FIFO緩衝。AXI_HP介面帶有精心設計的FIFO緩衝,以提高效能和吞吐量。與其不同,由於沒有FIFO,AXI_GP介面的效能受到主機和從機埠的限制。這種介面用於往往不會太關注效能的一般用途。在PS-PL Configuration中的GP Master/Slave AXI Interface中可以啟用該介面:
在這裡插入圖片描述

9. PS-PL交叉觸發介面

Zynq內部有個基於交叉觸發機制的嵌入式交叉觸發器ECT。該元件基於CoreSight技術,通過傳送觸發器和接收觸發器來和其它元件互動。ECT主要由交叉觸發矩陣(CTM)和交叉觸發介面(CTI)組成。

一個或多個CTM組成一個具有多個頻道的廣播網路,一個CTI在一個或多個通道上監聽某一事件,將接收到的事件對映到觸發器,然後將觸發器傳送到一個或多個與CTI相連的CoreSight元件中。CTI也可以組合和對映來自多個CoreSight元件的觸發器,並將其作為事件在一個或多個頻道中廣播。

在PS-PL Configuration中的PS-PL Cross Trigger Interface中可以啟用該功能:
在這裡插入圖片描述


Zynq中的PL部分

我相信不少人在沒接觸Zynq前會產生這樣的疑問:Zynq能否當作一個純FPGA來使用?答案當然是可以的。如果不用Zynq中的ARM處理器,則開發流程與7系列FPGA完全相同。但Zynq的快閃記憶體介面是與PS部分相連的,因此我們不能將“純FPGA”程式固化到板子上,必須由處理器來引導。
Zynq中的可程式設計邏輯部分(PL)採用的也是與7系列相同的架構,下面還是給出其中包含的資源種類:

  • 可配置邏輯塊(CLB),包含帶有儲存功能的6輸入查詢表(LUT)、暫存器與移位暫存器功能、可級聯的加法器。
  • 36Kb的塊RAM,雙埠,最高支援72bits位寬,可配置為雙18Kb,帶有可程式設計的FIFO邏輯電路和內部錯誤糾正電路
  • 數字訊號處理DSP48E1 Slice單元,12×18的2進位制補碼乘法器、累加器,高解析度(48bit)的訊號處理器,帶有25-bit的預加器以優化對稱結構濾波器應用。此外還包括可選的流水線、ALU和專用級聯匯流排等高階特性。
  • 時鐘管理單元,超高速緩衝器與低斜率時鐘分佈的佈線,實現頻率綜合和相移功能,產生低抖動時鐘,還帶有抖動濾波。
  • 可配置I/O,基於高效能SelectIOTM技術,封裝內有高頻去耦電容,以增強訊號完整性;數控阻抗,可配置為三態以實現最低功耗,或滿足高速I/O操作;HR(大範圍) I/O支援1.2V到3.3V;HP(高效能)I/O支援1.2V到1.8V,如7z030、7z045、7z100系列。
  • 模數轉換器XADC,雙12-bit、1MSPS,多達17個靈活的、使用者可配置的模擬輸入,可用於片內或片外測量。帶有片內溫度感測器(±4℃)和電源供應感測器(±1%)。通過JTAG可獲取ADC測量結果。

除了這些基本單元,7z030、7z045、7z100等高階器件內部還整合了低功率的Gbit收發器、PCI-E介面。

根據上文的實驗,我們知道在用SDK進行軟體設計前先要在IP Integrator中完成硬體設計。設計者可以使用IP Packager工具將自己的設計封裝為IP,匯入到IP Catalog中,之後便可以在設計中呼叫該IP。

相關文章