其他分享
首页 > 其他分享> > Zynq与PC间的以太网通信实验(一)——方案确定

Zynq与PC间的以太网通信实验(一)——方案确定

作者:互联网

目标:将PL侧的数据通过以太网接口传给PC。

Zynq板卡选用的是ZC706,上面有板载的以太网PHY芯片,因此需要在Zynq上(至少)实现一个MAC层的功能。

最初的想法是直接用vivado的IP核(Tri mode Ethernet MAC)在PL侧实现一个以太网的MAC层功能,这样实时性比较高,如果使用千兆以太网协议的话,应该可以达到接近于1Gbps的传输速率。

但是后来发现我所使用的板卡ZC706应该是不支持PL侧的以太网接口的。因为原理图上可以看出,ZC706将PHY芯片的相关引脚直接连接到了PS侧的MIO:

所以只能通过在PS侧编写程序来实现与PC机的以太网通信。

因此方案更改为:

将PL侧的数据通过DMA传输到DDR中,然后PS侧从DDR中读取数据,再通过以太网协议传输到PC机,PC上通过网络调试助手(因此这就需要在PS侧形成完整的以太网帧)来接收数据。其中,为了防止DDR的读写冲突,在DDR中开辟一段双缓冲存储结构,DMA向其中一块缓冲写数据的同时,以太网应用程序从另一块缓冲里读数据。

本次设计主要来自于米联客教学视频。

PL侧设计:

 

 ctrl是数据产生模块,将产生的数据写入FIFO中,然后通过DMA写入到DDR中,PS侧可以通过GP接口控制GP通过GPIO开启数据的产生。

PS侧参照了SDK自带的LWIP例程,对应PS侧设计的思想应该是:

初始化DMA和LWIP,使能DMA中断,开启数据产生,开启DMA传输。

在DMA传输完成中断产生时,启动以太网传输,然后再开启另一段缓冲的DMA传输……

标签:PS,DMA,DDR,PC,Zynq,传输,以太网,PL
来源: https://www.cnblogs.com/vvvvvvip-xxLiu/p/15321505.html