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

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

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)网络编程(TCP协议)_第1张图片

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

3、SDK端编程

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

  1. 创建SDK工程,file->new->application project,可以选择一个模板,也可以选择一个空工程,我们选择lwIP TCP echo server模板,然后在此基础上进行改写。
  2. Debug调试。

4、调试结果

     整个的调试流程为FPGA接收到PC端发送过来的一个数据后,FPGA将该数据回传。整个流程初始化完毕后串口打印的信息如下图所示:

基于ZYNQ-7000的AI加速器设计之PS端(ARM)网络编程(TCP协议)_第2张图片

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

基于ZYNQ-7000的AI加速器设计之PS端(ARM)网络编程(TCP协议)_第3张图片

 5、资源获取链接

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

      链接:https://pan.baidu.com/s/1Hcw7apaZhxNT9wwQ-45O6w 提取码:xjd6 

你可能感兴趣的:(FPGA-Zynq7000)