以太网控制器芯片的设计及实现-基础电子_第1页
以太网控制器芯片的设计及实现-基础电子_第2页
以太网控制器芯片的设计及实现-基础电子_第3页
以太网控制器芯片的设计及实现-基础电子_第4页
以太网控制器芯片的设计及实现-基础电子_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

精品文档-下载后可编辑以太网控制器芯片的设计及实现-基础电子IEEE802.3协议是针对以太网CSMA/CD标准的传输介质物理层(PHY)和介质访问控制协议(MAC、MediaAccessControl)来定义的。芯片由PHY、发送模块、接收模块、FIFO、控制模块组成,其中控制模块包括寄存器堆、DMA(DirectMemoryAccess)模块、流量控制模块、接收缓冲区和发送缓冲区组成。网络控制器芯片的功能框图如图1所示。

图1以太网控制器芯片的功能框图

1IEEE802.3以太网MAC数据帧结构

在发送数据时,发送模块自动在待传数据前加上7字节的前导码和1字节的帧起始定界符,紧随的是6字节的目的地址和6字节的源地址,然后长度/类型为2字节,接着是数据区,然后是46~1500字节的数据。若发送时,数据长度小于短长度46字节,发送模块自动填补,以达到长度,是4个字节的循环冗余校验码。

2发送模块

发送模块的作用就是按照CSMA/CD协议发送数据包。发送模块状态机控制协调各个发送子模块的时序,发送模块状态机如图2所示。

图2发送模块状态转换图

S_defer状态表示网络忙,若网络空闲了,经过的帧间隙时间,进入网络空闲状态S_idle。若需要发送数据包,经过S_pre,S_data,S_pad,S_crc等状态发送,在这当中若检测到冲突信号,就进入S_jam状态。在S_jam状态判断是localcollision还是latecollision,若是localcollision就进入S_back状态,按照退避算法重发当前数据帧,否则直接进入网络忙状态,放弃该帧的发送。

3接收模块

接收模块的任务就是接收数据帧。物理接口收发器PHY将收到的网络数据变成二进制数据送给接收模块,接收模块再把正确的数据经过接收FIFO和DMA的控制送给接收缓冲区。接收模块的功能还包括移除接收到帧的前导码/帧分隔符;比较目的地址,判断是否丢弃当前数据帧;对接收到的数据包做CRC校验,判断传输过程中数据是否出错。接收模块状态机是接收模块的,控制协调接收模块的各个子模块的工作与时序。接收模块状态机如图3所示。

图3接收模块状态转换图

复位后,状态机进入S_idle状态,若数据是无效的,就停留在S_idle状态,否则进入S_pre状态。S_pre状态和S_sdf状态的作用就是去掉前导码和帧间隔符。当帧间隔符全部检测到,进入S_data状态,在S_data状态使用字节计数器,记录所收到数据的字节个数,用于比较目的地址。若目的地址匹配则将接收到的数据写入到接收FIFO,否则丢弃该帧,不写入到FIFO。字节计数器的作用还有判断接收到的数据包是否超过帧的长度。若在S_pre状态、S_sdf状态或S_data状态出现数据有效信号无效的情况,都进入到S_drop状态。

图4模块的功能仿真

4控制模块

控制模块包含DMA(directmemoryaccess)模块、流量控制模块、缓冲区模块、寄存器堆模块和总线接口模块。DMA模块的功能是将接收FIFO的数据搬运到接收缓冲区,以及发送缓冲区的数据搬运到发送FIFO。流量控制模块端口阻塞的情况下丢帧,这种方法是当接收缓冲区开始溢出时,通过将阻塞信号发送回源地址实现的。流量控制可以有效地防止由于网络中瞬间的大量数据对网络带来的冲击,保证用户网络高效而稳定地运行。两种控制流量的方式:(1)在半双工方式下,流量控制是通过反向压力(backpressure),即我们通常说的背压计数实现的,这种计数是通过向发送源发送jamming信号使得信息源降低发送速度。(2)在全双工方式下,流量控制一般遵循IEEE802.3X标准,是由交换机向信息源发送“pause”帧令其暂停发送。缓冲区模块由一块32KB的SRAM组成,分为接收缓冲区和发送缓冲区,接收缓冲区和发送缓冲区的大小可以由用户编程决定。缓冲区以分页的方式来管理,256B为一页。主机通过总线接口与芯片交换数据,通过读写寄存器堆来控制芯片的工作。

设计验证

本文给出功能的验证过程。把这些功能模块连接成一个环路(发送模块直接与接收模块相连接),发送模块按照802.3协议发出数据包,接收模块按照802.3协议处理这些数据包,符合要求的数据包送到(接收缓冲区),这些模块在Mentor公司的ModelsimSe5.8里面功能仿真波形如图5所示。

图5芯片的实现流程

图中,clk为系统时钟;rst为复位信号;tx_req为发送FIFO请求信号,让DMA从发送缓冲区搬运数据到发送FIFO;tx_fifo_data_out是从发送FIFO里面出来的8数据,发送模块封装这些数据,发送给PHY;这里没有对PHY进行验证,把发送模块发出的数据TXD和数据使能TXEN直接与接收模块数据端和数据有效信号分别相连接;接收模块把TXD进行串并转换,得到8为rx_data;byte_cnt为接收到rx_data的个数。

功能仿真通过之后,把模块连接成一个整体(SRAM直接调用QuartusII的IPCore),通过QuartusII综合以后,到FPGA开发板里面。用FPGA模拟网络控制器芯片,与计算机进行通信。FPGA与PC通过RJ-45相连。应用软件发一数据包给FPGA,接收模块接收到数据包后,通过DMA将数据从FIFO搬运到接收缓冲区。一包数据接收完成后,通过附加逻辑,让FPGA发送出刚刚接收到的数据包,附加逻辑还完成了把接收到的数据按位取反的功能。应用软件显示PC收到的数据包,通过比较PC发给FPGA的数据包和FPGA发送给PC的数据包,验证了模块的功能正确(FPGA的附加逻辑将接收到的数据包进行了按位取反操作)。

芯片实现

设计验证通过以后,经过图5所示的流程,得到整个芯片的版图。

本次流片采用

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论