用户接口包括AX14-Stream发送接口和AX14-Stream接收接口,下文简称为用户发送接口和用户接收接口,数据案度可以是易位或16位,其中,8位接口主要针对标准的以太网应用,它利用一个125MHz的时钟产生1Gbps的数据率;当使用16位宽时,可以在不提高时钟频率的条件下将用户接口的数据率提高到2Gbps。
1 用户发送接口功能和信号介绍
(1)用户发送接口信号描述
Vintex-6 FPGA的 TEMAC使用AX14-Stream接口与用户进行数据交互,AXI4-Stream标准的详细信息请参考ARM*AMBA* AXI4-Stream Protocol Specification v1.0。用户通过 AX14-Stream发送接口将数据发送到TEMAC核。需要注意的是,未单独声明的信号都是高电平有效。发送接口全部信号的简要说明如下表1所示。
表1 发送接口情号及描述
(2)用户发送接口信号时序
1)8位宽的用户接口时序
发送时,将数据帧置于tx axis mac_tdata数据接口总线上,并将tw_axis_mac_tvalid置为有效,用户侧等待,直到tx_axis_mac_tready信号有效时发送数据。如果tx_axis_mac_ tready信号一直有效,用户侧持续发送后续字节。
8位案的数据帧的正常发送时序如图1所示,其中,DA为6字节的目的地址:SA为6字节的源地址:L/T为2字节的长度/类型域;FCS为4字节的帧校验序列。所有信号和时钟_mac_ack同步,发送时首先将数据的首字节送入x_axis_mac_tdats总线,同时将w axis mac tvalid置为有效,维持信号的当前状态,等待MAC核发送的tx axis mac tready 信号变为有效。当to axis m_tready 信号有效时,表示MAC可以接收数据,此时用户接口陆续输入后续字节:当xaxis mac tready信号无效时,用户接口停止输入字节,继续等待txaxis mac tready信号变为有效。在图1中,用户接口在tx_axis_mac_tready信号为“1”时,先发送两个字节,等待x_axis_mac_tready信号再次为“1”时,发送后续的字节,帧传输完成的标志是在帧发送到最后一个字节时,t_axis_mac_tlast 置为有效。
图1 数据帧的正常发送时序(8位接口)
2)16位宽的用户接口时序
当选用16位宽的用户接口时,数据帧发送过程与8位宽接口时序基本一致,区别在于选用16位宽接口时增加了tu_axis_mac_tkeep[1:0]总线,用于指示toaxis mac tdata[15:0]总线两字节中有效的字节(16位时每个时钟周期发送两个字节数据),该指示位只对帧尾信号有作用。需要注意的是,tx_axis_mac_tdata[7:0]用于发送16位数据的高字节,tx_axis_ mac_tdata[15=8]用于发送16位数据的低字节,例如,图2中的DA地址为AA-BB-CC-DD EE-FF,tx_axis_mae_tdata[15:0]总线发送的数据时序依次为“BBAA”、“DDCC”和“FFEE”。在正常的帧发送过程中,tx_axis_mac_tkeep[1:0]一直置为“11”,表示tu_axis mac tdata [15:0]总线的两字节都有效:当发送数据帧尾时,tx axis mac tlast置为高,此时xxis mac_tkeep[1:0]合法值可取“11”或“01”,分别表示tx_axis_mac_tdata[15:0]总线的两字节都有效或只有高字节有效。
图2 数据帧的正常发送时序(16位楼口)
(3)IFG和统计功能
用户发送接口除了发送数据信号外,还包括帧间隔控制和发送统计矢量信号,帧间间隔调整和发送统计的相关附属信号如表2所示,
表2 帧间间隔调整和发送统计的相关附属信号
1)帧间间隔调整
在半双工工作模式下,MAC核在向物理层传输数据之前,首先进行截波侦听,如是物理链路上有载该,说明有数据正在线路上传输,本端数据必须先等待;当信听到载波消失后,本端数据可以准备发送。CSMA/CD协议规定两帧数据之间必须存在间隔,即InterFrame Gsp(IFG),其间隔时间用于链路上的设备恢复状态,以便顺利接收下一帧数据。在全观工模式下,两端收发接口直接互连,不存在接收和发送信号冲突,此时不需要进行链路的载波侦听,MAC核只需要控制自身的发送接口,在以太网相邻两帧之间插入一定的空闲周期实现InterFrame Gap,MAC核的下一帧数据在空闲周期结束后再发送。
IPG空闲周期数由 tx_ifg_delay的值决定,最小值为IEEE802.3规定的12个发送时钟周期,当帧间间隔调整使能信号Interframe Gap Adjust Enable 置为0或 tx_ifg_delay的值小于12时,IFG的 x_ifg_delay都默认为12。在用户发送接口实现帧阒间隔调整功能的过程如图3所示。MAC核可以通过延迟将x_axis_mae tready信号延迟置为高。使得用户楼口的t_axis_mac_tdana 信号延缓发送数据,达到IFG规定的周期后,将 txaxis mae_trendy信号置为高,发送接口可以继续发送数据帧。
图3 帧间间隔调整功能示例
2)发送统计失量时序
发送数据帧的信息统计由tx_statistics_vector内部的比特位完成,tx_statistics_vaid是其有效的指示信号,发送时序如图4 所示,tostatistics vector[31:0]在最后一帧给出统计矢量,u_statistics_valid为高时有效。
图4 经计矢量的发送时序
统计矢量的比特位定义。VLAN帧发送,帧发送的FCS等内容详见Xilinx LogiCORE IP Virtex-6FPGA Embedded Tri-Mode Ethemet MAC Wrapper v2.3(即UG800).
2 用户接收接口功能和信号介绍
(1)用户接收接口信号描述
AX14-Scream主要面向高速数据流传输,TEMAC核的用户侧采用AX14-Stream 楼口。用户接收接口信号及描述如表3所示。
表3 用户接收接口信号及描述
(2)用户接收接口信号时序
8位宽的接收接口数据帧正常传输时序如图5所示,所有信号和时钟emae_aelk同步。当收到一个数据帧时,对每个有效字节置rx_axis_mac_tvalid为高电平。在接收帧的最后一个字节时,_exis_mat_tlast有效。
图5 接收接口数据帧正常的输时序(8位)
16位宽接口的数据帧接收过程与8位宽时大致相同,区别在于16位宽接收接口增加了xaxis mae tkeep[1:0]总线。用于指示每个时钟周期所接收到的2字节数据是否有效。如图6所示为16位宽的接收接口信号时序图,正常接收过程中,rx_axis_mac tkeep(1:0]一直为*11”,直到rx axis mae tlast 置为高。此时rx axis mae tkeep置为“11”或“01”,图中 DA的顺序为AA-BB-CC-DD-EE-FF.L/T为0x00FE。此处需要注意的是, rn axis mac idata[7:0]接收的是高字节,nxaxis mac tdata[15:8]为低字节,字节内的比特位顺序不变。
图6 16位宽的接收接口信号时序
当rx_axis_mac_tlast 和 rx_axis_mac_tuser都置为有效时表示当前帧中包含错误,如图7所示。
图7 接收错误数据帧的接口信号时序
TEMAC核接收到错误帧时,将x_axis_mac_taser 信号置高,接收帧错误的原国包括: FCS错误:
● 帧长度小于64字节的最小值限制:
● 接收到了Jumbo帧,但是Jumbo帧功能未选;
● 接收到了1519~1522字节长的VLAN帧,但是VLAN帧功能未选:
● 需要填充至最小帧长度但未填充;
● 帧接收时的物理搓口指示错误:
● 设定了帧过滤功能,检测到不匹配的数据帧:
● 在1000BASE-X或SGMII模式时,8BVIOB编码错误,
(3)接收统计矢量信号和时序
接收接口的统计矢量信号如表4所示,接收数据帧的信息统计由r_statistics ectar内部的比特位完成,r statistics valid是其有效的指示信号。
表4 接收接口的统计矢量信号
接收接口的统计矢量信号时序如图8所示,x_statistics_vector[27:0]在最后一帧给出统计矢量,当rx_statisties_valid信号置高时有效。
图8 接收接口的统计欠量信号时序
(4)流控功能和接口信号
在全双工模式下,TEMAC核可以通过暂停控制帧的发送和响应来实现流量控制功能。流量控制的需求示例如图9所示,图中右侧TEMAC核的参考时钟比标准的125MHz稍快,左侧TEMAC核的参考时钟比标准的125MHz稍慢,左侧TEMAC栋的接收速率无法匹配上右侧TEMAC核的发送速率,如果没有流量控制机制,将造成左侧 TEMAC核的接收 FIFO溢出。通过引入流控机制,在左侧的FIFO溢出前,通知右侧 TEMAC核停止发送数据,这样可以避免数据帧丢失或损坏。
图9 流量控制的需求示例
1)流量控制的基本原理与暂停控制帧格式
流量控制的基本原理是通过TEMAC核接收端向发送斕发送暂停控制帧,使得数据线路在特定的时间段内停止传输数据。以图9为例,当左侧TEMAC核中的FIFO接近饱和时,左侧TEMAC核可以发送暂停请求来控制流量,当右侧TEMAC核接收到左侧TEMAC核发送的暂停控制帧时,将会在暂师控制帧设定的暂停时间内停止发送数据。暂停控制帧格式如图10所示,在一个有效的暂停控制帧中,其长度为以太网的最小帧长度64字节;其目的地址为保留的组播地址Ox0180C2000001;源地址为发送暂停控制帧端口的48位MAC地址:MAC控制类型域为0x8808,表明该帧为暂停控制帧:暂停控制帧操作码为0x0001(即进行PAUSE操作);暂停时间长度为2字节,它是暂停发送方请求对方停止发送数据的时间长度,时间单位是pause_quantem(为当前速率下传输512位数据所用的时间,如1Gbps时为512ms),Pwuse Time 的范围值为0x0000-0xFFFF,通常设为0xFFFF:剩余字段填克为0(填充以达到最小帧长度),随后接FCS 域。
图10 暂停控制帧格式
2)流控制接口信号
表5描述了流控接口信号。
表5流控接口信号及描述
3)流量控制的进行机制
(1)暂停控制帧的发送。当TEMAC核被配置为支持流控帧传输时,pause val总线用于传输暂停值,用户通过将pause rtq信号置为高来启动流擦帧的发送,暂停请求时序如图11所示。当对TEMAC核发出暂停请求时,若当前发送接口处于空闲状态,即未发送数据帧时,暂停控制帧立即被发送,反之,如果发送端在发送暂停请求的时刻处于发送忙状态,必须在当前帧发送完成后,暂停控制帧才被允许发送。
图23暂修请求时序
在暂施控制帧格式中,目的地址为IEEE802.3定义的多播地址,这样使得任何具有流控功能的TEMAC核都能响应:源地址为可配置的暂停控制帧MAC地址:paus0_req置高有效时,从pause_val[15:0]信号采样得到的数值被编码写入TEMAC控制参数段,用于选择暂停时间间隔(以pause_qeantum为单位时间》,
当TEMAC核被配置为不支持流控帧传输时,用户可以不利用TEMAC核内部自带的暂停控制帧发送功能。而采用通过用户逻辑连接到AX14-Stream发送接口实现,利用 AX14-Stream 後口直接发送暂停控制帧,任何类型的控制帧都可以通过发送端 AX14-Stream接口进行发送,其传输过程和以太网标准数据帧是一样的。
(2)暂停控制帧的接收。TEMAC核对接收到的数据帧都要进行校验,包括帧格式,帧校验及帧长度,若接收到的数据帧无法满足校验要求,则通过将naxis me tuser信号置高。指示接收的帧发生错误。当TEMAC核配置为支持暂停控制帧响应时, TEMAC核对接收到的正确数据帧执行相关帧格式解析功能,
a.目的MAC地址域是IEEE 802.3定义的控制多播地址(01-80-C2-00-00-01)或用户自配置的智停控制帧MAC地址;
b. 长度/类型城与MAC控制类型码匹配;
c. 接收帧的操作码(OPCODE)与以太网MAC控制操作码匹配。
如果以上3步匹配过程都正确,且帧长度正好是64字节,则表明该帧为暂停控制帧,其16位的MAC控制参数将作为pause_quantum的数目决定传输超迟时间,传输延迟可以通过对 AX14-Stream 楼口的t区_axis_mac_tready信号一直置为无效来实现,延缓数据渣的发送,等到暂停时段结束后再摄mas treadly置为有效。这样用户才可以再向MAC发送数据,从而达到流量控制的目的。对于上述3步匹配过程不全正确的接收帧,可以当作错误帧直接丢弃,或由用户逻辑负责解析、响应或丢弃。
当TEMAC核配置为不支持暂停控制帧响应时,可采用用户逻辑实现流控帧的识别和解析功能:对接收正确的帧进行3步匹配过程,若匹配正确,则接收到的帧为暂停控制帧,执行相应的暂停操作;若匹配不都正确,表明接收帧是非暂停控制帧,执行其他操作。