ZYNQ防火墙开发7-PS-PL通信-AXI-LED

PS和PL通信机制

image-20240323150812473

​ 从PS 出来有几种连接可以经由 PL 到外部接口上,这被称作扩展的 MIO (Extended MIO),即 EMIO。 EMIO 涉及到两个域之间的信号传输,是由一组简单的导线连接实现的,因此, EMIO 并不支持所有的 MIO 接口,而支持的那些中,也有些的能力受到了限制 [33]。 这些连接被安排成两个 32 位的组。 很多情况下,经由 EMIO 的接口是直接连接到所需的 PL 的外部引脚上的,这个连接是由一个约束(描述)文件中的条目所指定的。在这个模式下,EMIO 可以实现额外的 64 个输入线和 64 个带有输出始能的输出线。另一个选择是用 EMIO 来连接 PS 和 PL 里的外设模块,就是用于连接PL内实现的功能模块(IP核),此时PL端的IP作为PS端的一个外部设备。图 2.10 描绘了这两种使用模式。

Screenshot_20240405_114738

Screenshot_20240424_140715

1创建Vivado工程

\1) 具体步骤 新建一个VIVADO 工程,打开软件 选中Create Project, 如下图所示

img

2)点击NEXT ,在出现的第二个对话框“Project name”中输入工程名;在“Project location”中选择保存路径;勾选“Create project subdirectory”,最后点击“Next” 备注,所有的路径均不能出现中文名称

img

3)点击 RTL PROJECT 选项,点击NEXT

img

4) 第四步Add Sources 选项直接留空,NEXT

5)第五步Add Constraints 选项直接留空,NEXT

6)选择芯片型号 我们板子上用的芯片是XC7Z010 ,并在列表栏中选择对应的封装型号,完整型号是XC7Z010CLG400-1 如下所示,选中后点NEXT

img

7)确认所选信息 点击“Finish”,完成vivado的工程创建

img

2 创建一个BLOCK设计

1)IP INTEGRATOR→Create Block Design,在弹出的对话框中输入设计名,最后点击“OK”,如下图所示

img

2)在右侧的窗口里 ,点击加号,在选择框里搜索ZYNQ,并找到ZYNQ7 PROCESSING SYSTEM ,双击并打开

img

3)软件自动生成了一个 zynq的block 如下图所示,接下来要做一些相应的设置,双击下图中的ZYNQ核

img

4)依次在弹窗里找到DDR Configuration→DDR Controller Configuration→DDR3,在Memory Part下拉菜单中根据自己板子上的DDR来选择相应的DDR3,本实验所用到型号:MT41K128M16JT 125,数据位宽选择16bit 最后点击“OK”,如下图所示。

img

最后 点击“Run Block Automation”如下图所示。在弹出的选项中保持默认,点击“OK”,即可完成对ZYNQ7 Processing System的配置

img

5)再用同样的方法增加GPIO资源 点击加号,在设置里搜索GPIO并添加,然后双击并打开生成的GPIO资源进行设置

img

6)在GPIO的设置栏里将输入输出属性改成全部输出ALL Outputs ,因为我们板子上只有3个LED灯,所以将GPIO Width位宽设置成3位,点击OK

7)点击 上方的Run Connection Automation ,并将GPIO 和S_AXI前面的勾都选中,如下图所示 点击OK

img

8)软件将自动帮我们完整所有必要的连线,以及添加必要的模块

img

9)在框图中双击GPIO输出的管脚,并重新命名为LED,方便后面软件编程

img

10)source→Design Source ,右键我们创建的BLOCK工程,点击create HDL wrapper如下图所示。

img

在弹出的对黄框里保持默认

img

软件自动为我们生成HDL文件

img

3.创建约束文件,并且定义管脚

1)Add Source → Add or create constraints 点Next

img

因为这个项目没有创建过约束文件 所以这里创建一个约束文件,并在File name 里设置约束文件的名称,并且点击FINISH 完成约束文件的创建

img

2)Sources → Constraints 里找到刚才创建的约束文件 双击并打开该XDC约束文件

img

在约束文件里面复制下面代码来对输出的GPIO进行管脚(所有的管脚转接板上丝印都有实际标注对应的IO)

1
2
3
4
5
6
7
set_property IOSTANDARD LVCMOS33 [get_ports LED_tri_o[0]]
set_property IOSTANDARD LVCMOS33 [get_ports LED_tri_o[1]]
set_property IOSTANDARD LVCMOS33 [get_ports LED_tri_o[2]]

set_property PACKAGE_PIN H18 [get_ports LED_tri_o[0]]
set_property PACKAGE_PIN K17 [get_ports LED_tri_o[1]]
set_property PACKAGE_PIN E19 [get_ports LED_tri_o[2]]

4.生成bit文件

按下绿色箭头对工程进行编译

img

按下Generate Bitstream 完成综合以及生成bit文件

img

5.SDK程序编写

1)File→Export→Export hardware…,在弹出的对话框中勾选“include bitstream”,点击“OK”确认,如下图所示。

img

img

2)File→Lauch SDK,在弹出的对话框中,保存默认,点击“OK”,如下图所示。

img

系统将自动打开SDK开发环境

img

3)新建一个工程 file→new→Application Project,来新建一个“Application Project”,如下图所示。

img

4)在新建工程名中输入自己的工程名称,点击NEXT

img

5)选择空工程,点击完成FINISH

img

6)选择创建的LED_CODE_bsp → system.mss → axi_gpio_0 gpio → import Examples

img

7)选择 xgpio_example

img

8)这样系统就自动创建了一个参考例程

img

6.下载到板子上进行验证

选中工程中的硬件平台,并点击右键→Program FPGA,在弹出的对话框中选择默认,点击“program”,完成FPGA PL部分的Program工作

img

img

2)选中我们生成的GPIO工程 展开绿色箭头(RUN)右边的图标,选择Run As→1 Launch on Hardware(System Debugger)

img

可以看到板子上的LED1灯在闪烁

![](ZYNQ防火墙开发7-PS-PL通信-AXI-LED/Peek 2024-04-06 16-46.gif)

参考:

EBAZ4205转接板资源汇总 (黑色现款)

FPGA设计中,zynq三种实现GPIO的方式


ZYNQ防火墙开发7-PS-PL通信-AXI-LED
http://witbit.cn/视频课程/FIREWALL_GATEWAY/ZYNQ防火墙开发7-PS-PL通信-AXI-LED.html
作者
朝彻
发布于
2025年2月13日
许可协议