前注:ARM端的TCP协议编程步骤和UDP协议编程步骤完全相同,只是在ARM端的C代码实现不同,在本次TCP协议实现过程中我们主要利用了官方提供的Demo,然后根据自己的需要加以改写,具体过程如下。
1、开始前的准备工作
- 关闭电脑防火墙
- 连接开发板电源
- 开发板与PC之间串口连接,JTAG下载线连接
- PC机与开发板间网线连接,并保证能ping通
2、Vivado端配置
- 创建工程,具体步骤不详细介绍,网上都有教程,器件型号按照实际用的板子的型号选,我这里用的是米联Miz7035的板子
- 工程创建完毕后,在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张图片](http://img.e-com-net.com/image/info8/ab437c76d4b94f6384434e5c6e39b596.jpg)
3.最后导出硬件,启动SDK。
3、SDK端编程
SDK端主要进行UDP协议的一个实现,语言采用c语言。主要步骤如下:
- 创建SDK工程,file->new->application project,可以选择一个模板,也可以选择一个空工程,我们选择lwIP TCP echo server模板,然后在此基础上进行改写。
- Debug调试。
4、调试结果
整个的调试流程为FPGA接收到PC端发送过来的一个数据后,FPGA将该数据回传。整个流程初始化完毕后串口打印的信息如下图所示:
![基于ZYNQ-7000的AI加速器设计之PS端(ARM)网络编程(TCP协议)_第2张图片](http://img.e-com-net.com/image/info8/db6d2996dc9e44dbbb88cea7533a04f6.jpg)
利用网络调试助手模拟PC机给FPGA发送数据和接收数据,FPGA的地址为192.168.1.10,端口为7,调试结果如下图所示:
![基于ZYNQ-7000的AI加速器设计之PS端(ARM)网络编程(TCP协议)_第3张图片](http://img.e-com-net.com/image/info8/b6e3b145fceb481da99e7791ea04e869.jpg)
5、资源获取链接
完整的实现TCO协议的src文件我上传了百度网盘,链接如下,有需要的请自取。
链接:https://pan.baidu.com/s/1Hcw7apaZhxNT9wwQ-45O6w 提取码:xjd6