您好,欢迎访问三七文档
当前位置:首页 > 金融/证券 > 股票报告 > 基于FPGA光纤以太网自协商的设计与实现
光纤以太网自协商的设计与实现刘小丽,刘元安,袁东明,胡鹤飞*作者简介:刘小丽,(1986-),女,硕士研究生,研究方向:网络接入.E-mail:sally.liu.bupt@gmail.com(北京邮电大学无线通信与电磁兼容实验室,北京100876)摘要:本文在分析了千兆以太网的自协商基本过程,提出了一种基于Virtex-5XC5VFX70T中高速串行收发器GTXTransceiver的千兆以太网自协商实现方案。该方案通过Verilog编码实现,并下载到Virtex-5XC5VFX70T实验平台,与PC机进行了ARP测试。测试结果表明:无需额外的光纤以太网PHY,FPGA板卡使用该自协商方案完成了与光纤以太网网卡的自协商,实现了与PC机的数据通信。关键词:自协商;FPGA;千兆以太网;光纤中图分类号:TP393.11ThedesignandimplementionofFiberEthernetAuto-negotiationbasedonFPGALiuXiaoli,LiuYuanan,YuanDongming,HuHefei(WirelessCommunications&EMCLaboratoryofBUPT,Beijing100876)Abstract:Thispaperanalyzedthebasicauto-negotiationprocessoftheGigabitEthernet,andanimplementionmodelbasedonthehigh-speedserialtransceiversGTXofVirtex-5XC5VFX70Thasbeenproposed.ThisproposalhasbeenimplementedbyVerilogCodinganddownloadedtotheVirtex-5XC5VFX70TevaluationplatformtoconducttheARPcertificationwithPC.Theresultsshowthat,withoutextraFiberEthernetPHY,FPGAboardwiththeprogramcompletedtheauto-negotiationwiththeGigabitEthernetopticalnetworkcardandtheelectronicnetworkcard,andachieveddatacommunicationwiththePC.Keywords:Auto-negotiation;FPGA;GigabitEthernet;Fiber0引言随着通信技术的高速发展,以太网也经历了从10Mbps、100Mbps、1000Mbps到万兆以太网以及半双工到全双工的快速发展。目前千兆以太网已经得到了广泛的应用[1],而万兆以太网已经开始部署,预计未来将有大规模的应用。为了支持具有不同通信模式的以太网设备的混合通信,于是提出了自协商的概念。自协商的主要功能是实现物理链路两端的设备通过交互各自的工作模式信息,自动选择一种共有的昀优性能的工作模式来进行通信。如果两端设备无相同的工作模式,则协商不能通过,两端设备不能正确通信。本文的主要目的是利用FPGA实现千兆以太网光接口,进而实现光千兆以太网网络数据帧的接收以及部分TCP/IP协议的分析,从而构成一个从物理层到网络协议层较为完整的以太网络接口。1光纤以太网自协商原理1.1自协商在OSI七层协议中的位置与以太网电口(RJ-45)的自协商位置不同[2],如图1所示,光纤以太网的自协商位于OSI七层协议中物理层的PCS子层,而以太网电口的自协商位于OSI七层协议中物理层的子层。这说明以太网电口的自协商发生在链路传输之前,可以协商速率(10M/100M/1000M),全双工方式等;而光纤以太网的自协商,必须在首先保证链路速率同步之后才可以展开协商。因此光口的自协商不能协商速率,可以协商全双工模式,状态以及是否支持流控等信息。1.2光纤以太网的自协商机制自协商是指本地设备在连接初期自动向共享一条链路的对端设备发送自己的通信能力以及状态等信息,同时检测对端设备端口发过来的对端设备的通信能力以及状态等信息,然后通过比较两端的能力自动协商配置成共同昀高性能的工作模式建立通信。802.3规范中千兆光口只支持1000M速率,支持全双工(Full)和半双工(Half)两种双工模式,支持流控模式。自协商功能通过向对端设备连续发送封装有/C/(configuration)码或者/I/(idle)码的报文来实现[3]。在链路初始化时,自协商协议向对端设备发送封装有/C/码以及16bit配置信息(表示自己通信能力的信息,如图2所示,称为Config_RegBasepage)的/C/码报文,并从对端设备接收类似的报文。当端点设备接收并确认了对方与自己的共同的配置信息后,便向对端发送/I/码报文。如果端点设备在发送/I/码报文时接收到对端发送过来的/I/码报文,则说明自协商成功,可以发送上层的数据包了。图2Config_RegBasePage编码格式中国科技论文在线自协商功能除了可以发送基本页信息来进行信息的交换,还可以通过发送下一页信息的功能来进行额外的信息的交换。根据需要,一个报文可以使用多个16bit的“page”,但昀常见的协商只需要基本页的操作。1.3光纤以太网的自协商过程光纤以太网的自协商过程[4]分为以下六个阶段组成:首先,由1.1节知光纤以太网首先要建立链路速率同步之后才可以进行,如图3所示,端点设备在上电后发送Idle序列,以便接收方检测COMMA字符,启动链路同步机制建立链路同步。图3链路同步建立然后如图4所示,当端点设备接收到Idle字符,通过同步机制建立起链路同步之后,端点设备便开始自协商机制,向对端设备发送包含自己通信能力的/C/码报文。图4协商配置信息如果端点设备连续接收到3个以上相同的/C/码报文,且接收到的码流和本端工作方式相匹配,则应答给对端设备一个带有ACK(ACK位为1)的/C/码报文,如图5所示。图5协商应答信息当端点设备连续接收到三个以上的ACK应答/C/码报文后,认为两者可以互通,于是向对端设备发送封装有/I/码的空闲码流,如图6所示。图6协商空闲信息当端点设备连续接收到三个以上的空闲/I/码报文后,则认为与对方自协商成功,可以进行数据帧的传送,如图7所示。所示,主要包括以下四个模块:GTXTransceiver,Auto-NegotiationStateMachine,PCSTransmitControl和PCSReceiveControl。GTX_PCSGTX_PCSGTX_PMAGTX_PCSTransmitControlPCSReceiveControlAutoNegotia-tionStateMachineXMITXMITrx_Config_Regability_matchconsistency_matchtxdatatxchariskrxchariskrxdata8833tx_Config_Regability_matchconsistency_matchloss_of_syncrxcrxd8txdtxc8rx_invalidmr_an_complete图8光纤以太网自协商实现框图GTXTransceiver[5]是Virtex-5器件FXT系列集成的高性能、低功耗RocketIO高速串行收发器,可支持500Mbps至6.5Gbps的数据传输速率。每个GTXTransceiver包括GTXTX链路和GTXRX链路,每条链路都由PMA和PCS两个子层组成。Auto-NegotiationStateMachine用于控制整个自协商有序的进行,它根据接收到的链路或者对端设备的状态信息控制自协商的流程,并向PCSTransmitControl传递要发送的协商信息。PCSTransmitControl用于控制PCS层数据的发送,根据Auto-NegotiationStateMachine给出的当前自协商状态的指示来决定是发送自协商数据还是上层用户数据。PCSReceiveControl用于对接收到的自协商数据的检测,并将检测的自协商状态信息传递给Auto-NegotiationStateMachine进行本端设备自协商流程的控制。2.2子模块设计2.2.1Auto-NegotiationStateMachineAuto-NegotiationStateMachine是根据IEEE802.3对千兆以太网自协商的定义[11],用于控制通信双方协商过程。本文实现了协议中使用基本页进行协商过程的状态机,如图4-9所示。状态机一共由九个状态组成:AN_DISABLE_LINK_OK_s,AN_ENABLE_s,AN_,ABILITY_DETECT_s,ACK_DETECT_s,COMPLETE_ACK_s,IDLE_DETECT_s和LINK_OK_s。图9Auto-NegotiationStateMachine设备在链路速率同步之后开始协商过程,如图4-9所示。在AN_ENABLE_s状态,如果设备的自协商功能被disable了,则转到AN_DISABLE_LINK_OK_s状态,否则转到AN_RESTART_s状态,开始自协商过程。在AN_RESTART_s状态启动一个计数器,并开始发送配置信息为0的/C/码报文,通知对端设备准备开始协商通信能力。当计数器计数完成后转到AN_ABILITY_s。在AN_ABILITY_s状态检测对端发来的通信能力的配置信息,同时向对端设备发送自己的通信能力配置信息。当检测到对端发来的连续三次以上相同的能力配置信息(ability_match),且能力配置信息不为0,则转到ACK_DETECT_s状态。在ACK_DETECT_s状态检测对端发来的对自己通信能力的应答信息,同时向对端应答配置信息。当检测到对端发来的连续三次以上相同的应答配置信息,且收到的应答配置信息和在AN_ABILITY_s收到的通信能力配置信息一致时(consistency_match),则转到COMPLETE_ACK_s状态;否则转到AN_ENABLE_s从新开始自协商。在COMPLETE_ACK_s状态启动计数器,继续检测对端的应答信息,当计数器完成计数且接收到的对端能力寄存器非零时转到IDLE_DETECT_s状态,否则转到AN_ENABLE_s状态重新协商。在IDLE_DETECT_s状态启动一个计数器,并开始发送/I/码报文。当计数器计数完成且检测到对方发来的连续三次以上空闲信息(idle_match)转到LINK_OK_s,表明协商成功;否则转到AN_ENABLE_s从新开始自协商。状态,发送用户数据。如果还检测到ability_match,则表明与对端失去协商同步,状态转移到AN_ENABLE_s从新开始自协商。2.2.2PCSTransmitControlPCSTransmitControl状态机用于根据Auto-NegotiationStateMachine输出的发送类型指示信号XMIT来决定发送数据类型。状态机一共由七个状态组成:TX_INIT_s,TX_K28_5_s,TX_CONFIG_CB_s,TX_CONFIG_REG1_s,TX_CONFIG_REG2_
本文标题:基于FPGA光纤以太网自协商的设计与实现
链接地址:https://www.777doc.com/doc-4676228 .html