fpga调用ip核进行以太网通信的verilog怎么实现呢

芯片用的xilinx Zynq-7000,IP核是TEMAC,开发板已经有了PHY芯片,只要接收数据即可,或者可以讲下大致的开发过程,就是需要配置什么之类的

第1个回答  推荐于2017-11-23
我在使用V7和K7,Z7没用过,下面说下我的K7设计方法。

首先要看您传输的协议是使用IP还是UDP协议。如果您的使用场合对数据的准确度不是极其高的话,还是推荐UDP协议吧,这个实现起来比较简单。

主要的设计是实现MAC控制器,ipcore接收到的数据送入到MAC控制器中,控制器实现对数据的解析,校验,分析。首先解析出MAC head,其次是ip head ,然后是UDP head,最后的就是你实际接收的数据。在解析IP head UDP head的时候,您要设计checksum保证数据的正确性。
如果是UDP通信的话,需要配置的只有default IP Address 和Port number。

最后,您需要对网络包的各个head了解。追问

你好,你说的default IP Address这个是在哪里设置?Port number是不是ipcore的引脚?还有mac控制器的实现其实就是解析数据包对么?

追答

假设你在实现UDP通信的时候,你在server要知道client的ip地址和port号对吧?也就是说在FPGA里面要有对应的ip和port,这样FPGA就知道server发送的UDP包是给自己发的。
一个完整的UDP包包括mac头,IP头,UDP头,数据。mac头里面包目的mac。在IP头里面就有目的IP,在UDP头里面有目标PORT号。上面这些都是由server发送来的,也就需要与埋在FPGA里面的你自己定义的ip和port号对应,只有相符合,你才接收UDP包最后的数据。
MAC控制器实现的功能就是解释数据包。

追问

奥奥,感谢你的详细解答,那就是说这个定义是自己定义的么,还是板子自带有个默认ip?还有就是如果用tcp/ip怎么实现呢?

追答

当然是自己定义的呀,因为UDP在发送数据以前不会握手的。

我没有实际设计TCP/IP,具体的设计方法也是主要设计MAC控制器,在MAC控制器里面实现三次握手。个人觉得有点复杂,你可以问问实际设计过的别人。

本回答被提问者和网友采纳
第2个回答  2018-04-20
nxTCP了解一下?