
EMAC 数据协议与知识.ppt
21页Chapter 11 Ethernet Access Controller (EMAC) block以太网基本帧结构用于以太网的帧格式包括帧前序(PA) ,开始帧定界符(SFD),目的地址(DA),源地址(SA),类型/长度域,数据域,和帧校验序列(FCS) Preamble and SFD :preamble 是56位域,由交替1和0的组成 SFD域的序列10101011,并且紧随在preamble后面preamble 和SFD用于同步Address Fields: 每个帧包含2个地址域:目的地址域和源地址域目的地址域指定帧发往的网络节点源地址域指定发送帧的网络节点 一个48位地址写成12个16进制数字对在2组,表示一个字节的信息在网络上传输的字节顺序是从MSB到LSB在字节内部的传输顺序,开始从字节的低重要字节(LSB)到MSB举例,一个以太网地址16进制的一串是F0-4E-77-8A-35-1D等价于下面的bit序列,从左到右发送到网络上,0000 1111 0111 0010 1110 1110 0101 0001 1010 1100 1011 1000 如果目的地址域的most-significant byte的LSB是0,地址域包含一个独立(单播)地址。
如果LSB是1,地址域包含一个组(多播)地址广播地址,它的48bit都是1 如果这个域的值等于或小于最大数据长度1500十进制(0 x05DC),这个域被用于长度域这种情况下,域的值指示字节数目当接收这种类型帧,比较type/length域的值与接收帧的数据域的实际数目,如果不精确匹配,错误报告 如果这个域的值数字上大于或等于1536十进制(0 x0600),这个域被用于类型域这种情况下,16进制标志符用来指示在帧的数据域被携带的协议数据的类型当接收这种类型帧,不比较type/length域的值与接收帧的数据域的实际数目 如果这个域的值在1501和1535之间,这个帧是无效的,但不能被自动丢弃当接收这种类型帧,不比较type/length域的值与接收帧的数据域的实际数目 当传输时,如果数据域长度小于帧的数据域要求的最小值,pad数据字节自动加载在数据域后面,FCS域之前来满足数据域最小长度的要求pad数据的内容全是0在接收一帧时,length field存在接收缓冲中,用于确定数据域的有效长度数据,任何pad数据被软件丢弃Type/Length Field :Data Field: 这个域必须包含最小的46字节数据,可以变化到最大1500字节数据 Frame Check Sequence : 这个域用CRC来计算,CRC是用目的地址,原地址,type/length,和数据域的内容来进行一个多项式计算。
当帧由网络节点生成,CRC值被计算CRC值32bit放置在FCS域,当帧发送时CRC多项式的X31系数作为第一位发送,X0系数作为最后一位当帧读入时, CRC能被接收网络节点再一次计算第二次计算的结果与原始网络节点发送的FCS的值作比较该域用于校验在网络上传输过程中有没有错误发生 End-of-Frame Delimiter: 对于在MII_TXD脚的数据,end-of-frame (EOF)定界符由MII_TXEN信号的无效来指示对于在MII_RXD脚的信号,MII_RXDV的无效建立end-of-frame (EOF)定界符RECEIVER: 当EMAC开启时,只要其中的一个接收缓冲完成中断标志被清除,它就马上开始接收帧如果RXACIF和RXBCIF都被清除了,接收缓冲器A首先被使用如果两个标志都被设定,就没有数据被存储到接收缓冲器中PAUSE帧除外)1. 如果MII_RXDV有效,接收机首先进行有效PA/SFD序列的检查如果PA/SFD有效,它就会被截去.如果有效的PA/SFD没有找到,帧被忽略 2. 在帧的目的地址六个字节被接收后,EMAC对帧进行地址勘查如果地址勘查拒绝了该帧,接收机转入空闲,接收机缓冲器停止接收数据,接收帧尾指示器无效。
如果地址勘查接受了该帧,接收缓冲器继续接收数据 .3. 在帧的前14个字节被接收后,EMAC对帧进行类型/长度勘查如果类型/长度勘查拒绝了该帧接收机转入空闲,接收机缓冲器停止接收数据,接收帧尾指示器无效如果类型/长度勘查接受了该帧,接收缓冲器继续接收数据4. 接收数据到缓冲器A或者B中5. EMAC接收机自动的从接收帧中计算一个4字节长的帧检查序列,并且将它和后缀于接收帧的CRS数据比较 接收机接收的紧靠着的两个帧之间的空间至少要求96位的时间,如果帧间距离小于96位的时间,后面的帧就不能保证被接收机接受 EMAC使用接收帧的目标地址来实行过滤,将不符合给定条件帧排除 .(使用RXCTS接收控制和状态寄存器)lPROM1 所有帧都被接收lUNICAST FILTER:PROM0时,目的地址和MACAD相比较,决定是否接收lBROADCAST FILTER:PROM0 BCREJ=1 所有广播帧被接收 BCREJ0 拒绝广播帧lMULTICAST FILTER:CONMC=1,PROM=0,只有符合HASH表的多播帧才被接受 CONMC=0所有的多播帧被接受 lPAUSE DESTINATION ADDRESS:如果EMAC处于全双工模式,并且RFCE位被设定,接收机侦测到来的PAUSE帧。
一个PAUSE帧有一个48位的多播目的地址0180C2000001,或者是唯一的DA.一旦检测到了一个PAUSE帧,帧就会被临时接受,进行进一步的类型/长度勘查 Address Recognition Type/Length Recognition EMAC使用接受帧的类型/长度域执行过滤功能,并拒绝不符合接受标准的帧 使用ETCTL以太网类型控制寄存器)如果ETCTL寄存器的所有位被清0,以太网类型过滤器不工作如果FPET位被设定,符合ETYPE寄存器值的以太网类型帧被接受如果FEMW被设定,Emware以太网类型帧被接受如果FIPV6位被设定,IPV6以太网类型帧被接受如果FARP位被设定,带有地址解决协议的以太网类型帧被接受如果IPV4位被设定,IPV4以太网类型帧被接受如果FIEEE位被设定,具有有效IEEE802.3长度的以太网类型帧被接受 接收中可能出现的错误和中断(使用RXEIF和RXEIE):如果一个接收到的帧的长度小于64字节,接收帧视为碎片并丢弃大多数碎片是由于冲突引起的如果一个接收帧的长度大于1518,接收帧被视为超长并是一个错误EMAC产生接收错误中断 如果在接收过程中,MII_RXER有效,则它指示一个媒质错误。
EMAC产生接收错误中断 如果类型/长度域小于或等于1500(但是大于46),但是接收帧数据长度不等于类型/长度域中标注的长度,就会发生长度失配错误如果类型/长度域小于或等于46,接收帧数据域长度不是46,也会发生长度失配错误EMAC产生接收错误中断EMAC接收机自动的从接收帧中计算一个4字节长的帧检查序列,并且将它和后缀于接收帧的CRS数据比较,如果发生了一个CRS错误,EMAC产生接收错误中断在帧结束定界符后,接收帧被去尾以最接近数据边界如果有一个额外的半字节,这个dribble半字节被丢弃如果CRS的值不正确,同时有一个dribble半字节,就会发生调整错误,EMAC产生接收错误中断如果一个接收帧超过了接收缓冲器的大小,相应的接收超限错误标志被设定在超限错误的情况中,帧不被接收,而且相应的完成标志和接收错误标志都不会被设置 Transmitter: 发送数据,用户必须将其写入发送缓冲器,它由目的地址,源地址,类型/长度域和数据域组成发送机会自动发送帧所必须的帧前序,SFD和FCS,也会自动附加填充数据以扩充数据长度达到46字节的最小帧长 当帧被写入发送缓冲器,相应的发送帧尾指示器被初始化之后,EMAC发送机就准备在网络上发送该帧了。
当向TCMD域写入时,START命令被执行,EMAC在MII_TXEN上保持有效并且开始发送帧前序,帧起始符,然后是来自于发送缓冲器的帧信息 当网络空闲时,网络节点就会等待一个称为帧间隙(IFG)的短暂时段,然后再发送帧这为以太网接口在帧接收之间提供了短暂的恢复时间连续发送的最小帧间隙是96位时间半双工模式: Deferring: 在半双工模式,如果有负载(网络忙),网络节点监听直到负载停止这就是用延迟来避免堵塞一旦网络变成了空闲(也包括等待帧间隙),网络节点可以开始发送帧发送机等待无载波侦听持续60位的时间,然后等待另一个36位时间之后开始发送帧 Collision Detection and Backoff: 冲突侦测和退避特性是以太网802.3MAC协议操作的一个正常部分它可以致使快速自动的重订发送时间表该特性使独立的网络节点以公平礼貌的方式参与接入网络的竞争它为网络节点提供了一种自动调整他们的行为的方法,以回应网络负载 Collision Window: 冲突窗口时段被设置为SFD之后的64字节时间(512位时间)如果在冲突窗口时段内发生了冲突,重发进程被初始化如果发生了一个延迟冲突(在冲突窗口时段之后发生的冲突),不会实施重发行为。
LCIE位设置为1,重发计数器被清除,发送被取消如果 不被屏蔽(LCIE被设置),EMAC产生一个延迟冲突中断Jam Period: 如果在发送过程中的任何时间检测到了冲突,EMAC发送机会继续发送32位数据(称为冲突生效拥挤信号),这样在以太网络中的其他设备,都能检测到冲突如果在帧发送的早期冲突就被检测到了,EMAC发送机继续发送直到将帧前序发送完成,然后再发送32位拥挤信号如果在发送FCS时检测到了冲突,直到将最后的FCS半字节数据转移完成,32位拥挤信号才被发送Backoff Generator: 在冲突窗口时段发生了冲突之后,EMAC发送机尝试重发帧数据之前的延迟时间,被设置为512位以太网缝隙时间的倍数总的退避延迟量用一个伪随机选择的整数乘以缝隙时间来计算 退避算法用下面的公式来确定整数r,它被用于和缝隙时间相乘,产生一个退避延迟 0r 2k指数k是这样一个值,它是等于尝试重发的次数或者10,两者中较小的那个系数r是一个在0和2k之间随机选择的整数 在EMISC寄存中的RANDOM域包含一个由退避逻辑随机生成器生成的10位随机数字r如果SSB位被设定,发送机退避逻辑强制信号退避时隙为512位时间。
重发计数器: EMAC发送机有一个重发计数器,RETX,它计算在尝试发送一个信号帧过程中,在冲突窗口时段发生的冲突次数在每一次冲突过后,重发计数器加1,当帧成功发送时重置为0当TXACT被清除时,RETX保持0 EMAC会进行多达15次的重发尝试如果当RETX为15时又发生了冲突,过量冲突中断标志(ECIF)被置1,整个帧被丢弃,重发计数器重置为0如果不被屏蔽(ECIE设为1),EMAC产生一个过量冲突中断TXCTS中的TXACT位在整个重发过程中始终有效TXACT一旦被清除,就开始进行下一次发送 RETX的值可以通过EMISC读出来 Ethernet Buffers在系统RAM中,分配有两个以太网接收缓冲器和一个以太网发送缓冲器他们的大小和开始地址由BUFCFG寄存器的BUFMAP域配置 Receive Ethernet Buffer: 接收帧时,以太网接受缓冲器存储目的地址(DA),源地址(SA),类型/长度域,数据域和帧校验序列(FCS)如果接收机有数据要存入接受缓冲器,但接受缓冲器已满,那么该接受帧只能被丢弃如果接受帧的长度超过了接受缓冲器,相应的接受缓冲器超限标志位被置1如果不被屏蔽(相应的接受缓冲器超限中断使能位置1),EMAC产生一个超限中断。
receive A end-of-f。












