1、GP接口简介

GP接口是ZYNQ-7000系列器件中用于实现PS与PL端进行数据通信的数据接口,GP接口传输数据速率一般较慢,通常用作控制信息的传输,在利用GP接口的时候,PS端的角色是Master,PL端为Slave,此时PS端传送控制信息控制PL端进行相应操作。整个PS端PL端利用GP接口进行数据交换的示意图如下图所示:

寄存器数量为4-512个,寄存器位宽为32位。

2、GP接口创建流程

  • 打开vivado软件,菜单栏选择Tools->Create and Package New IP

  • Next->Create AXI4 Peripheal->Next

  • 修改名字,选择IP保存位置,修改完毕后然后Next

  • 根据需求修改寄存器数量,其他设置保持默认设置,然后Next

  • 选择Add IP to the repository,然后Finish

  • 创建完成后,Vivado会自动生成Verilog代码,用户可以根据自己需要在如下图所示位置添加用户代码。

  • 在添加好自己的用户代码后,可以创建一个顶层文件,把刚才生成的IP文件例化,然后包起来形成一个用户IP,步骤为Tools->Create and Package New IP->Next->Package your current project

  • 然后一路Next直至Finish。

3、GP接口的使用

在这里我简单的使用了GP接口,实现了PS和PL简单的数据交流,首先我们创建了GP接口,寄存器数量为4个,主要实现的功能就是,PS通GP接口向四个寄存器里面分别传送长度为32位的数据,PL将reg0,reg1,reg2的高16位分别按位异或赋值给reg3的高16位,reg3的低16位为从PS端接收的数据保持不变,同时PS端对这个四个数据做相同的操作,比较两个结果是否相同,如果相同表示该过程实现,同时将四个寄存器的各个比特位异或结果用于点亮LED灯。Vivado中创建的块设计如下图所示:

PS端的代码如下图所示:

#include <stdio.h>
#include "platform.h"
#include "xil_printf.h"
#include "xparameters.h"#define REG_0 (*(volatile unsigned int *)(XPAR_GP_DEMO_V1_0_0_BASEADDR+0))
#define REG_1 (*(volatile unsigned int *)(XPAR_GP_DEMO_V1_0_0_BASEADDR+4))
#define REG_2 (*(volatile unsigned int *)(XPAR_GP_DEMO_V1_0_0_BASEADDR+8))
#define REG_3 (*(volatile unsigned int *)(XPAR_GP_DEMO_V1_0_0_BASEADDR+12))int main()
{init_platform();//xil_printf("Hello World\n\r");REG_0=0x0AAA0880;REG_1=0x0A3B12F4;REG_2=0x12368F78;REG_3=0xECD54321;unsigned int expected_result= ((REG_0^REG_1^REG_2) & 0xFFFF0000) | (REG_3 &0x0000FFFF);xil_printf("ARM_REG_3_Result=%x\n",expected_result);xil_printf("FPGA_REG_3_Result=%x\n",REG_3);cleanup_platform();return 0;
}

结果通过串口打印如下所示,从结果可以看出PS端和PL端运算的结果完全相同,测试通过。

基于ZYNQ-7000的AI加速器设计之GP接口的实现相关推荐

  1. 【基于zynq的卷积神经网络加速器设计】(一)熟悉vivado和fpga开发流程:使用Vivado硬件调试烧写hello-world led闪烁程序实现及vivado软件仿真

    HIGHLIGHT: vivado设计流程: note: 分析与综合 和 约束输入 可以调换顺序 [基于zynq的卷积神经网络加速器设计](一)熟悉vivado和fpga开发流程:使用Vivado硬件 ...

  2. 基于ZYNQ 7000的1553B总线控制器测试系统的设计与实现

    为了方便对1553B设备进行测试,本文介绍了一种基于ZYNQ 7000 平台的1553B总线控制器测试系统的设计与实现方法.该系统首先在 PC机上通过人机交互界面配置数据,支持灵活对数据故障注入,然后 ...

  3. 基于ZYNQ+AD9361的软件无线电平台设计与实现 (2)

    基于ZYNQ+AD9361的软件无线电平台设计与实现(1) 1 评估板简介 信迈科技 XM-ZYNQ7045-EVM 是一款基Xilinx Zynq-7000 系列 XC7Z045/XC7Z100 高 ...

  4. 基于ZYNQ-7000的AI加速器设计之PS端(ARM)网络编程(TCP协议)

    前注:ARM端的TCP协议编程步骤和UDP协议编程步骤完全相同,只是在ARM端的C代码实现不同,在本次TCP协议实现过程中我们主要利用了官方提供的Demo,然后根据自己的需要加以改写,具体过程如下. ...

  5. 基于ZYNQ-7000的AI加速器设计之PS端(ARM)网络编程(UDP协议)

    1.开始前的准备工作 关闭电脑防火墙 连接开发板电源 开发板与PC之间串口连接,JTAG下载线连接 PC机与开发板间网线连接,并保证能ping通 2.Vivado端配置 创建工程,具体步骤不详细介绍, ...

  6. 基于ZYNQ+AD9361的软件无线电平台设计与实现

    所谓软件无线电,它是一种以通用硬件平台为基础,以自定义软件为核心,来实现各种无线通信系统功能的一种体系和技术.从字面上看,"软件无线电"这个词并不深奥."无线电" ...

  7. 基于 Sodor 的矩阵乘法加速器设计之C++

    实现两个矩阵的乘法运算,两个矩阵的大小为 MK 和 KN,其中 M>1024,N,K 不超过 256.输入矩阵 A 和 B 的数据位宽都为 8b,输出矩阵 C 的数据位宽为 16b.由于完成乘加 ...

  8. 基于Springboot房屋租赁销售平台网站设计带支付宝接口

    开发技术:Springboot + 支付宝沙箱支付 开发环境工具: Idea + Mysql 为了方便朋友们发布自己的房源信息,我们这开发了一个房屋出售和租赁的网站平台,一共包括2个身份包括管理员和用 ...

  9. 详解AI加速器(最终篇):给想进入赛道的玩家一些建议

    来源:机器之心 本文约2400字,建议阅读5分钟 本文我们将聚焦 AI 加速器的解决方案及行业前景等内容. 谁的 AI 加速器解决方案最好? 显然,这个问题非常复杂.未来 5-10 年的事情很难预测. ...

最新文章

  1. php history.back,js history.back(); 后表单数据没有保持 的问题
  2. more effective C++
  3. jQuery调用WebService返回JSON数据
  4. c语言向指定文件写入程序,C语言同时向不同的文件写入不同的数据
  5. 创业公司,没有好领导,有多少人才都是死路一条
  6. 实例变量与局部变量的区别 java 1615135277
  7. 猜拳游戏php中Computer类,人机猜拳 (玩家、电脑、游戏、测试)四个类写法
  8. 查看window重启日志
  9. 微信小程序 事件传参
  10. 算法:求1+2+3+...+n
  11. html返回底部代码,返回页面顶部及去页面底部的js实现代码
  12. live2dmesh渲染优先级_Live2D 性能优化
  13. Optitrack光学动作捕捉
  14. 什么是资本的本质?到如何认清一个人的本质?
  15. windows虚拟化服务器搭建,windows虚拟化服务器搭建
  16. Foundation框架 之 常见结构体、包装数据、日期
  17. IE浏览器被2345网址导航劫持
  18. 微信或QQ屏蔽域名,爆红域名如何在微信打开,如何进行微信域名防封?
  19. 打印机没有反应计算机管理,电脑重启后打印机驱动无反应怎么办
  20. gpio上拉失效问题

热门文章

  1. L2TP客户端之Strongswan移植(二)
  2. linux小红帽实验心得,小红帽读书心得(精选4篇)
  3. java:JAVA获取日期时间加一年或加一月或加一天
  4. 计算机如何打开无线网络适配器,网络适配器无法启动如何解决?解决方法步骤...
  5. html5图片垂直居中
  6. 剩余运算符--...
  7. android 查看系统数据库
  8. 前端开发者如何与UI设计师沟通
  9. UDDI:weblogic下的UDDI及对UDDI的理解
  10. python画函数图像网格_用python 画一个网格