本文主要介绍ZYNQ PS + PL异构多核案例的使用说明,适用开发环境:Windows 7/10 64bit、Xilinx Vivado 2017.4、Xilinx SDK 2017.4。
案例包含PL端Vivado工程,主要使用Xilinx提供的标准IP核配置PL端资源实现接口扩展,同时包含PS端裸机/Linux程序、PL端MicroBlaze应用程序。
案例使用Block Design + Verilog语言方式进行开发,可在Vivado界面点击"IP INTEGRATOR -> Open Block Design"打开BLOCK DESIGN开发界面。

8a9f7fac9b5c869a597eb3af964efd57.jpg
图 1
可点击"Sources -> Constraints",双击打开.xdc约束文件。

0bbf5af6e826412c17fcb9c1600eb6a8.jpg
图 2
处理器硬件资源详细开发说明可查阅产品资料“6-开发参考资料\数据手册\核心板元器件\ZYNQ\”目录下的《ug585-Zynq-7000-TRM.pdf》文档。
视频相关案例说明,请查阅视频案例开发手册。
1 axi_gpio_led_demo案例
1.1 案例功能
案例功能:PS端通过AXI4-Lite总线发送命令至PL端AXI GPIO IP核,IP核再根据命令控制评估底板PL端LED5的状态

924c0d1a3a5865ce9430264fdf51fedd.jpg
图 3
1.1 操作说明
1.2.1 基于裸机测试
加载PS端裸机程序、PL端程序后,即可看到评估底板的LED5每隔0.5s亮灭一次。
1.2.2 基于Linux测试
将本案例的动态设备树镜像文件pl.dtbo和PL端.bin格式可执行文件复制到"/lib/firmware/"目录下,并将PL端可执行文件重命名为system_wrapper.bin,然后执行如下命令加载设备树文件和PL端可执行文件。
Target# mount -t configfs configfs /configfs
Target# mkdir /configfs/device-tree/overlays/full
Target# echo pl.dtbo > /configfs/device-tree/overlays/full/path

67cc236ddb82d23490c4c4038475cdcb.jpg
图 4
由上图可知PL端实现的GPIO控制器为905。
请执行如下命令,配置GPIO为输出模式。
Target# ls /sys/class/gpio/
Target# echo 905 > /sys/class/gpio/export
Target# echo out > /sys/class/gpio/gpio905/direction

1b593f395526c04a6aae53e978e06931.jpg
图 5
执行如下命令,即可控制评估底板LED5的亮灭。
Target# echo 1 > /sys/class/gpio/gpio905/value
Target# echo 0 > /sys/class/gpio/gpio905/value

e0443e56d851b97082e46d7ea9ee5cba.jpg
图 6
1.1 Vivado工程说明
进入BLOCK DESIGN开发界面,双击IP核框图,可查看IP核的具体配置信息。

edd281202e0e672284f4c61c7e3b7b7a.jpg
图 7
点击BLOCK DESIGN开发界面下的"Address Editor"选项,可查看IP核分配的地址为0x41200000,PS端可通过该地址对IP核进行控制。

8e9ca0bc6f1d606b9cc94b4b6e317654.jpg
图 8
1.2 IP核配置
AXI GPIO IP核开发文档为产品资料“6-开发参考资料\Xilinx官方参考文档\”目录下的《pg144-axi-gpio.pdf》。根据文档,通过寄存器GPIO_TRI可将GPIO配置为输入/输出模式;通过寄存器GPIO_DATA可将GPIO配置为高/低电平,以及可读取GPIO的电平状态。

5c65154b8ace0a33acf3ec1e9a678649.jpg
图 9

f49a02865cec8ed26281dc54a097dc72.jpg
图 10

7df44cf706518ca83d5cf71489541b37.jpg
图 11

#核心板#