5752|4

76

帖子

0

TA的资源

一粒金砂(高级)

楼主
 

AC6102 开发板千兆以太网UDP传输实验 [复制链接]

本帖最后由 芯航线跑堂 于 2016-12-15 14:49 编辑

AC6102 开发板千兆以太网UDP传输实验

       在芯航线AC6102开发板上,设计了一路GMII接口的千兆以太网电路,通过该以太网电路,用户可以将FPGA采集或运算得到的数据传递给其他设备如PC或服务器,或者接收其他设备传输过来的数据并进行处理。
       接触过以太网的用户,应该最常听说的是TCP/IP协议,确实,在PC端或者嵌入式系统中,TCP/IP协议应用非常广泛,因此,当大家看到FPGA上带有以太网接口时,可能第一个想到的也是实现TC/IP协议。这里,首先可以很肯定的告诉大家,使用FPGA实现TCP/IP协议是完全没有问题的,但是,实现的方式却不是大家最期望的直接使用Verilog编写协议层代码来实现。 FPGA发展到现在,三十多年了,却鲜见有成功商用的RTL级的TCP/IP的设计,而大部分使用Verilog或者VHDL实现的以太网传输,都是基于非常简单的UDP协议的。当然,探索或者实现其中部分功能的人还是有的,只是,很难做到像PC那样灵活应用。
       个人理解,TCP/IP协议设计之初就是根据软件灵活性设计的,因此在很多设计考虑上,并不适合使用硬线逻辑实现。TCP/IP协议非常的复杂,如果使用硬件逻辑实现,工程量必然十分浩大,而且功能和性能都无法得到保证。
那么怎样在FPGA上实现TCP/IP协议呢?答案就是SOPC技术。即使用嵌入式软核技术,在FPGA上搭建软核CPU系统,再通过CPU来运行软件TCP/IP协议,从而实现相应功能。但是这种实现方式对于很多用户来说,前期系统创建的过程比较繁琐,因此很多朋友都难以上手,因此这种方式使用的也并不是很广泛。
       上面说过,在FPGA上,可以使用Verilog实现UDP协议来进行数据的传输。UDP协议是一种不可靠传输,发送方只负责将数据发送出去,而不管接收方是否正确的接收。非常类似于UART串口传输。但是,在很多场合,是可以接受这种潜在的不可靠性的,例如视频实时传输显示。在这类系统中,由于数据并不需要进行运算并得到非常精确的结果用于其他功能,而仅仅是显示在屏幕上,因此可以接受一定程度的丢包或者误码。此类应用在LED大屏显示系统中应用非常广泛。本节就介绍提供给大家的一个基于UDP传输例程的使用方法。
关于使用SOPC技术实现完整的TCP/IP连接,将在后续教程中提供。

1、本例提供的UDP传输例程工程压缩包名为AC6102_GETH_Test.rar
2、解压AC6102_GETH_Test.rar到不含中文或者空格的目录中,如D:\fpga。解压后工程目录下内容如下所示:
其中Src文件夹下存放的为程序源码,如下图所示:
这里对其中几个重要文件(夹)简单说明下功能:




3、确认自己PC的网卡是否是千兆网卡,用户可以点击本地连接查看。如果不是千兆网卡,请更换带千兆网卡的电脑或加装千兆网卡。再用五类+或者六类网线连接开发板的网口和PC的网口。使用配套的5V电源给开发板供电,打开电源开关,插上USB Blaster下载器。

4、双击Ethernet.qpf以打开工程(强烈建议使用工程创建时候对应的版本即Quartus II 13.0,使用其他版本打开或编译遇到问题,请邮件告知我们,以获得解决方案邮箱:xiaomeige_fpga@foxmail.com

5、修改UDP发送模块(ipsend.v)中的目标mac address为你使用的网卡的 mac address,修改后重新编译一边。
如果不知道自己PC网卡的mac address,就在DOS命令窗口,用ipconfig –all命令看一下。
6、修改PCIP地址为192.168.0.3PCIP Address需要和发送模块(ipsend.v)中设置一致,不然PC端会接收不到开发板发送的UDP数据包。当然,用户也可以修改代码中的目标IP地址,如下所示:
代码中本机(FPGA)和目标机(PCIP地址
修改PCIP地址

6、在DOS命令窗口绑定开发板的IP地址和MAC地址,(由于本测试工程不支持ARP协议,因此只能通过这种IPMAC绑定的方式来强制将开发板的IP地址和MAC地址关联在一起,这样,当 PC发送给192.168.0.2的数据包的时候,目标MAC地址自动为开发板的MAC地址。)
运行命令:ARP -s192.168.0.2 00-0a-35-01-fe-c0
绑定后我们可以用arp -a命令来查看PC上绑定的结果。
如果运行ARP出现加载失败,换另一种方法绑定
1)       使用netsh i i show in命令查看本地连接的idx编号,如“11”
2)       使用netsh -c “i i”add neighbors 11(idx编号) “192.168.0.2” “00-0a-35-01-fe-c0”
3)       使用arp -a命令来查看PC上帮定的结果

7、安装网络抓包工具 Wireshark, 我们在实验的时候可以用这工具来查看 PC 网口发送的数据和接收到的数据。

8、打开Quartus II的Programer,选择下载器和需要下载的文件,然后点击下载以开始下载Ethernet.sof文件到开发板中。

9、打开安装好的wireshark抓包工具。在软件界面选择您PC的千兆网卡,按开始按钮开始抓包。
wireshark抓包窗口我们可以看到开发板(192.168.0.2)PC网口(192.168.0.3)发来的数据
包。

10、打开网络调试助手并按照如图所示设置各项参数,再按连接按钮(这里的本地的IP地址为PCIP Address, 本地端口需要跟FPGA程序中的一致,为8080)
点就连接后,目标主机(192.168.0.2)和目标端口(8080)都是默认值。

11、再在网络调试助手的发送窗口发送一大串字符,在网络的数据接收窗口我们可以看到从FPGA返回的数据也变成刚发送字符串。
注意:以太网的数据帧的传输有包长的要求, 一般在461500字节。所以在发送以太网数据包的时候,数据帧的长度不能太短, 不然会导致PC数据包发送而FPGA收不到数据包的情况。
小梅哥
2016128日于成都市驷马桥


此帖出自FPGA/CPLD论坛

最新回复

hi 你好,可以共享一下工程的源码吗?   详情 回复 发表于 2016-12-23 15:36

赞赏

1

查看全部赞赏

点赞 关注(1)
 

回复
举报

230

帖子

2

TA的资源

纯净的硅(初级)

沙发
 
最近新做的一个板子,挑战一下,需要的可以一起讨论学习
此帖出自FPGA/CPLD论坛
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
可有AC6102_GETH_Test.rar下载的连接?我之前只写过mac协议通信的
此帖出自FPGA/CPLD论坛

点评

暂时只能给我发邮件索取,文章中有邮件地址  详情 回复 发表于 2016-12-20 19:05
 
 
 

回复

230

帖子

2

TA的资源

纯净的硅(初级)

4
 
wuli3258 发表于 2016-12-20 10:53
可有AC6102_GETH_Test.rar下载的连接?我之前只写过mac协议通信的

暂时只能给我发邮件索取,文章中有邮件地址
此帖出自FPGA/CPLD论坛
 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

5
 
hi 你好,可以共享一下工程的源码吗?
此帖出自FPGA/CPLD论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
有奖直播:当AI遇见仿真,会有什么样的电子行业革新之路?
首场直播:Simcenter AI 赋能电子行业研发创新
直播时间:04月15日14:00-14:50

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网 2

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表