热度 22
2015-11-15 09:21
1669 次阅读|
0 个评论
一.什么是以太网 以太网是当今居于主导地位的局域网技术。它不是一种具体的网络,而是一种技术规范。以太网是建立在CSMA/CD(带冲突检测的载波侦听多路访问)机制上的广播型网络。冲突的产生是限制以太网性能的重要因素,早期的以太网设备如集线器是物理层设备,不能隔绝冲突扩散,限制了网络性能的提高。而交换机(网桥)作为一种能隔绝冲突的二层网络设备,极大的提高了以太网的性能。正逐渐替代集线器成为主流的以太网设备。然而交换机(网桥)对网络中广播数据流量则不做限制,这也影响了网络的性能。通过在交换机上划分VLAN和采用三层网络设备-路由器解决了这一问题。以太网作为一种原理简单、便于实现、同时又价格低廉的局域网络技术已经成为业界的主流。而更高性能的快速以太网和千兆以太网的出现更使其成为最有前途的网络技术。 二.回环测试 用网线将两个网卡直接连起来,观察发送与接收的数据是否一致。一般作为以太网之前的步骤,回环测试成功后再开始以太网的项目。 1)功能概括 FPGA 将数据发送给 PHYA芯片 , PHYA 接收到数据后通过 RJ45头 接口再将数据传给 PHYB芯片 , PHYB 再将数据传回 FPGA 端。 2)项目整体框图 1. FPGA 发送数据经过 ddio 将单沿采样数据变为双沿采样数据,发送给芯片 PHYA 。 2. PHYA 与 PHYB 通过 RJ45 头连接,数据从 PHYA 传输到 PHYB 。 3. PHYB 再将接收到的数据发回给 FPGA ,通过 ddio 将数据转回单端。 三.千兆以太网 1) 功能概括 FPGA 通过 RGMII 通信协议 ( 自定的协议 ) 将图像数据发送到上位机软件。数据分为头包和数据包两个部分:头包与数据包内容可参见 RGMIIIMAGE 通信协议。 2)项目整体框图 1. 通过请求机制,给头包数据与数据包数据加入帧 2. 完成 checksum 校验和的计算与 CRC 校验位的计算。 checksum 有两个 A) checksum1, 计算 IP 首部检验和 B) checksum2 ,计算 UDP 首部校验和 3. 系统时钟经过 PLL 产生 PLL0 和 PLL1 A) PLL0125M , 0 相位。用于 ddio 中 tx_ctrl 与 tx_data 信号的控制时钟。 B) PLL1125M , 90 度相位。用于 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以外的所有数据。 将以上问题逐个解决之后,数据接收成功且正确。