Xilinx_ZYNQ7Z020——5. PS和PL简单结合
文章目录
5. PS和PL简单结合
- 使用zynq 最大的疑问就是如何把 PS 和 PL 结合起来使用,在其他的 SOC 芯片中一般都会有 GPIO
- 本实验使用一个 AXI GPIO 的 IP 核,让 PS 端通过 AXI 总线控制 PL 端的 LED 灯
- 实验虽然 简单,不过可以让我们了解 PL 和 PS 是如何结合的
创建工程
- 建立一个名为“ ps_axi_led Vivado 工程,表示 PS 通过 AXI 总线控制 LED 灯
- 创建一个 Block 设计
- 添加 ZYNQ 处理器
UART配置:
- 配置 Bank1 电平标准 为 LVCMOS 1.8V
- 如果不配置 Bank1 电平标准,可能导致串口无法接收
- 使能串口 ,使用 MIO48 MIO49
![]()
DDR3配置
- AX7010 配置 DDR3 型号为“ MT41J128M16 HA 125
- AX7020 配置 DDR3 型号为MT41J256M16 RE 125
- 这里 ddr3 型号并不是板子上的 ddr3 型号,而是参数最接近的型号
![]()
设置时钟
- 添加一个 AXI GPIO 的 IP 核
添加AXI GPIO
- 双击刚才添加的“ axi_gpio_0 ”配置参数
![]()
- 选择“ All Outputs ”,因为这里控制 LED ,只要输出就可以了 GPIO Width ”填 4 ,控制 4颗 LED ,点击 OK
![]()
- 点击“ Run Connection Automation ”,可以完成部分自动连线
![]()
- 选择要自动连接的端口,这里全选,点击 OK
![]()
- 点击“ Run Block Automation
![]()
- 点击“ OK
![]()
- 点击“ Optimize Routing ”,可以优化布局
![]()
- 修改 GPIO 端口的名称
![]()
- 名称修改为 leds
![]()
- 创建 HDL 文件
![]()
- 点击“ OK
![]()
- Generate Output Products
![]()
- 在生成的 Verilog 文件中,可以看到有个“ leds_tri_o ”的输出端口 ,要为他们分配管脚
![]()
XDC文件约束PL管脚
- 综合
- 实现
- 生成 bit 文件
- 导出硬件(File-export-export hardware)
- 因为要用到 PL ,所以 选择“ Include bitstream ”,点击 OK
- 运行 SDK
- 创建一个名为“ axi_led ”的 APP ,工程模板 选择 Hello World
- 双击“ system.mss 找到“ axi_gpio_0 这里可以点击“ Documentation ”来看相关文档,点击“ Import Examples’’
- 里面用到很多GPIO 相关的 API 函数,通过文档可以了解详细,也可以选中该函数,按F3 ”查看具体定义 。如果有了这些信息你还不能理解如何使用 AXI GPIO ,说明你需要补充 C语言基础
下载调试
- 修改代码让 2 个 LED 灯都闪烁