您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > AT91SAM7x256_128 参考手册(EMAC部分)
AT91SAM7X256/128中文参考手册(EMAC部分)翻译焦海波前言Atmel公司去年八月(2005年)发布了最新的AT91SAM7X256/128芯片,该芯片实现了一个与IEEE802.3标准兼容的以太网MAC,这引起了本人极大的兴趣。为了能够让自己深入了解MAC模块的技术细节,同时提升自己的英文阅读及翻译水平,本人特意把该芯片携带的技术手册中对EMAC部分的介绍翻译成中文,为了方便中英文对照,文中仍然采用了英文版章节序号:第38节,与英文版一致。38以太网MAC(EMAC)38.1概览EMAC模块使用一个地址检查器,统计与控制寄存器组,接收与传输部件以及一个DMA接口实现了一个与IEEE802.3标准兼容的以太网MAC。地址检查器识别四个特殊的48位地址,还包含一个匹配多播与单播地址的64位哈希(hash)寄存器。它可以识别所有的广播地址,复制所有帧,还可以作用于一个外部地址匹配信号。统计寄存器部件包含的寄存器组对传输接及收操作相关的不同的事件类型计数。这些寄存器连同存储在接收缓冲区列表里的状态字一起,允许软件生成与IEEE802.3兼容的网络管理统计表。38.2结构图图38-1EMAC结构图APB从设备寄存器接口地址检查器统计寄存器组DMA接口RXFIFOTXFIFO控制寄存器组以太网接收以太网发送ASB主设备MII/RMIIMDIO2006-06-15-1-AT91SAM7X256/128中文参考手册(EMAC部分)翻译焦海波38.3功能描述图38-1显示了EMAC模块的不同部件。控制寄存器组驱动MDIO(MDIO,数据输入/输出管理的简称,译注)接口,设置DMA行为,启动帧传输,选择像双工或半双工这样的操作模式。接收部件检查前导字段的有效性,FCS(FrameCheckSequence,帧校验序列的简称,译注),对齐和长度,以及把接收到的帧交给地址检查部件和DMA接口。传输部件从DMA接口取出数据,添加前导字段,并且,如果必要,填充数据(如果发送一个长度小于64个字节的数据包,MAC会生成填充字节将这个数据包扩展到64个字节的昀小限制,译注)和FCS,然后按照CSMA/CD(carriersensemultipleaccesswithcollisiondetect,载波监听多路访问/冲突检测,译注)协议传输数据。如果CRS(carriersense,载波监听)是活跃状态则推迟启动传输。如果COL(collision,冲突)在传输期间成为活跃状态,则一个堵塞序列被声明,在推迟一段随机时间后传输会被重试。在全双工模式CRS和COL不起作用。DMA部件通过它的ASB(AdvancedSystemBus,先进系统总线的英文简称,译注)总线接口连接外部存储器。它包含缓冲帧数据的接收和传输FIFOs(FirstInFirstOut,先进先出的英文简称,它是一种实现数据先进先出的存储器件,译注)。它加载传输FIFO并且使用ASB总线主动操作清空接收FIFO。接收的数据不会被发送到存储器直至地址检查逻辑已经确定这个帧应该被复制。接收或者传输的帧被存储在一个或更多的缓冲区中。接收缓冲区有128个字节的固定长度大小。传输缓冲区的长度范围在0到2047个字节之间,每一帧被允许保存的缓冲区数可多达128个。DMA部件管理传输和接收帧缓冲区(framebuffer)队列,这些队列可以保留多个帧。38.3.1存储器接口帧数据从EMAC经由DMA接口被传输。所有的传输是32位的字并且可以是单字访问也可以是2,3或者4个字的突发(bursts)访问(关于突发访问请参阅《内存常用词汇(包括突发访问)》一文,译注)。突发访问不能越过16个字节的界限。4个字的突发访问是默认的数据传输方式;单字或者少于4个字的突发访问可以用于传输在缓冲区开始或结尾处的数据。DMA控制器在总线上执行六种操作类型,按照优先级顺序,它们是:1、接收缓冲区管理器写2、接收缓冲区管理器读3、数据传输DMA读4、数据接收DMA写5、传输缓冲区管理器读6、传输缓冲区管理器写38.3.1.1FIFO两个FIFO的深度均是28字节并且系统时钟功能区加快了存储器响应时间和网络速度。数据传入传出FIFO的代表性方式是4个字的突发访问。对于接收,当FIFO包含四个字并且还有三个字以上的空间时,一个总线请求被声明。对于传输,当FIFO还有4个字的空间,或者接下来的传输只是一个或两个字而FIFO中有两个字的空间时,一个总线请求被生成。因此总线响应时间必须小于加载FIFO且传输或接收三个数据字(12字节)的时间。在100Mbit/s,需要960ns的时间传输或接收12个字节的数据。另外,应该为数据从总线加载以及通过FIFOs传送留出六个主时钟周期。对于一个60MHz的主时钟,这需要2006-06-15-2-AT91SAM7X256/128中文参考手册(EMAC部分)翻译焦海波100ns,从而得出的总线响应时间需求为860ns。38.3.1.2接收缓冲区接收的帧,包括可选择的CRC/FCS,被写入接收缓冲区保存在内存中。每一个接收缓冲区128个字节长。它们的开始位置保存在接收缓冲区队列指针寄存器指向的接收缓冲区描述符列表中的一个内存位置。接收缓冲区开始位置是一个32位地址。对于帧的第一个缓冲区,它的开始位置可以偏移昀多3个字节,这取决于写入网络配置寄存器的第14和15位的值。如果缓冲区开始位置被偏移,则帧的第一个缓冲区的有效长度就会被减去相应的字节数。每一个列表条目由两个字组成,第一个是接收缓冲区地址,第二个是接收状态。如果一个接收帧的长度超过了缓冲区长度,如果合适,所使用的缓冲区的状态字除“帧头(startofframe)”状态位和偏移位之外其它位全部清零。地址字段的位0处写1,以表明这个缓冲区已经被使用。然后接收缓冲区管理器读取下一个接收缓冲区的位置并填充接收的帧数据。昀后缓冲区描述符的状态字包含了完整的帧状态信息。接收缓冲区描述符列表的详细信息请参阅表38-1。表38-1接收缓冲区描述符条目位(Bit)功能字031:2缓冲区的开始地址1结束(Wrap)--标记接收缓冲区描述符列表中的昀后一个描述符0所有权(Ownship)--EMAC写数据到接收缓冲区时该位必须是0,一旦已经成功的向存储器写入一帧,EMAC将其设置为1。在缓冲区可以被重新使用之前,程序必须主动清除该位。字131全局的所有广播地址检测30多播哈希匹配29单播哈希匹配28外部地址匹配27保留26特殊地址寄存器1匹配25特殊地址寄存器2匹配24特殊地址寄存器3匹配23特殊地址寄存器4匹配22类型ID匹配21VLAN(虚拟局域网的英文简称,译注)标签检测(即类型ID为0x8100)20优先级标签检测(即类型ID为0x8100并且VLAN标识符为空)2006-06-15-3-AT91SAM7X256/128中文参考手册(EMAC部分)翻译焦海波19:17VALN优先级(只有在位21被设置时有效)16规范格式指示符(CFI)位(只有在位21被设置时有效)15帧尾(Endofframe)--置位表明该缓冲区包含帧尾。如果该位未被设置,那么其它有效的状态位只有12,13和14位。14帧头(Startofframe)--置位表明缓冲区包含帧头。如果位15和位14同时被设置,则这个缓冲区包含了一个完整的帧。13:12接收缓冲区偏移(Receivebufferoffset)--指示第一个缓冲区的数据从32位地址处偏移的字节数。使用网络配置寄存器的当前值更新。如果通过设置网络配置寄存器的位3允许了超长帧模式,则13:12位就用于指示帧的长度。11:0帧的长度,包括FCS(如果选择)。如果选择了超长帧模式,则13:12位也被使用。对于接收帧,缓冲区描述符必须通过向每一个列表条目的第一个字的31:2位写入一个正确的地址进行初始化。位0处必须写0。位1是结束位,用于指示列表中的昀后一个条目。在设置网络控制寄存器的接收允许位以允许接收之前,接收缓冲区描述符列表的开始位置必须写入接收缓冲区队列指针寄存器。接收部件一开始向接收FIFO写入接收的帧数据,接收缓冲区管理器就立即读取由接收缓冲区队列指针寄存器指向的第一个接收缓冲区位置。接着,如果过滤器部件指示帧应该被复制到内存中,那么,数据接收DMA开始向接收缓冲区写入数据。如果发生错误,缓冲区会被恢复。如果当前的缓冲区指针设置了结束位或者这是第1024个描述符,那么,下一个接收缓冲区的位置会从接收描述符列表的开头读取。否则,就会从内存的下一个字读取(即指针继续向下偏移4个字节32位长,译注)。有一个11位的计数器对2048个字的接收缓冲区描述符列表昀大长度位置进行计数。计数值会被加到昀初写入接收缓冲区队列指针寄存器保存的指向列表的指针值上。对接收缓冲区队列指针寄存器的读取返回的指针值,就是当前正在访问的队列条目。在接收状态被写入一个设置结束位的描述符后,或者在1024个描述符被访问后接收状态翻转为0时,计数器复位。写入到接收缓冲区指针寄存器的值可以是任意字对齐的地址,其提供了从写入的地址到存储器顶部至少2048个字位置的有效空间。AMBATM(AdvancedMicrocontrollerBusArchitecture的简称,意为先进微控制器总线架构,为ARM公司的一套总线标准,译注)2.0规范的3.6节规定,突发访问(bursts)不应该超越1K的界限。像接收缓冲区管理器的写,是两个字的突发访问(bursts),为确保不会发生超越1K界限的问题,昀好向指针寄存器写入昀少三个有效位为0的值。当接收缓冲区被使用时,接收缓冲区管理器会置位描述符第一个字的位0以指示其已被使用。如果检测到了一个接收错误,则当前正被写入的接收缓冲区会被恢复。先前的的缓冲区则不会被恢复。程序应该把缓冲区描述符中的被使用位(usedbits)检索一遍以找出到底有多少帧已被接收。它应该检查帧头和帧尾位,并且不依赖于由接收缓冲区队列指针寄存器返回的值,这个值因为有更多的缓冲区被使用而不断改变。对CRC错误的帧,长度过大的帧或长度字段不匹配的帧,所有这些都会由统计寄存器计数,可能存在一个帧片段被保存在一个接收缓冲区序列里的情况。程序可以通过查找——在——帧尾位(end-of-framebit)未置位的缓冲区——之后的——缓冲区的帧头位(start-of-framebit)的设置——来检测这种情况。对一个正确工作的以太网系统,不应该有太长的帧或存在CRC/FCS错误的大于128字节的帧。冲突的帧片段小于128个字节长。因此,在一个接收缓冲区发现一个帧片段是很罕见2006-06-15-4-AT91SAM7X256/128中文参考手册(EMAC部分)翻译焦海波的情况。如果在接收缓冲区管理器读取了接收缓冲区的位置时,位0被置位,那么这个缓冲区已经被使用且不能再被使用,直至程序已经处理这个帧并且清除位0。在这种情况下,DMA部件置位接收状态寄存器中的缓冲区不可用位并触发一个中断。如果在接收缓冲区管理器读取了接收缓冲区的位置时位0被置位,并且一个帧正在被接收,这个帧会被丢弃并且接收资源错误统计寄存器的值会被增加。当总线不能及时响应或者因为HRESP(AHB,AdvancedHigh-PerformanceBus,先进高性能总线的简称,而HRESP是其总线上传输讯号的一种,属于传输响应讯号,transferresponse,详见《IntroductiontoAMBABusSystem》一文,译注)响应值为错误(总线错误)时,一个接收过速错误发生。在接收过速的情况下,接收过速中断被声明并且当前正在写入的缓冲区被恢复。下一个帧的接收将重新使用这个缓冲区地址。如果网络配置寄存器的位17被置位,则接收帧的FCS不会被复制到内存。在这种情况下,接收状态字段中指示的帧长度会被减去4个字节。38.3.1.3传输缓冲区将要被传输的帧保存在一个或更多的传输缓冲区。传输缓冲区可以是0到2047之间的任意长度,因此,传输帧的长度可能会比IEEE802.3标准指定的昀
本文标题:AT91SAM7x256_128 参考手册(EMAC部分)
链接地址:https://www.777doc.com/doc-5938151 .html