Zynq 7000的3種IO


概念

MIO

MIO:多功能IO接口(分配在 GPIO 的 Bank0 和Bank1),屬於Zynq的PS部分,在芯片外部有54個引腳。這些引腳可以用在GPIO、SPI、UART、TIMER、Ethernet、USB等功能上,每個引腳都同時具有多種功能,故叫多功能。這些 IO 與 PS 直接相連。不需要添加引腳約束,MIO 信號對 PL部分是透明的,不可見。所以對 MIO 的操作可以看作是純 PS 的操作。

// xparameters.h
#define XPAR_PS7_GPIO_0_DEVICE_ID 0
#define XPAR_PS7_GPIO_0_BASEADDR 0xE000A000
#define XPAR_PS7_GPIO_0_HIGHADDR 0xE000AFFF

GPIO 的控制和狀態寄存器基地址為:0xE000_A000,我們 SDK 下軟件操作底層都是對於內存地址空間的操作。
一個GPIO端口至少需要兩個寄存器,一個控制用的通用IO口控制寄存器和一個存放數據的通用IO端口數據寄存器。
GPxCON寄存器為控制寄存器,它的每一位對應一個引腳,其某位設為0,相應的引腳為輸出引腳,為1時為輸入引腳。
GPxDAT為數據寄存器,當引腳設為輸入時,讀此寄存器可以知道相應的引腳的電平狀態為高還是低,當引腳設為輸出時,寫此寄存器可令此引腳輸出為高電平或者低電平。

Bank0有32個MIO引腳,Bank1有22個MIO引腳,54個引腳直接通過MIO連接到PS上,不需硬件配置,直接使用SDK軟件進行編程。

EMIO

EMIO:Extend multiuse I/O,分布在BANK2、BANK3,依然屬於Zynq的PS部分,只是連接到了PL上,再從PL的引腳連到芯片外面實現數據輸入輸出。當我們想通過PS來訪問PL又不想浪費AXI總線時,就通過EMIO接口來訪問。在54個I/O中,有一些只能用於MIO,大部分可以用於MIO與EMIO,一些接口信號線只能通過EMIO訪問。

下圖為Vivado工程里ZYNQ CPU核配置,確保EMIO勾選,設置了多少位位寬,即為其分配了多少個管腳,再添加管腳約束文件,指向相應的PL部分管腳。

EMIO設置

設置好以后以GPIO的形式呈現在ZYNQ IP 核上

EMIO依然屬於PS,只是連接到了PL,再從PL輸出信號。

Q:如何理解這句話?

A:相當於說,點亮PS的對應的控制器,但是此時的外部引腳是不確定的;必須通過PL端進行管腳約束,才能知道這個控制器的外部引腳連到了哪里。

換句話說,PS控制了時序,PL端提供了引腳。

AXI_GPIO

AXI(Advanced eXtensible Interface)是一種總線。

AXI_GPIO相當於GPIO的IP核,是通過AXI總線掛在PS上的GPIO上。

AXI_GPIO IP核

EMIO的使用例程

以雙串口為例:

實現功能:

① 實現數據直接從PS的MIO口接收與發送

② 通過PL口實現數據的接收與發送

③ 實現數據的雙串口接收與發送(即PS可同時從兩個UART口接收或發送數據)

新建工程——創建block design——添加Zynq ps IP——預設為Zedboard板

可以看到UART1 的48、49 MIO接口被選中(如下圖)

img

回到Peripheral I/OPins選項,勾選UART0,可以看到EMIO框框變亮

img

點擊ok,此時的Zynq ps IP中,UART0已經添加,其中一個接收(UART0_RX),一個發送(UART0_TX)

img

接下來對UART0_RX、UART0_TX作約束

約束到Zedboard板的Pmod口上(本例中使用JA口進行擴展)約束文件如下:

set_propertyPACKAGE_PIN Y11 [get_ports UART0_RX]

set_propertyPACKAGE_PIN AA11 [get_ports UART0_TX]

set_propertyIOSTANDARD LVCMOS33 [get_ports UART0_TX]

set_propertyIOSTANDARD LVCMOS33 [get_ports UART0_RX]

生成比特流,進行SDK開發

此時便可從Pmod的JA1口和JA2口進行串口數據的接收與發送,實現從PL讀取接收數據。

讀取接收到的數據通過SDK編程實現在PS中處理數據,之后我們可以添加其它外設IP,用PS中處理后的數據控制外設IP。

參考

ZYNQ 的三種GPIO :MIO、EMIO、AXI_GPIO

基於Zynq的MIO與EMIO的區別和應用

ZYNQ筆記(3):GPIO的使用(MIO、EMIO)——led燈


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM