FPGA学习5-PL和PS互联

1、GPIO外设

1)EMIO

部分寄存器参考UG1085,BAKN0-BANK2为MIO78个,BANK3-BANK5 EMIO(扩展接口,再PL端)96个,IO配置里设置EMIO,生成cpu核上点击多出的GPIO_0端口右键选择Make External,将端口信号导出。点击引脚并修改引脚名称。保存设计。

 

点击 xx.bd 右键选择 Generate Output Products,重新生成输出文件,顶层文件会更新出新的管脚,通过约束文件进行引脚绑定(端口名称一定要和顶层文件端口一致)。编译生成bit文件

 打开vitis软件,建立工程,通过example进行设置,找到对应EMIO号,调整软件设计,再生成文件下载。

2)AXI_GPIO IP核

vivado的block工程,新增一个GPIO的IP核,双击的“axi_gpio_0”配置参数,设置宽度,勾选enable dual channel可以设置GPIO2

 点击“Run Connection Automation”,可以完成部分自动连线,选择要连接的端口,点击OK

 点击“Optimize Routing”,优化布局,此时多了两个模块,一个是 Processor System Reset模块,提供同一时钟域的复位信号。另一个是AXI Interconnect 模块 为AXI总线互联模块,用于AXI 模块的交叉互联。出现了ZYNQ的 HPM0_LPD 口,此总线为PS访问 PL 端数据,复位信号由ZYNQ 的复位输出提供,最好是每个时钟域都加一个复位模块,可以根据模块下面的名称搜索添加IP核。

 点击多出的GPIO端口右键选择Make External,将端口信号导出,在框中修改名称,

上面设置一个IP核一个端口,可以多个设置IP核增加不同的GPIO,如果需要连接外部中断,受灾在GPIO核上勾选使能中断,再双击CPU核,增加PL-PS的设置中断。用线互联

 保存设计,点击xx.bd,右键Generate Output Products

 注意查看生成的Verilog文件,看名字,要与约束文件中名字一致,点击generate,生成应硬件文件导出,打开vitis。

2、自定义IP

vivado里点击菜单“Tools->Create and Package IP...”挂在AXI4上,设置名称核存储位置。

指定接口类型、寄存器数量等,使用 AXI Lite Slave 接口4 个寄存器。点击OK

 

需要修改IP,选择IP,右键Edit in IP Packager,可以填写工程名称和路径,这里默认,点击“OK”此时Vivado 又另外打开了一个新的工程, 添加核心代码(add source)。

 新建或者添加已有的代码

 顶层文件内添加一个输出口,下面代码中在例化“ax_XX_V1_0_S00_AXI,中添加要输出端口的例化,修改“ax_xx_v1_0_s00_AXI.v”文件,添加 相同输出端口,这个文件是实现AXI4 Lite Slave

的核心代码(如端口表内;output wire led),在这个文件后面例化自制的verilog代码(下面有//add user logic here 区域)时钟S_AXI_ACLK,复位S_AXI_ARESETN,slv_reg0核slv_reg1为寄存器。

 双击“component.xml”文件,找到没有对号的file groups栏,点击merge changes from groups wizard,在“Customization Parameters”选项中点击“Merge changes form Customization Parameters(没有对号都点一遍)

Wizard

 点击“Review and package”里的“Re-Package IP完成 IP的修改

 添加自定义IP 到工程,点击“+”,搜索IP名称,双击,弹出框,点击Run Connection Automation,自动完成连接。导出输出端口,保存设计,并Generate Output Products

 添加xdc文件分配管脚,与硬件上一致,编译生成 bit 文件,导出硬件

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


版权声明:本文为udddhu原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。