我们把ZYNQ7芯片的PS部分单独看作一个芯片更好理解一些。那么PS“这个芯片”的GPIO如上图所示分为4个bank。
MIO
bank0与bank1共54个IO,这个54个IO统称为MIO(Multiuse I/O),译为多用途的IO。MIO直接引到了zynq芯片外部,直接与PCB板上的外设连接。
这54个IO都能当普通IO来控制,还可以选择使用为某种专用接口,灰色部分是有限制的,蓝色部分是用户可以任意选的。
MIO可以用作各种接口,非常方便。硬件、驱动程序都是现成的,只需在VIVADO中设置勾选就行。并且与PL部分无关,也连不过去,不需要进行引脚约束。
EMIO
PS部分的bank2和bank3共64个IO,统称为EMIO(Extended MIO),译为可扩展的MIO。EMIO只扩展连接到了PL部分,不能直接引出ZYNQ芯片到PCB。
从这张图中可以看出,除了QSPI、USB、SMC(Static Memory Controller)以外,PS内所有的外设驱动都可以连到EMIO,所以EMIO也是多功能的。
注意以太网接口EMIO为125M时钟(GMII),MIO为250M时钟(RGMII)。
既然EMIO不能直接引到ZYNQ芯片外部,而是引到了PL部分,这就需要对PL部分的引脚进行约束了,和传统的FPGA是一样的。
所以EMIO是PS与PL交互的一种方式。
为了彻底搞清楚MIO和EMIO的区别,我们实际操作一下:
MIO的电平标准选择LVCMOS 3.3V,电平是可以选择1.8V、2.5V、3.3V的,继承了FPGA的优点,非常方便。
上图中我们对PS部分进行了设置,勾选了两个UART,UART0使用MIO,UART1使用EMIO。设置好后PS长这样:
从上到下分别是DDR、FIXED_IO、UART_1,这个UART_1就是EMIO的两个pin,只有它是需要进行引脚约束的。
把加号展开如下:
DDR引脚直连PCB板上的DDR芯片。FIXED_IO也是直连PCB上的外设,FIXED_IO包含了MIO。