FPGA设计千兆以太网MAC(2)——以太网协议及设计规划

  上篇该系列博文中通过MDIO接口实现了PHY芯片的状态检测,验证其已处于1000M 全双工工作模式。在设计MAC逻辑之前,要先清楚MAC与PHY之间的接口以及以太网协议细节,这样才能保证网络的兼容性。本文内容多来自Xilinx官方文档pg051 tri-mode-eth-mac.

1.GMII接口

  此处使用较简单的GMII接口,接口列表及说明如下:

  TX方向时钟tx_mac_aclk由FPGA给出,RX方向时钟gmii_rx_clk由PHY芯片经过内部CDR模块从接收数据中恢复出来,时钟频率均为125MHz。TX和RX方向基本均由三个信号组成:d en/dv er。

2.以太网协议规范

  MAC层的功能就是“成帧解帧”,接下来查看以太网数据帧结构和规则。

  前导码、帧头符以及FCS在TX方向被MAC添加,在RX方向被剔除。接收端MAC逻辑会将SFD作为接收帧起始时刻。

  关于长度/类型字段之前有所提及,Ethernet II帧长度/类型域解释为上层协议类型(字段值大于等于1536,即十六进制的0x0600),而IEEE802.3同样位置是长度字段(字段值小于等于1500,即十六进制的0x05DC)。若为EthernetII帧,接收端MAC不做处理。若为IEEE802.3帧,MAC则检测帧长度是否与该字段匹配,并在必要时去除pad域。

  Pad域用来确保前导码和SFD之后的部分长度在64byte以上,也就是保证pad+data≥46byte。当data≥46byte时,不需要pad域。

  FCS采用CRC32,多项式为:

  接收端MAC会检测每个帧的FCS值,如果接收FCS错误,则MAC指示给上层用户接收到一个错误帧。

  IEEE 802.3-2008规定,以太网帧间隔为96-bit时间以上。对于千兆网来说,t = Tbit*96 = (1/1000*1000*1000)*96s = 96ns。

3.流量控制高级话题

  当收发两端的时钟频率出现细微偏差,持续一段时间后会导致频率较慢的一方缓存溢出。此时较慢一方需要告诉另一方暂停一段时间发送数据包以减轻自身缓存压力。“告诉”这一动作通过发送指定控制帧完成。

  其中mac control parameters代表对方暂停的时间单位个数,在千兆网中若该数据为1则表示对方需暂停发送数据包512ns。当一方缓存即将溢出,则发送暂停帧。若此时正在发送数据帧,则等待当前帧发送完成。接收方收到pause帧后,依次检测目的地址及类型域,若目的地址为多播地址(01-80-c2-00-00-01)且符合pause帧操作码,则提取控制参数数值并通过拉低发送侧rdy信号来暂停发送。

4.系统设计

  先定义MAC接口:用户侧包括发送数据通道,接收数据通道以及事件统计通道。PHY芯片侧同样有发送通道 接收通道和MDIO管理通道。用户侧数据位宽32bit,PHY芯片侧位宽8bit。

  MAC内部设计结构可以参照Altera的以太网MAC IP核,可见内部主要由发送和接收处理逻辑、缓存部分、配置与统计以及MDIO控制模块五部分组成。

  模块划分和接口定义完成后,开始写RTL代码。后续以缓存及位宽转换模块为例,依次进行代码编写 自动对比仿真 时序约束与STA 在线调试等步骤。

原文地址:https://www.cnblogs.com/moluoqishi/p/9728344.html

时间: 2024-10-11 07:03:17

FPGA设计千兆以太网MAC(2)——以太网协议及设计规划的相关文章

FPGA设计千兆以太网MAC(3)——数据缓存及位宽转换模块设计与验证

本文设计思想采用明德扬至简设计法.上一篇博文中定制了自定义MAC IP的结构,在用户侧需要位宽转换及数据缓存.本文以TX方向为例,设计并验证发送缓存模块.这里定义该模块可缓存4个最大长度数据包,用户根据需求改动即可. 该模块核心是利用异步FIFO进行跨时钟域处理,位宽转换由VerilogHDL实现.需要注意的是用户数据包位宽32bit,因此包尾可能有无效字节,而转换为8bit位宽数据帧后是要丢弃无效字节的.内部逻辑非常简单,直接上代码: 1 `timescale 1ns / 1ps 2 3 //

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

DDR2电路设计 在高速大数据的应用中,高速大容量缓存是必不可少的硬件.当前在FPGA系统中使用较为广泛的高速大容量存储器有经典速度较低的单数据速率的SDRAM存储器,以及速度较高的双速率DDR.DDR2.DDR3型SDRAM存储器,DDR系列的存储器都需要FPGA芯片有对应的硬件电路结构支持.对于Altera Cyclone IV系列的FPGA,其最高支持到DDR2存储器(不支持DDR3存储器,到了Cyclone V系列的FPGA才支持DDR3存储器).芯航线AC6102开发板作为一个高速应用

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

AC6102 开发板千兆以太网UDP传输实验 在芯航线AC6102开发板上,设计了一路GMII接口的千兆以太网电路,通过该以太网电路,用户可以将FPGA采集或运算得到的数据传递给其他设备如PC或服务器,或者接收其他设备传输过来的数据并进行处理. 接触过以太网的用户,应该最常听说的是TCP/IP协议,确实,在PC端或者嵌入式系统中,TCP/IP协议应用非常广泛,因此,当大家看到FPGA上带有以太网接口时,可能第一个想到的也是实现TC/IP协议.这里,首先可以很肯定的告诉大家,使用FPGA实现TCP

关于千兆以太网芯片及VLAN浅析

MARVEL出产的高端千兆以太网交换芯片,对每个端口支持不同的交换模式. 包括4种模式: Secure模式:所带VLAN tag必须存在于VTU表中,且入端口必须是该VLAN成员,否则丢弃报文. Check模式:所带VLAN tag必须存在于VTU表中,否则丢弃报文. Fallback模式:入端口报文不丢弃. 802.1Q Disabled:802.1Q关闭,使用端口VLAN模式,所有报文透传. 前3种模式都遵循802.1Q规则,报文进入后按照VLAN表项进行转发,不同就在于进入的时候条件限制,

迅为4418/6818开发板cortex-A9四核千兆以太网 4G模块

6818核心板与4418核心板兼容同一底板 核心板:经过大批量检验的核心板连接方式,更优的排列,更放心的连接性能. 六层PCB沉金设计,紧凑精致,解决电磁兼容,达到成本与性能的完美统一,更加技高一筹.核心板通过设计阶段的电磁兼容测试,高低温环境适应实验等. 6818开发板(基本型): 6818开发板(豪华型): 支持选配模块: RFID模块,VGA模块,CAN/RS485模块,继电器模块,500万摄像头,USB摄像头,USB转串转接头等. 应用行业: 规格参数:   核心板 尺寸:50mm*60

千兆以太网规范

千兆以太网规范 因为千兆以太网技术仍是目前一种最主流应用的以太网技术,所以关于这种以太网的规范还在不断推出,以满足不同应用环境需求,改进技术性能. 最 早在1998和1999年发布的IEEE 802.3z和IEEE 802.3ab标准中就包括1000Base-LX.1000Base-SX.1000Base-CX和1000Base-T(前三种统称为 1000Base-X子系列),如图5-12所示.其中前三个是由IEEE 802.3z标准规定的,而1000Base-T标准则是由IEEE 802.3a

[转帖]树莓派 4 正式发布!硬件性能大提升:CPU提升3倍,支持USB3.0、蓝牙5.0、千兆以太网、4G LPDDR4、H.265

树莓派 4 正式发布!硬件性能大提升:CPU提升3倍,支持USB3.0.蓝牙5.0.千兆以太网.4G LPDDR4.H.265 http://www.itpub.net/2019/06/28/2308/ 其实应该拿来试试的 树莓派(Raspberry Pi)基金会,6月24日正式发布了Raspberry Pi 4 Model B. 树莓派是全球知名的基本计算微型电脑,深受全球开发者.编程者.极客等人士的追捧和喜爱. 这一代Raspberry Pi 4 Model B开发了3年的时间,内存(RAM

FPGA千兆网UDP协议实现

上一篇百兆网接口的设计与使用,我们接着来进行FPGA百兆网UDP(User Datagram Protocol)协议的设计. 1)UDP简介 在此,参考博主夜雨翛然的博文"https://www.cnblogs.com/HPAHPA/p/7737531.html"关于UDP协议的简介:"UDP传输与IP传输非常类似.你可以将UDP协议看作IP协议暴露在传输层的一个接口.UDP协议同样以数据包(datagram)的方式传输,它的传输方式也是"Best Effort&q

基于嵌入式Linux的千兆以太网卡驱动程序设计及测试

一. 引言 千兆以太网是一种具有高带宽和高响应的新网络技术,相关协议遵循IEEE 802.3规范标准.采用和10M以太网相似的帧格式.网络协议和布线系统,基于光纤和短距离同轴电缆的物理层介质,更适用于交换机.服务器等数据吞吐率大的设备.本文设计实现一种基于嵌入式Linux千兆以太网卡的驱动程序,并完成后续的测试工作和代码移植. 千兆以太网网卡工作在OSI网络架构的物理层和数据链路层,其中物理层由PHY芯片管理,数据链路层由千兆以太网控制器(GMAC)管理.硬件构架上,GMAC控制器由核心层.MT