3.EMIO控制LED
基于野火zynq7020开发板,通过 EMIO 实现 PL 端按键控制 PS 端 LED 的亮灭,实现 LED 闪烁的效
果
3.1基础知识
3.1.1 名词解释
1.GPIO 通常指的是最原始的 ps端或pl端的 I/O 口
2.GPIO MIO 通常被称作 MIO ,是连接 PS端 I/O 口 和外设的 重要桥梁
3.GPIO EMIO通常被称作EMIO,是连接PS端和PL的重要桥梁
关于GPIO的解释 之前B站看到一个讲的特别生动形象的https://www.bilibili.com/video/BV1Q7411s7Jr/spm_id_from=333.880.my_history.page.click&vd_source=02b360bce660102430002f218fd1c06c
3.1.2 EMIO详解
如图 3-2,MIO 是 I/O 外设连接的基础。软件编程 I/O 信号到 MIO 引脚的路由。I/O 外设信号也可以通过 EMIO
接口路由到 PL (包括 PL 设备引脚)。
如图 3-3,PS 端通过 EMIO 可以直连PL 端的 I/O 资源,或者连接到 PL 端已实现的 IP 核.
MIO 是外设的基础引脚而且与外设是固定搭配的,像串口,以太网这些都是固定好电路的,所以我们不需要引脚绑定。
而 EMIO 是 PL侧的任意可配置多功能引脚,引脚是灵活可以任意绑定的,所以使用 EMIO 需要引脚绑定!!!!!!!!(这个引脚绑定是后面硬件设计的铺垫)
EMIO虽然可以对引脚进行灵活的绑定,但并不是指所有的外设都 可以连接到 EMIO,具体的外设路由表可以参考官方手册 ug585。
EMIOBank 的寄存器接口与前面描述的 MIO Bamk 几乎相同。然而,EMIO 只是 PS 和 PL 之间的连接接口,所以有些许的差异:
(1) 输入是来自 PL 端,与当前的输出值和 OEN 寄存器无关,当 DIRM 配置为 0 就是输入,可以用 DATA_RO 寄存器读取当前的值。
(2) 输出和 DATA MASK_DATA_LSW MASK_DATA_MSW 的编程有关,输出不支持三态,与 OEN 的值无关。
(3) 输出使能直接来自 PS 端的输出使能 也就是 EMIOGPIOTN 受 DIRM 和 OEN 控制 EMIOGPIOTN[x] = DIRM[x] & OEN[x]。
上面所说的差异是指 PS 到 PL 之间的信号,并非 PL 端到外设引脚的信号。PL 到外设的引脚信号是支持三态的,如图 3-4
3.2硬件设计
3.2.1 Step1:新建 vivado 工程
1.在mio_原基础上创建工程(File > Project > Save As + 重命名)
打开《MIO 控制 LED》章节“gpio mio” 实验 vivado 工程。打开后在菜单栏中选择
File > Project > Save As,单击选择后,在弹出的对话框里,把工程名字修改为 gpio_emio,
然后点击 “OK” 如下图所示
2.同时删除之前的sdk文件(Delete)
3.2.2 Step2: 配置硬件(这次其实就是在配置EMIO)
1.打开块设计,双击IP核