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、修改PC的IP地址为192.168.0.3。PC的IP Address需要和发送模块(ipsend.v)中设置一致,不然PC端会接收不到开发板发送的UDP数据包。当然,用户也可以修改代码中的目标IP地址,如下所示:

代码中本机(FPGA)和目标机(PC)IP地址

修改PC的IP地址

7、在DOS命令窗口绑定开发板的IP地址和MAC地址,(由于本测试工程不支持ARP协议,因此只能通过这种IP和MAC绑定的方式来强制将开发板的IP地址和MAC地址关联在一起,这样,当 PC发送给192.168.0.2的数据包的时候,目标MAC地址自动为开发板的MAC地址。)

运行命令:ARP -s 192.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上帮定的结果

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

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

10、打开安装好的wireshark抓包工具。在软件界面选择您PC的千兆网卡,按开始按钮开始抓包。

在wireshark抓包窗口我们可以看到开发板(192.168.0.2)向PC网口(192.168.0.3)发来的数据

包。

11、打开网络调试助手并按照如图所示设置各项参数,再按连接按钮(这里的本地的IP地址为PC的IP Address, 本地端口需要跟FPGA程序中的一致,为8080)

点就连接后,目标主机(192.168.0.2)和目标端口(8080)都是默认值。

12、再在网络调试助手的发送窗口发送一大串字符,在网络的数据接收窗口我们可以看到从FPGA返回的数据也变成刚发送字符串。

注意:以太网的数据帧的传输有包长的要求, 一般在46~1500字节。所以在发送以太网数据包的时候,数据帧的长度不能太短, 不然会导致PC数据包发送而FPGA收不到数据包的情况。

小梅哥

2016年12月8日于成都市驷马桥

AC6102 开发板千兆以太网UDP传输实验的更多相关文章

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

    AC6102 开发板千兆以太网UDP传输实验 在芯航线AC6102开发板上,设计了一路GMII接口的千兆以太网电路,通过该以太网电路,用户可以将FPGA采集或运算得到的数据传递给其他设备如PC或服务器 ...

  2. 【VS开发】千兆以太网的传输速度

    千兆以太网主流标准 千兆以太网络技术早在上世纪90年代末就已成熟,其中,1995年国际标准化组织TIA/EIA颁布了1000Base-TX标准,该标准的目的是把双绞线用于千兆以太网中,其目的是在6类非 ...

  3. 迅为IMX6开发板支持全网通4G模块丨GPS模块丨WIFI蓝牙丨千兆以太网

    迅为i.MX6开发板丨迅为i.MX6Q开发板丨四核imx6开发板丨Cortec-A9开发板丨资料介绍: 特点: 处理器:Freescale Cortex-A9四核i.MX6Q主频1GHz 核心板配置: ...

  4. 【小梅哥FPGA进阶学习之旅】基于Altera FPGA 的DDR2+千兆以太网电路设计

    DDR2电路设计 在高速大数据的应用中,高速大容量缓存是必不可少的硬件.当前在FPGA系统中使用较为广泛的高速大容量存储器有经典速度较低的单数据速率的SDRAM存储器,以及速度较高的双速率DDR.DD ...

  5. 千兆以太网TCP协议的FPGA实现

    转自https://blog.csdn.net/zhipao6108/article/details/82386355 千兆以太网TCP协议的FPGA实现 Lzx 2017/4/20 写在前面,这应该 ...

  6. 【转】简谈基于FPGA的千兆以太网

    原文地址: http://blog.chinaaet.com/luhui/p/5100052903 大家好,又到了学习时间了,学习使人快乐.今天我们来简单的聊一聊以太网,以太网在FPGA学习中属于比较 ...

  7. 237-基于Xilinx Kintex-7 XC7K325T 的FMC/千兆以太网/SATA/四路光纤数据转发卡

    基于Xilinx Kintex-7 XC7K325T 的FMC/千兆以太网/SATA/四路光纤数据转发卡 一. 板卡概述  本板卡基于Xilinx公司的FPGAXC7K325T-2FFG900 芯片, ...

  8. AC6102开发板USB3.0测试和使用说明

    AC6102开发板USB3.0测试和使用说明 概述 AC6102上集成了一颗Cypress 推出的高性能USB3.0传输芯片CYUSB3014,Cypress称之为EZ-USBFX3.该芯片性能强劲, ...

  9. 【重新发布,代码开源】FPGA设计千兆以太网MAC(1)——通过MDIO接口配置与检测PHY芯片

    原创博客,转载请注明出处:[重新发布,代码开源]FPGA设计千兆以太网MAC(1)——通过MDIO接口配置与检测PHY芯片 - 没落骑士 - 博客园 https://www.cnblogs.com/m ...

随机推荐

  1. hihoCoder 1185 连通性·三(Tarjan缩点+暴力DFS)

    #1185 : 连通性·三 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 暑假到了!!小Hi和小Ho为了体验生活,来到了住在大草原的约翰家.今天一大早,约翰因为有事要出 ...

  2. Windows 7 IE主页被篡改,如何修复?

    有时我们的电脑会因为病毒的入侵,使得IE主页被篡改,然后就会被没底线的广告包围,有时用杀毒软件也不修复,那么此时应该怎么修复呢?其实很简单,只需几步,就可以让您的电脑重新清净下来. 第一步 点击“开始 ...

  3. IO复用三种方式

    简介 IO复用技术,简单来说就是同时监听多个描述符.在没有用到IO复用以前,只能是一个线程或一个 线程去监听,服务端同时有多个连接的时候,需要创建多个线程或者进程.而且,并不是所有的连 接是一直在传输 ...

  4. yii2 model层中配置常量与list

  5. Java:对象的强、软、弱、虚引用

    转自: http://zhangjunhd.blog.51cto.com/113473/53092 1.对象的强.软.弱和虚引用 在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无 ...

  6. php面试题

    1.用PHP打印出前一天的时间格式是2006-5-10 22:21:21(2分) <?php date_default_timezone_set('Asia/shanghai'); echo d ...

  7. Python之路-(Django进阶二)

    model: 双下划线: # 获取个数 # # models.Tb1.objects.filter(name='seven').count() # 大于,小于 # # models.Tb1.objec ...

  8. Git过滤文件和文夹

    今天是2016年10月份的最后一天,感觉时间过得真的是飞快呢,此刻天下着小雨,天气灰蒙如天每个人的心情一样.在此把这个月的项目上传到git上,就需要过滤一些项目自动生成的不必要的文件,如:bin,ob ...

  9. Redhat 7 或者 CentOS 7 密码破解

    1.在如下界面按 e 2.在 linux16 这一行的最后面添加 rd.break,然后按 ctrl + x 进入单用户模式 3.以读写的方式重新挂载 sysroot 4.切换到 sysroot 目录 ...

  10. lua下的简单OO实现

    笔者学习了当前(文末各文献)lua下的各种OO实现方法.略作笔记. 也提出了一些自己的想法.主要还是记录供将来着之参考.   1.概述   首先[2]PIL第二版中给出了OO的基于table的实现方式 ...