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

1、开始前的准备工作

  • 关闭电脑防火墙
  • 连接开发板电源
  • 开发板与PC之间串口连接,JTAG下载线连接
  • PC机与开发板间网线连接,并保证能ping通

2、Vivado端配置

  1. 创建工程,具体步骤不详细介绍,网上都有教程,器件型号按照实际用的板子的型号选,我这里用的是米联Miz7035的板子
  2. 工程创建完毕后,在Vivado主页左边有个(创建块设计)create block design,点击创建,然后添加ZYNQ7 Processing System IP核,然后对IP核进行配置,主要需要配置的几个地方为:
  • 配置时钟,由于本工程只用到了PS资源,只需要给PS配置时钟,所以可以不用给PL提供时钟。
  • 配置串口,勾选UART1用于打印相关调试信息。
  • 配置网口,勾选ENET0,用于PC和开发板的UDP通信。
  • 配置DDR内存,按照具体板子的DDR型号进行配置,由于目前我们的工程在PS端还是在“裸奔”,所以内存一定要配置正确,不然后续Debug会出现问题。
  • 配置完成后就是检查规范性,生成输出文件,创建顶层文件,导出硬件,这个具体步骤我在前面讲过,有不知道如何操作的可以翻翻之前的博文进行操作。

    最后生成的PS结构如下图所示:

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

      3.最后导出硬件,启动SDK。

3、SDK端编程

    SDK端主要进行UDP协议的一个实现,语言采用c语言。主要步骤如下:

  1. 创建SDK工程,file->new->application project,可以选择一个模板,也可以选择一个空工程,我们选择Hello World模板,然后在Hello World基础上进行改写。
  2. 勾选lwip库,由于我使用的Vivado版本为2018.2,所以lwip库为2.0.2,在新建的工程的板级支持包(bsp)目录下双击system.mss文件,然后点击Modify this BSP's Setting,进入后勾选lwip202即可,点击ok,软件会自动重新生成板级支持包,如果没有自动生成,自己手动点击Re-generate BSP Source生成即可。
  3. 利用库文件编写代码,编码过程在这里不详细介绍,完整工程可以见后面的资源链接,自行下载查看。
  4. Debug调试。

4、调试结果

     整个的调试流程为FPGA接收到PC端发送过来的一个长度为1的数据后,每隔一秒向PC端发送“Hello whustxsk”数据。整个流程初始化完毕后串口打印的信息如下图所示:

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

       利用网络调试助手模拟PC机给FPGA发送数据和接收数据,FPGA的地址为192.168.1.10,端口为5001,调试结果如下图所示:

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

 5、资源获取链接

      完整的实现UDP协议的src文件我上传了百度网盘,链接如下,有需要的请自取。

      链接:https://pan.baidu.com/s/1MUpw4769RDsAQegJMH9Tzw  提取码:bp26