FPGA高速串行收发器,GTP,GTX 下载本文

内容发布更新时间 : 2024/12/23 12:13:49星期一 下面是文章的全部内容请认真阅读。

本页面主要配置接收端功能。―Decoding‖栏的参数和配置页面两种Encoding栏的选项是一致的,接收端选择的解码方式由输入数据在远端的编码方式决定,二者必须保持一致。―8B/10B

Synchronization‖栏用于设定检测同步头,选中Decet the loss on RXLOSSODSYNC复选框,可设定同步操作的有效步长以及门限值。同样,USE CRC for recevier复选框由输入数据决定,如果输入数据经过编码,则选中该复选框。

4)配置页面4——Recevier Clock Correction Setup

本页面用于配置接收机时钟修正参数。选中―Retain at least one clock Correction sequence‖可以启用至少保持一个时钟修正序列的功能。―The minimum number of RXUSERCLK without clock‖栏用于设定没有时钟时,最小的RXUSERCLK周期数。―Length of clock correctuion sequence(in Byte)‖栏用于设定时钟修正序列的长度,可选值有1、2、3和4,单位为Byte。―Define clock correction sequence(11-bit vector)‖栏用于设定时钟修正序列。

5)配置页面5——Summary

本页面主要显示用户定义Rocket IO的特性。―Feature Summary‖栏用于显示用户配置参数的主要特征,如参考时钟的配置。―Files To Be Generated‖栏用于显示即将生成的文件,如my_rocketio.xaw。―Block Attributes‖栏用于显示模块属性,如CRC起始包和结束包的K-字符、发送数据宽度等。―Show all modifiable attributes‖复选框用于显示所有可修改的属性。―Show only the modifiable attributes whose values differ form the default‖复选框只显示和缺省值不同的可修改属性。

配置完成后,可在工程管理区选中Rocket I/O,在过程管理区,点击―View HDL Instantiation Template‖命令,查看其例化代码,其在代码中的例化方法和一般IP Core的方法是一样的。

第4节 基于Xilinx FPGA的千兆以太网控制器的开发

10.4.1 千兆以太网技术

1.千兆以太网技术简介

以太网技术是当今应用广泛的网络技术,千兆以太网技术继承了以往以太网技术的许多优点,同时又具有许多新的特性,例如传输介质包括光纤和铜缆,使用8B/10B的编解码方案,采用载波扩展和分组突发技术等。正是因为具有良好的继承性和许多优秀的新特性,千兆以太网已经成为目前局域网的主流解决方案。

千兆以太网利用了原以太网标准所规定的全部技术规范,其中包括CSMA/CD协议、以太网帧、全双工、流量控制以及IEEE 802.3标准中所定义的管理对象。千兆以太网的关键技术是千兆以太网二层(MAC层)的交换与以太网接口的实现。随着多媒体应用的普及,千兆以太网必将成为各类以太网技术的主力军。

2.Xilinx的千兆以太网解决方案

1)IP的支持

Xilinx提供了可参数化的10/1Gbps以太网媒体访问控制器功能LogiCORE解决方案。该核设计用来同最新的Virtex-5、Virtex-4和Virtex-II Pro平台FPGA一起工作,并可以无缝集成到Xilinx设计流程中。吉比特级以太网媒体访问控制器核(GEMAC)是针对1Gb/s(Gbps)以太网媒体访问控制器功能的可参数化的LogiCORE IP解决方案。GEMAC核的设计符合 IEEE 802.3-2002规范。GWMAC核支持两个PHY端接口选项:GMII或RGMII。并且,Xilinx 全面的1Gb/s以太网解决方案包含吉比特MAC和PCS/PMA IP核产品。Xilinx吉比特以太网MAC解决方案还包括带有内置处理器本地总线(PLB)接口(PLB GEMAC)的配置。该配置通过Xilinx嵌入式开发套件(EDK)提供。GEMAC LogiCORE IP可以实现与1000 Base-X PCS/PMA或SGMII核的无缝集成,并提供3种选项用来与PHY器件接口:1000 BASE-X或10位接口(TBI)或SGMII。

GEMAC核非常适合开发高密度吉比特级以太网通信和存储设备,其关键特性有:

? 单速全双工11 Gbps MAC控制器; ? 设计符合IEEE 802.3-2002规范;

? 具有最小缓冲的直通操作,以最大限度地实现客户端接口的灵活性; ? 通过可选的独立微处理器中的接口进行配置和监控;

? 直接与以太网统计数据核接口,以便实现功能强大的统计数据收集; ? 通过MAC控制暂停帧实现对称的或非对称的可选的流程控制; ? VLAN帧的可选技术支持符合IEEE 802.3-2002规范的要求; ? 支持任意长度的―jumbo帧‖(可选);

? 可选的地址滤波器,具有数量可选的地址表输入。

2)相应的开发板套件

Xilinx提供的千兆以太网开发套件为Virtex-5 ML505/ML506开发板(使用的FPGA芯片为:XC5VLX50T-1FF1136),该开发板支持10/100兆、1/10吉以太网,加上Xilinx公开的基于ML505/506的设计,可为基于以太网开发的设计提供全方位的参考。此外,ML505/506还具备SFP、PCI E、SATA以及SMA接口等其余吉比特接口,是学习和研发高速连接设备的理想平台。 10.4.2 基于FPGA的千兆以太网MAC控制器实现方案

1.整体设计方案

以太网控制器的FPGA设计工作包括以太网MAC子层的FPGA设计、MAC子层与上层协议的接口设计以及MAC与物理层(PHY)的MII接口设计。该以太网控制器的总体结构设计框图如图10-30所示。整个系统分为发送模块、接收模块、MAC状态模块、MAC控制模块、MII管理模块和主机接口模块六部分。发送模块和接收模块主要提供MAC帧的发送和接收功能,其主要操作有MAC帧的封装与解包以及错误检测,它直接提供了到外部物理层芯片的并行数据接口。在实现中物理层处理直接利用商用的千兆PHY芯片,主要开发量集中在MAC控制器的开发上。

图10-30 以太网控制器的结构设计框图

MAC控制模块则用于执行全双工模式中的流量控制功能。MAC状态模块可用来监视MAC操作过程的各种状态信息,并作修改。MII管理模块提供了标准的IEEE 802.3介质独立接口,可用于连接以太网的链路层与物理层。主机接口则提供以太网控制器与上层协议(如TCP/IP协议)之间的接口,以用于数据的发送、接收以及对控制器内各种寄存器(控制、状态和命令寄存器)的设置。

2.MAC控制器结构和工作流程

1)MAC发送模块

MAC发送模块可将上层协议提供的数据封装之后通过MII接口发送给PHY。发送模块可接收主机接口模块的数据帧开始和数据帧结束标志,并通过主机接口从外部存储器中读取要发送的数据,然后对数据进行封装,再通过PHY提供的载波侦听和冲突检测信号,在信道空闲时由MII接口将数据以4位的宽度发送给PHY芯片,最后由PHY将数据发送到网络上。

发送模块由CRC生成模块(crc_gen)、随机数生成模块(random_gen)、发送计数模块(tx_cnt)和发送状态机(tx_statem_machine)模块等四个主要子模块组成,其内部结构如图10-31所示。

图10-31 以太网MAC发送模块的结构示意图

发送状态机由Idle_State、Preamble_State、Data0_State、Data1_State、PAD_State、FCS_State、IPG_State、Jam_State、BackOff_State、Defer_State 等十个状态组成。其状态转移图如图10-32所示。

图10-32 发送状态机的状态转移图

系统复位后,发送模块即进入Defer_State状态,并一直检测载波侦听(CarrierSense)信号。当载波侦听信号变成无效(表示信道空闲)时,状态机进入IPG_State状态。此后,在等待一个帧间间隙之后,状态机进入Idle_State状态。如果在帧间间隙的前2/3个周期检测到信道忙信号,状态机将重新回到Defer_State状态。

状态机进入Idle_State状态之后,发送模块将检测载波侦听信号和主机接口的发送请求。若主机模块请求发送,状态机将进入Preamble_State状态,发送模块即通知PHY发送开始,同时开始发送前序码(7个0x5), 然后发送帧起始定界符(SFD, 0xd)。状态机进入Data0_State后,发送模块将发送一个数据字节的低4位(LSB nibble),当其进入Data1_State状态后,发送模块则发送数据字节的高4位(MSB nibble)。随后,状态机一直在data0和data1之间循环,直到数据发送完毕。当还剩一个字节时,主机模块将通过发送帧结束信号来通知发送模块。如果数据帧的长度大于最小帧并且小于最大帧,状态机就进入FCS_State状态,此时发送模块则将CRC生成模块生成的CRC值添加到帧的FCS字段中并发送给PHY。

帧发送完之后,状态机进入Defer_State 状态,之后是IPG_State和Idle_State状态。此后状态机又回到初始状态,以重新等待新的发送请求。如果数据帧的长度小于最短帧,状态机就进入PAD_State状态,发送模块根据系统设置确定是否在数据之后添加填充码。然后,状态机进入FCS_State状态。如果数据帧的长度大于最大帧,而系统设置又支持发送超长帧,那么,状态机就进入FCS_State状态;如果不支持发送超长帧,发送模块将放弃发送,状态机直接进入Defer状态,然后是IPG状态,最后回到Idle状态。

在发送数据的过程中,发送模块会一直检查冲突检测信号(collision detected)。如果发现冲突且状态机正处于Preamble_State,状态机将在发送完前序码和SFD之后进入Jam_State,并发送拥塞码,然后进入BackOff状态,以等待重试。之后,状态机经过Defer和IPG回到Idle状态。如果此时重试次数计数器的值没有达到额定值,发送模块将重新开始发送刚才的帧,并将重试次数计数器的值加1;如果发现冲突且状态机处于data0、data1或FCS状态,而且没有超过冲突时间窗,那么状态机将马上进入Jam状态发送拥塞码,之后经过BackOff、Defer、IPG、回到Idle,并根据重试计数器的值决定是否重新发送刚才的数据帧;如果检测到发生冲突的时间超过了冲突时间窗,状态机将进入Defer状态,然后经过IPG到IDLE状态,并放弃重试。

在全双工模式中发送帧时,不会进行延迟(defer), 发送的过程中也不会产生冲突。此时,发送模块

将忽略PHY的载波侦听和冲突检测信号。当然,帧与帧之间仍然需遵守帧间间隙的规则。因此,全双工模式下的发送状态机没有Jam_State、BackOff_State、Defer_State三个状态。

2)MAC接收模块

MAC接收模块结构如图10-33所示,负责数据帧的接收。当外部PHY将通信信道的串行数据转换为半字节长的并行数据并发送给接收模块后,接收模块会将这些半字节数据转换为字节数据,然后经过地址识别、CRC校验、长度判断等操作后,再通过主机接口写入外部存储器,并在主机接口模块的接收队列中记录帧的相关信息。此外,接收模块还负责前序码和CRC的移除。

图10-33 以太网MAC接收模块的结构示意图

接收过程的接收状态机由Idle_State、Drop_State、Preamble_State、SFD_State、Data0_ State、Data1_State等六个状态组成, 其状态转移图如图10-34所示。

图10-34 接收状态机的状态转移图

当接收模块检测到数据有效信号之后,,状态机将进入Preamble_State,并开始接收前序码。此后状态机进入SFD_State,接收一个字节的帧起始定界符,之后根据IFGcnt计数器的值进入不同的状态。如果IFGcnt所确定的时间大于96个比特时间,状态机将进入Data0状态以接收字节的低4位,然后是Data1状态,并接收字节的高4位,之后又回到Data0状态。状态机就一直在这两个状态之间循环,直到数据接收完毕(PHY清除MRxDV信号)后进入Idle,以重新等待接收新的数据;如果接收到帧起始定界符时,IFGcnt计数器所确定的时间小于96个比特时间,那么状态机将进入Drop_State状态,并一直维持该状态直到数据有效信号结束(PHY清除MRxDV信号)。之后,状态机再回到Idle等待接收新的数据。如果在接收前序码、帧起始定界符和数据期间,数据有效信号被清除,那么状态机将回到Idle。

3)MII管理模块