原创 【博客大赛】基于ARP请求和应答的TSE-MAC功能性验证

2013-3-9 14:59 3767 15 19 分类: FPGA/CPLD

基于ARP请求和应答的TSE-MAC功能性验证

         Qsys中集成了以太网MAC的IP核(姑且称它TSE-MAC),正所谓TSE(Triple Speed Ethernet),可以配置工作在10/100/1000Mbit的工作模式下。本文就要来试试它的功能性,自己动手,丰衣足食,搭个小系统,基本框图如下。

1.jpg

 

TSE-MAC中带了PHY芯片各个寄存器配置的MDIO接口控制逻辑,用户可以通过Avalon-MM总线相应的读写PHY芯片的寄存器。同时,MAC的一些配置寄存器也是通过Avalon-MM总线访问控制。因此,本系统也挂了个NIOS II上去,用于MAC初始化配置以及必要的PHY芯片控制。

其实大家最关注的应该是TSE MAC的数据流如何进行收发,既然是Altera的IP,那么自然要用到他们主打的Avalon-ST总线。RX和TX都有各自的Avalon-ST接口。本系统中,RX端连接到了一个256*8bit的onchip-RAM上,设计了一些逻辑,让Avalon-ST送出的数据自动的循环写入RAM中。通过JTAG接口,Quartus II中有个很实用的在线调试工具In-system Memory Content Editor可以实时的查看到当前RXRAM的所有数据情况。同样的,TX端也是连接到一个64*8bit的onchip-RAM上,也设计了一个简单的定时(2s多)发送功能,它自动读取TXRAM中的数据并通过Avalon-ST接口送往MAC,TXRAM中的数据也可以通过In-system Memory Content Editor在线写入。In-system Memory Content Editor真得是个很实用的小工具,大家在FPGA的调试和验证中可以非常灵活的使用它,力荐。

         如图所示,这个仿真波形是发送端的Avalon-ST将TXRAM中存储的初始化帧数据发送给MAC。

2.jpg

          我们后面希望通过发出一个ARP请求,然后看看PC端传回来的ARP应答,验证MAC的功能。先来简单的了解ARP请求的帧格式。

3.jpg

 

         下面是我们写入到TXRAM中的一帧60Byte的ARP请求数据,正好可以对照上面给出的ARP帧请求定义。

//以太网首部(14Byte)

0000: ff ff ff ff ff ff                                 //目的主机为广播地址

0006: 00 1C 23 17 4A CB                  //源主机MAC地址为00-1C-23-17-4A-CB

000c: 08 06                                            //上层协议类型0x0806表示ARP

//ARP请求(28Byte)

000e: 00 01                                           //硬件类型0x0001表示以太网

0010: 08 00                                           //协议类型0x0800表示IP协议

0012: 06 04                                           //MAC地址长度为6; IP地址长度为4

0014: 00 01                                           // op为0x0001表示请求目的主机的MAC地址

0016: 00 1C 23 17 4A CB                  //源主机MAC地址为00-1C-23-17-4A-CB

001c: c0 a8 01 69                                 //源主机IP地址(192.168.1.105)

0020: 00 00 00 00 00 00                   //目的主机MAC地址未知,全0待填写

0026: c0 a8 01 64                                //目的主机的IP地址(192.168.1.100)

//填充数据(18Byte)填充aoc c0 a8 01 000

002c: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

003c: 00 00

         目的主机便是我们的PC,它的MAC地址和IP地址都不是瞎编的,在目标PC的cmd中敲击“ipconfig /all”命令,如图所示。我们可以看到这个目标主机的MAC地址为2C-27-D7-1F-1D-E1,IP地址为192.168.1.100。假设我们只知道目的主机的IP地址,而不知道MAC地址,那么上面的ARP请求中就给出目的主机的IP地址,但使用广播MAC地址进行寻址。理论上,目的主机在接收到对他的ARP请求后,会产生一个ARP应答帧给源主机,实际是否如此,随后我们便可验证。

4.jpg

 

         下一步,该连接的连接,该下载的下载,该运行的运行……在一切就绪之后,我们打开In-system Memory Content Editor,确认发送端RAM的数据是ARP请求帧,接着让它运转起来,如图所示,下面是TXRAM的ARP请求帧数据,上面是256Bytes的RXRAM,已经不断的收到了目的主机发回来的ARP应答了。有兴趣大家可以自己对照ARP应答帧格式的一些细节,这果然是一个非常“理想化”的应答帧(简直是废话,否则咱的IP如何正常收发啊?)。

5.jpg

 

         回到目标PC,我们再来输入一个命令“arp -a”,此时,我们看到发出ARP请求的源主机已经出现在了它的动态列表中了,而且IP和MAC别无二致。

6.jpg

 

         最后,我们再借助一个抓包工具解析下FPGA发过来的ARP请求帧。如下图所示。

7.jpg

 

         简单的TSE-MAC功能性验证,果然名不虚传,“至少还是可以用的”(又是不折不扣的一句大废话)。不过,想表达的是,调试和验证的思路可以有,简单实用的辅助工具也可以有;想深入了解和熟悉一个陌生的接口或复杂的协议,FPGA则必须有。哈哈!

PARTNER CONTENT

文章评论4条评论)

登录后参与讨论

用户430586 2013-3-22 11:02

我用百兆的状态试过,收发都没有问题,基本上觉得就没有问题了,我用的de2-115的板子,应该和您的一样,不过我没有设置set-input-delay的约束,是不是找个原因呢?可是我在phy的loopback模式下用了set-input-delay也是ff-rx-data端口没有数据。已经弄了快一个月了,还是没有弄成

ilove314_323192455 2013-3-20 19:29

RGMII和ff_rx_data中间隔着MAC层,你需要确认MAC的初始配置正确

用户1611496 2013-3-19 22:43

感激当初你卖我开发板带我走进FPGA的殿堂;现在的我已经在社会中从事FPGA开发工作,而牛逼闪闪的你已经是国内的专家;我现在从事光网,交换,总线等开发工作,有兴趣可以留个邮箱交流一下experienceop@163.com

用户430586 2013-3-19 15:54

我在做的时候,发送没有问题,接收的时候,mac端的rgmii借口的数据用signaltapII采样时对的,但是ff_rx_data端却是错的,能指点下么?或者,可以看下您的工程么?
相关推荐阅读
特权ilove314 2016-06-30 21:16
例说FPGA连载6:FPGA开发所需的技能
例说FPGA连载6:FPGA开发所需的技能 特权同学,版权所有 配套例程和更多资料下载链接: http://pan.baidu.com/s/1c0nf6Qc   前面的文字已经做了很多铺垫,相信读...
特权ilove314 2016-06-28 21:09
例说FPGA连载5:FPGA的优势与局限性
例说FPGA连载5:FPGA的优势与局限性 特权同学,版权所有 配套例程和更多资料下载链接: http://pan.baidu.com/s/1c0nf6Qc   若要准确评估FPGA技术能否满足开...
特权ilove314 2016-06-28 21:05
例说FPGA连载5:FPGA的优势与局限性
例说FPGA连载5:FPGA的优势与局限性 特权同学,版权所有 配套例程和更多资料下载链接: http://pan.baidu.com/s/1c0nf6Qc   若要准确评估FPGA技术能否满足开...
特权ilove314 2016-06-26 22:11
例说FPGA连载4:FPGA语言与厂商介绍
例说FPGA连载4:FPGA语言与厂商介绍 特权同学,版权所有 配套例程和更多资料下载链接: http://pan.baidu.com/s/1c0nf6Qc   Verilog与VHDL 说到FP...
特权ilove314 2016-06-23 21:26
例说FPGA连载3:FPGA与其它主流芯片的比较
例说FPGA连载3:FPGA与其它主流芯片的比较 特权同学,版权所有 配套例程和更多资料下载链接: http://pan.baidu.com/s/1c0nf6Qc   FPGA、ASIC和ASSP...
特权ilove314 2016-06-21 20:32
例说FPGA连载2:FPGA是什么
例说FPGA连载2:FPGA是什么 特权同学,版权所有 配套例程和更多资料下载链接: http://pan.baidu.com/s/1c0nf6Qc   2015年伊始,Intel欲出资百亿美金收...
EE直播间
更多
我要评论
4
15
关闭 站长推荐上一条 /3 下一条