当前位置:文档之家› 以太网接口和框图详细讲解

以太网接口和框图详细讲解

实时嵌入式系统以太网接口及应用网络层次模型以太网层次模型以太网层次功能物理层:物理层:定义了数据传输与接收所需要的光与电信号光与电信号,,线路状态线路状态,,时钟基准时钟基准,,数据编码电路等编码电路等。

并向数据链路层设备提供标准接口准接口。

数据链路层数据链路层::提供寻址机制提供寻址机制,,数据帧的构建,数据差错检查数据差错检查,,传输控制传输控制。

向网络层提供标准的数据接口等功能提供标准的数据接口等功能。

IP 层IP 数据报以太网的MAC 帧格式在帧的前面插入的8 字节中的第一个字段共7 个字节,是前同步码,用来迅速实现MAC 帧的比特同步。

第二个字段是帧开始定界符,表示后面的信息就是MAC 帧。

MAC 帧物理层MAC 层以太网V2MAC 帧目的地址源地址类型数据FCS6624字节46 ~ 150010101010101010 10101010101010101011前同步码帧开始定界符7 字节1 字节…8 字节插入为了达到比特同步,在传输媒体上实际传送的要比MAC 帧还多8 个字节以太网接口的构成从硬件的角度看,从硬件的角度看,以太网接口电路主要由MAC MAC控制器和物理层接口控制器和物理层接口控制器和物理层接口((Physical Layer Physical Layer,,PHY PHY))两大部分构成两大部分构成。

嵌入式网络应用的两种方案处理器加以太网接口芯片处理器加以太网接口芯片。

芯片如芯片如RTL8019RTL8019RTL8019、、RTL8029RTL8029、、RTL8139RTL8139、、CS8900CS8900、、DM9000DM9000等等,其内部结构也主要包含这两部分部结构也主要包含这两部分。

自带自带MAC MAC MAC控制器的处理器加物理层接口芯片控制器的处理器加物理层接口芯片控制器的处理器加物理层接口芯片。

如DP83848DP83848、、BCM5221BCM5221、、ICS1893ICS1893等等。

物理层芯片DP83848系统框图LPC1768的以太网接口LPC1700LPC1700系列处理器的以太网模块包含一个全特系列处理器的以太网模块包含一个全特性的性的10Mbps 10Mbps 10Mbps或或100Mbps 100Mbps的以太网介质访问控制器的以太网介质访问控制器(MAC MAC),),),采用采用采用DMA DMA DMA硬件加速器可以提供最优化硬件加速器可以提供最优化的性能的性能。

在LPC1700LPC1700系列处理器的以太网模块中有系列处理器的以太网模块中有系列处理器的以太网模块中有16KB 16KB 16KB的的专用专用SRAM SRAM SRAM数据缓存数据缓存数据缓存。

用于保存收发的以太网数据帧据帧。

该缓冲区可由以太网该缓冲区可由以太网DMA DMA DMA控制器使用控制器使用控制器使用。

从而大大减轻了而大大减轻了CPU CPU CPU对数据收发的开销对数据收发的开销对数据收发的开销。

以太网模块与片外以太网物理层接口采用以太网模块与片外以太网物理层接口采用MII MII (介质独立接口介质独立接口))或RMII RMII((简化的简化的MII MII MII))协议协议,,和片上的和片上的MIIM MIIM MIIM((MII MII管理管理管理))串行总线串行总线。

LPC1768的以太网接口LPC1768的以太网RMII 引脚和MIIM 引脚引脚名称类型引脚描述ENET_TX_EN 输出发送数据使能ENET_TXD[1:0]输出发送数据,发送数据,2位ENET_RXD[1:0]输入接收数据,接收数据,2位ENET_RX_ER 输入接收错误ENET_CRS 输入载波侦听载波侦听//数据有效ENET_REF_CLK/ENET_RX_CLK 输入参考时钟引脚名称类型引脚描述ENET_MDC 输出MIIM MIIM时钟时钟ENET_MDIO输入输入//输出MI MI数据输入和输出数据输入和输出帧描述符与状态字以太网DMA 控制器将每个以太网帧用一对描述和状态字来表示描述和状态字来表示。

描述符中包含了对应帧的数据起始地址以及数据长度应帧的数据起始地址以及数据长度。

状态字则保存了DMA 控制器处理该帧后控制器处理该帧后((发送或接收或接收))的结果的结果。

针对发送和接收分别对应有不同描述符与状态字队列状态字队列。

所以DMA 控制器一共维护4个循环队列个循环队列。

发送描述符及状态字队列发送描述符及状态字队列,,接收描述符及状态字队列接收描述符及状态字队列。

接收描述符与状态字队列接收描述符控制字段作用接收状态字位段说明发送描述符与状态字队列描述符与状态字队列描述符队列是用户程序和以太网DMA 控制器间数据交换的桥梁器间数据交换的桥梁。

DMA 控制器将描述符及状态字队列维护为循环队列循环队列。

队列的状态分为三种队列的状态分为三种::满,半满,空。

循环队列的操作通过循环队列的操作通过““队头队头””和“队尾队尾””实现实现。

描述符与状态字队列以太网队列中的以太网队列中的““队头队头””称为生产者(producer),负责将数据装入队列负责将数据装入队列,,“队尾”称为消费者(consumer),负责将数据从队列取出从队列取出。

接收队列发送队列发送数据DMA 控制器用户程序PRODUCER接收数据DMA 控制器PRODUCER 用户程序CONSUMER循环队列工作原理为了实现循环队列的操作为了实现循环队列的操作,,以太网DMA 控制器提供了4个描述符及状态字索引寄存器个描述符及状态字索引寄存器。

由DMA 维护的TxConsumeIndex ,RxProduceIndex 和软件驱动维护的TxProduceIndex,RxConsumeIndex 。

复位值均为0。

每操作一个元素每操作一个元素,,索引加1。

发送队列发送数据DMA 控制器TxConsumeIndex用户程序TxProduceIndex接收队列接收数据DMA 控制器RxProduceIndex 用户程序RxConsumeIndex循环队列工作原理在以太网数据收发时在以太网数据收发时,,软件驱动程序通过ConsumeIndex 和ProduceIndex 的关系就可以判断循环队列的状态断循环队列的状态。

当ConsumeIndex= ProduceIndex 时,队列为空队列为空。

当(ProduceIndex+1)%队列长度= ConsumeIndex 时,队列满队列满。

循环队列索引的翻转(WRAP AROUND)问题问题::在两个索引加1后,超出了队列的范围时超出了队列的范围时,,索引应该从队头重新开始索引该从队头重新开始索引。

由DMA 硬件维护的两个索引由硬件解决翻转索引由硬件解决翻转,,由软件维护的两个索引需要软件解决翻转问题要软件解决翻转问题。

循环队列工作原理接收队列接收数据DMA 控制器RxProduceIndex用户程序RxConsumeIndex接收数据接收数据接收数据队列满队列空翻转接收数据以太网接收数据举例控制字PACKET PACKET0x7FE01409状态字描述符状态字队列1707状态字07状态字12F0,共8字节F1,共8字节RxDescriptorRxStatus 0x7FE01411PACKET0x7FE01419PACKET0x7FE01325描述符队列控制字17控制字17控制字17数据包缓冲区RxProduceIndex=RxConsumeIndex=RxDescriptorNumber=30123123状态字07F2,共3字节F0,共8字节0队列翻转LPC1700以太网接口寄存器LPC1700LPC1700系列处理器以太网模块的寄存器分系列处理器以太网模块的寄存器分为4,包括大类大类,包括MAC MAC MAC寄存器类寄存器类寄存器类171717个寄存器个寄存器个寄存器、、控制寄存器类控制寄存器类171717个寄存器个寄存器个寄存器、、接收滤波器类接收滤波器类55个寄存器个寄存器,,以及模块控制寄存器类以及模块控制寄存器类55个寄存器,共计共计444444个寄存器个寄存器个寄存器。

详见表详见表5.285.28应用举例本以太网接口实例实现LPC1700以太网接口的初始化口的初始化,,实现以太网接入及以太网数据收发据收发。

初始化内容初始化内容::DP83848芯片初始化芯片初始化,,以太网接口初始化网接口初始化,,以太网缓冲区初始化以太网缓冲区初始化。

以太网接口初始化流程1打开、使能以太网引脚使能以太网引脚,,打开EMAC EMAC EMAC控制器控制器2、利用利用MAC_MAC1 MAC_MAC1 MAC_MAC1 和和MAC_COMMAND MAC_COMMAND 寄存器复位以太网模寄存器复位以太网模式3、初始化初始化MAC MAC MAC控制寄存器控制寄存器控制寄存器,,设置MAC_MAC1 MAC_MAC1 、、MAC_MAC2 MAC_MAC2 、、MAC_MAXF MAC_MAXF 、、MAC_CLRT MAC_CLRT 、、MAC_IPGR MAC_IPGR等寄等寄存器4、使能使能RMII RMII RMII接口接口接口,,复位复位RMII RMII RMII逻辑逻辑5、利用利用write_PHY()write_PHY()write_PHY()和和read_PHY()read_PHY()函数操作函数操作函数操作DP83848DP83848DP83848::复位、检查芯片和链路状态检查芯片和链路状态、、6、利用利用MAC_IPGT MAC_IPGT MAC_IPGT和和MAC_SUPP MAC_SUPP寄存器配置速率和双工模式寄存器配置速率和双工模式7、利用利用MAC_SA MAC_SA MAC_SA寄存器设置寄存器设置寄存器设置MAC MAC MAC地址地址8、设置收发设置收发DMA DMA DMA描述符描述符9、利用利用MAC_RXFILTERCTRL MAC_RXFILTERCTRL MAC_RXFILTERCTRL寄存器设置接收滤波寄存器设置接收滤波1010、、利用利用MAC_INTENABLE MAC_INTENABLE MAC_INTENABLE和和MAC_INTCLEAR MAC_INTCLEAR寄存器使能寄存器使能寄存器使能EMAC EMAC 中断和清除中断标志 1111、、接收和发送使能以太网接口接收发送缓冲区分配 rx_descr_init()函数及tx_descr_init()函数用于接收与发送缓冲区的初始化。

代码如用于接收与发送缓冲区的初始化下。

以太网接口接收发送缓冲区分配4×8字节0x7FE0 00004×8字节3接收描述符接收状态字发送描述符×8字节3×4字节4×1500字节3×1500字节发送状态字接收缓冲区发送缓冲区用户程序的以太网帧表示以太网帧接收以太网帧发送LPC1768以太网驱动程序的层次结构硬件无关以太网功能以太网功能::ethernet_init, ethernet_poll, ethernet_send 帧操作帧操作::frame_send, frame_get, frame_process硬件相关帧与内存交换:帧与内存交换:CopyFromFrame_EMAC, CopyToFrame_EMAC帧操作:帧操作:Init_EMACInit_EMAC;;CheckFrameReceivedCheckFrameReceived,,StartReadFrameStartReadFrame,,ReadFrameBE_EMACReadFrameBE_EMAC,,EndReadFrameEndReadFrame;;RequestSendRequestSend,,WriteFrame_EMAC。

相关主题