ZYNQ嵌入式学习(3)
使用ZYNQ底板上的三个用户按键分别控制三个LED的亮灭,其中一个按键要通过EMIO进行扩展。
EMIO简介
EMIO是PS和PL之间的一个接口。
EMIO是扩展的MIO,当PS的引脚不够用时,可以通过EMIO来进行扩展,从而使用PL的引脚。
不是所有的PS外设都能通过EMIO连接到PL端。如SMC(静态存储器控制器)、Qaud-SPI、USB都不能通过EMIO连接到PL的引脚。
GPIO通过EMIO连接到PL的引脚
GPIO的Bank0和Bank1(共54个)通过MIO连接到PS的引脚,Bank2和Bank3(共64个)通过EMIO连接到PL的引脚。
GPIO的Bank通过EMIO连接到PL时,分为了3组信号:输入、输出和输出使能。三组信号都连接到PL。
EMIO和MIO信号的差别
- 对于EMIO来说,输入是直接连接到PL,输入和输出的值以及OEN寄存器无关。而对于MIO来说,当MIO作为输出时,其输入的值和输出的值一致。
- 对于EMIO来说,其输出并不是三态使能信号,所以输出的值和OEN无关。而MIO作为输出时,如果OEN打开,则确实为输出,如果OEN关闭,则处于高阻态。
- OEN信号的用法:输出使能信号仍然有用,直接将其从PS连接到PL,具体OEN怎么用,可以完全由PL的逻辑所决定。EMIOGPIOTN[X] = DIRM[X] & OEN[X]。输出使能信号由控制方向的DIRM和OEN共同决定。
对于MIO,OEN决定了输出信号是作为输出还是高阻态。对于EMIO,OEN信号并不决定输出的值是输出还是高阻态,而是把它直接送到PL,然后由PL的逻辑来决定如何使用。
虽然GPIO里的EMIO的输出不支持三态,这是说EMIO输出到PL中的信号不支持三态。
如上图,GPIO通过EMIO输入到PL中的output信号肯定不支持三态,但一起送来的还有OEN信号,以及PL到PS的Input信号,可以通过PL的逻辑来对OEN、output、input信号进行组合实现三态。