原创 千兆以太网

2015-11-15 09:21 1669 22 22 分类: FPGA/CPLD
一.什么是以太网

以太网是当今居于主导地位的局域网技术。它不是一种具体的网络,而是一种技术规范。以太网是建立在CSMA/CD(带冲突检测的载波侦听多路访问)机制上的广播型网络。冲突的产生是限制以太网性能的重要因素,早期的以太网设备如集线器是物理层设备,不能隔绝冲突扩散,限制了网络性能的提高。而交换机(网桥)作为一种能隔绝冲突的二层网络设备,极大的提高了以太网的性能。正逐渐替代集线器成为主流的以太网设备。然而交换机(网桥)对网络中广播数据流量则不做限制,这也影响了网络的性能。通过在交换机上划分VLAN和采用三层网络设备-路由器解决了这一问题。以太网作为一种原理简单、便于实现、同时又价格低廉的局域网络技术已经成为业界的主流。而更高性能的快速以太网和千兆以太网的出现更使其成为最有前途的网络技术。

二.回环测试
用网线将两个网卡直接连起来,观察发送与接收的数据是否一致。一般作为以太网之前的步骤,回环测试成功后再开始以太网的项目。
1)功能概括

FPGA将数据发送给PHYA芯片PHYA接收到数据后通过RJ45头接口再将数据传给PHYB芯片PHYB再将数据传回FPGA端。

 

2)项目整体框图
1.gif

 1.FPGA发送数据经过ddio将单沿采样数据变为双沿采样数据,发送给芯片PHYA

2.PHYAPHYB通过RJ45头连接,数据从PHYA传输到PHYB

3.PHYB再将接收到的数据发回给FPGA,通过ddio将数据转回单端。

三.千兆以太网

1)功能概括

FPGA通过RGMII通信协议(自定的协议)将图像数据发送到上位机软件。数据分为头包和数据包两个部分:头包与数据包内容可参见RGMII IMAGE通信协议。

2)项目整体框图
2.gif

 

1.通过请求机制,给头包数据与数据包数据加入帧

2.完成checksum校验和的计算与CRC校验位的计算。checksum有两个

A)checksum1,计算IP首部检验和

B)checksum2,计算UDP首部校验和

3.系统时钟经过PLL产生PLL0PLL1

A)PLL0 125M0相位。用于ddiotx_ctrltx_data信号的控制时钟。

B)PLL1 125M90度相位。用于tx_clk的控制。

4.经过ddio模块。将单沿信号转变为双沿信号。

5.通过PHY芯片与RJ45头接口与PC机连接,最终将数据传到上位机软件显示。

四.调试过程与其中遇到的问题
我们有时写代码考虑的不是很周全,尽管之前做了周密的时序设计,也画出了时序草图,特别是模块多、信号多的情况下。比如你觉得你用某个条件控制一个信号万无一失,保不齐该信号还需要其他条件来约束。由于本人记忆力实在不是太好,所以将在调试的过程中遇到的问题记录了下来,希望自己以后能养成这种习惯。
1.首先Modelsim进行功能仿真。
2.使用signaltap在线调试,逐个模块对数据进行观察。
a)第一个成帧模块就出现了问题。发现枕头部分出错,数据没错。
    if.....else如果有嵌套,要加上begin....end。否则综合时可能会出错。
b)checksum模块,即校验和模块出错。
ram写入数据正确,读出数据错误。向上逐级检查控制条件,修改好控制信号。之所以会出现这样的问题在于,仿真时数据只给了一次,用signaltap抓取的时候数据循环发送,而再次发送的数据的时候,读ram的控制信号的条件没有初始化。
3.加按键
数据的抓取通过控制条件触发,想通过按键来控制,更好的查看信号。但是由于本人使用的板子,只有一个按键,而且是用于系统使用,使用它来触发会出问题,所以放弃了按键。
4.crc校验值错误
重复发送数据包,由于checsum值未清零而累加,导致crc的值每次都改变。修改checksum模块。另外crc计算位置出错,应包括除帧头8个byte以外的所有数据。
将以上问题逐个解决之后,数据接收成功且正确。

文章评论0条评论)

登录后参与讨论
我要评论
0
22
关闭 站长推荐上一条 /2 下一条