Zynq开发I
在这篇博客中涉及zynq开发的入门环节:MIO、EMIO、调用自定义IP
我使用的zynq型号为zynq-7020,相比7010和7000,拥有较多的可编程逻辑资源
MIO
介绍
Zynq7000 系列芯片有 54 个 MIO(multiuse I/O),它们分配在GPIO的Bank0和Bank1,隶属于PS部分,这些 IO 与 PS 直接相连。不需要添加引脚约束,MIO 信号对 PL 部分是透明的,不可见。
所以对 MIO 的操作可以看作是纯 PS 的操作。即与单片机直接控制GPIO类似,只需配置一些寄存器即可。
通过查阅zynq编程手册ug585(可从xilinx官网下载)可得,GPIO 的控制和状态寄存器基地址为: 0xE000_A000,vivado SDK 软件底层操作是对于内存地址空间的,所以进行 PS 与 PL 交互时,需要经常查阅zynq的相关手册来获得所需要的寄存器地址。
如图所示为MIO的内部构造
DATA_RO: 此寄存器使能软件观察 PIN 脚,当 GPIO 被配置成输出的时候,这个寄存器的值会反应输出的 PIN 脚情况。
DATA:此寄存器控制输出到 GPIO 的值,读这个寄存器的值可以读到最后一次写入该寄存器的值。注意这个寄存器是用来读的。
MASK_DATA_LSW:位操作寄存器,写入 GPIO 低 16bit 其他没有改变的位置保存原先的状态
MASK_DA