本文介绍一个FPGA 开源项目:PCIE I/O控制卡。上一篇文章《FPGA优质开源项目– PCIE通信》开源了基于FPGA的PCIE通信Vivado工程,用于实现上位机通过PCIE接口访问FPGA的DDR3以及RAM内存数据。PCIE I/O控制卡工程是在上一个工程的基础上进行了部分模块和参数的修改。
下面围绕FPGA PCIE I/O控制卡通信方案以及Vivado BD工程的创建进行简要介绍。
01软硬件平台
02通信方案
系统通信方案如下图所示。PC上位机端通过PCIE接口与FPGA连接,FPGA端通过XDMA模块的AXI4总线实现对DDR3的读写,通过AXI4-Lite总线实现对多个GPIO外设的控制。其中AXI SmartConnect模块可用于自动完成XDMA与多个GPIO模块的通信仲裁,以及不同时钟域、不用数据位宽自动转换。
03创建Vivado BD工程
Vivado BD工程的创建可在上一个PCIE通信工程的基础上完成。首先,删除AXI BRAM Controller 以及RAM模块:
然后,依次添加两个AXI GPIO模块。将axi_gpio_0配置为 All Outputs ,位宽根据实际情况选择,这里配置为 4bits 。
将axi_gpio_1配置为 All Inputs ,位宽根据实际情况选择,这里同样配置为 4bits 。
XDMA IP核参数配置:
其它参数配置可参考上一篇文章中的介绍。
04Vivado BD工程结构
下图为最终创建好的Vivado BD工程。同样的,本工程虽然是基于Zynq平台建立,但实际只用到了PL端资源。
地址配置如下图所示:DDR3初始地址偏移配置为0,AXI_GPIO_0初始地址配置为0x44a3_0000,AXI_GPIO_1初始地址配置为0x44a4_0000,与XDMA中地址偏移保持一致即可。
05实现功能
该Vivado工程实现了基于FPGA的PCIE I/O控制卡功能。FPGA端把AXI_GPIO地址映射到BAR地址空间,上位机端通过PCIE总线读取FPGA端GPIO1 I/O口输入状态信息,以及控制GPIO0 I/O口输出信息。
全部0条评论
快来发表一下你的评论吧 !