Ethernet-IP核的设计和FPGA实现.docx

上传人:小飞机 文档编号:4884369 上传时间:2023-05-21 格式:DOCX 页数:26 大小:864.05KB
返回 下载 相关 举报
Ethernet-IP核的设计和FPGA实现.docx_第1页
第1页 / 共26页
Ethernet-IP核的设计和FPGA实现.docx_第2页
第2页 / 共26页
Ethernet-IP核的设计和FPGA实现.docx_第3页
第3页 / 共26页
Ethernet-IP核的设计和FPGA实现.docx_第4页
第4页 / 共26页
Ethernet-IP核的设计和FPGA实现.docx_第5页
第5页 / 共26页
亲,该文档总共26页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《Ethernet-IP核的设计和FPGA实现.docx》由会员分享,可在线阅读,更多相关《Ethernet-IP核的设计和FPGA实现.docx(26页珍藏版)》请在三一办公上搜索。

1、Ethernet IP核的设计和FPGA实现随着网络通信技术和微电子技术的发展,日常生活中所遇到的设备的信息化 和智能化不断加强。而且,结构单一功能简单的设备已经不能满足使用者的需求。 这就使得设备的发展趋势朝着结构复杂化,功能多样化,高度集成化,高度智能 化方向发展。如今随着我国经济社会的发展,soc产品和嵌入式技术得到了广泛 的推广和普及。特别是随着国家提出物联网发展规划以来,Internet和消费电 子的智能化迅速发展。由此产生了嵌入式设备的联网问题。本文就是基于这样的背景,采用Verilog HDL程序设计语言对Ethernet IP核进行编程设计,并以FPGA实现。整个IP核 的系统

2、设计采用了 Top-Down的设计思想。在每个设计层次之上都可以把系统分 为很多个功能模块,该层次的电路的硬件行为可以由这些功能模块来描述,同时 下一层次的模块又描述这一层次的模块的行为。整个设计过程使用Altera的工 具软件Quartus II 13.0对Ethernet IP核各模块进行编译和综合,分析各模块 的结构以及相互之间的关系,并采用ModelSim 10.1软件对部分模块进行功能仿 真和功能分析,验证Ethernet IP核的功能。在如今科学技术日新月异飞速发展的时代里,发展最快的领域当属电子科学 与技术。而在这一领域飞速发展的背后是以微电子技术为代表的半导体技术的快 速发展来

3、作为支撑和推动的。尤其是随着微电子技术及其制造工艺的发展,使得 芯片的集成度更高,设备的功能更加多样化。这也就推动了各种消费电子,工业 设备,环境监测仪器等的快速发展,如智能手机,平板电脑,车载导航仪,网络 仪表,污染检测器等等。这些设备都需要联网,也就都提出了连入网络的要求。 相对于嵌入式系统的RS232,RS485等串口通信接口相比,Ethernet技术更加普及 通用,还能够连入Internet,具有明显的优势Ethernet极大的方便了人们的生 活和生产。与Ethernet快速发展相对应的是可联网设备终端的快速发展和普及。 特别是在二。一一年国家发布了物联网十二五发展规划之后,各种智能设

4、备终端 更是以前所未有的速度在快速发展。这使得研究终端设备接入Ethernet的问题变 得很有必要。目前,嵌入式系统接入互联网的方法有两种:第一种方法是采用NIC(Network Interface Card),即网卡或网络适配器来实现网络接口,然后由嵌入式系统来 提供所需的协议。第二种方法是采用具有网络协议栈结构的芯片和PHY (物理层 的接收器)来共同实现网络接口。随着微电子技术的发展,可编程逻辑器件的逻 辑门的密度越来越高,可以实现的功能越来越强大,由FPGA来实现接入网络的方 法日益受到各大研究单位和企业的重视。以MCU为核心,利用FPGA进行外围电路 的设计来实现系统的联网问题,不仅

5、可以是系统的集成度提高,使产品的体积减 小,而且还可以降低设计风险和成本,提高系统的稳定性,缩短产品研发周期。 本文设计的Ethernet IP核就是利用FPGA来实现的。第一章Ethernet的介绍及其IP核简介1.1 Ethernet 的介绍以太网(Ethernet)指的是由Xerox公司创建并由Xerox、Intel和DEC公司联合 开发的基带局域网规范,是当今现有局域网采用中最通用的通信协议标准。以太 网络采用CSMA/CD (载波监听多路访问及冲突检测)技术,并且可以以10M/S 的速率运行在多种类型的电缆上。以太网包括标准的以太网(10Mbit/s)、快速 以太网(100Mbit/

6、s)和10G(10Gbit/s)以太网。它们都符合IEEE802.3的相关 协议要求。以太网通信通常采用双绞线或者光纤作为传输介质。光纤因为其抗干 扰性好,主要用于主干网络的远距离传输。而双绞线则主要用于短距离的布线, 或者用来组建内部局域网。1.1.1 IEEE802.3 系列标准IEEE802.3标准描述的是在多种媒体上从1MB/S-10MB/S的局域网解决方案。 IEEE802.3标准描述了物理层(PHY层)和数据链路层的MAC子层的实现方法, 以及在多种物理媒体上以多种速率采用CSMA/CD的方式访问的方法。当然,对 于快速以太网该标准说明的实现方法有所扩展。IEEE802.3标准的帧

7、结构如下 图1.1所示。它的每一帧包含有8个域:前导码(preamble)包含7个字节(octet), 每一帧以一7个字节的前导字段开头;帧起始定界符(SFD)包含1个字节,表示 帧本身的开始;目的地址(DA)包含6个字节;源地址(SA)包含6个字节;类 型域包含2个字节;数据域和填充段共包含46-1500字节;帧校验序列(FCS)包 含4个字节;扩展段包含在帧校验序列部分之中。前导码帧起始定界符目的地址源地 址长度或类型数据 段填充 段FCS图1.1 IEEE802.3标准的帧结构1.1.2 CSMA/CD访问方式CSMA/CD (Carrier Sense Multiple Access

8、with Collision Detection)即带冲突 检测的载波监听多路访问技术。在传统的共享以太网中,所有的节点共享传输介 质。如何保证传输介质有序、高效地为许多节点提供传输服务而避免因发生冲突 导致介质传输效率降低,就成了以太网的介质访问控制协议所要解决的问题。CSMA/CD的工作原理是:发送数据前先侦听信道是否空闲,如果信道空 闲,则立即发送数据。如果信道忙碌,则等待一段时间至信道中的信息传输结束 后再发送数据;如果在上一段信息发送结束后,同时有两个或两个以上的节点都 提出发送请求,则判定为冲突。如果侦听到冲突,则立即停止发送数据,等待一 段随机的时间之后,再重新尝试数据发送。其原

9、理简单地总结为:先听后发,边发边听,冲突停发,随机延迟后重发。 CSMA/C D采用的是IEEE 802.3标准。采用CSMA/CD的主要目的是:CSMA/CD访问方式提供了寻址和媒体存取 的控制方式,使得不同的设备或网络节点可以在多点的网络上通信而不发生冲突。CSMA/CD控制方式的优点是:原理比较简单,技术上容易实现,而且在网络中的各个工作站地位平等, 不需要集中控制,更无优先级控制。但是当在网络负载增大的时候,发送时间会 增长,发送效率也会急剧下降。1.2 Ethernet IP 核的简介1.2.1 Ethernet IP 核的结构Ethernet IP核实际上就是一个 10/100 M

10、AC (Media access controller),即媒 体存取控制器。它在一边连接着以太网PHY (物理层的接收器)芯片,在另一边 连接着WISHBONE总线。Ethernet IP核被设计为运行根据IEEE 802.3和 IEEE802.3u标准定义的10Mbps和100Mbps以太网标准,能够分别工作在10Mbps 和100Mbps的速度,分别使用于普通以太网和快速以太网。Ethernet IP核包含了 以下七大部分:WISHBONE总线接口模块,发送模块,接收模块,控制模块, 状态机模块,寄存器模块,媒体独立接口管理模块。Ethernet IP核的体系结构图 如下图1.2所示。W

11、ISHBONE总线接口模块:WISHBONE总线接口模块包含了主动机接口和 从动机接口,连接着核和WISHBONE总线。主动机接口用于存储接收到的数据 帧以及加载需要从内存传送到以太网核心的数据。发送模块:发送模块用于执行所有与传输相关的操作,如:前导码生成, 填充,循环冗余码校验,等等。接收模块:接收模块用于执行所有与接收相关的操作,如:前导码的去除, 循环冗余码校验,等等。控制模块:控制模块用于执行所有相关的操作流程控制以太网工作于全双 工模式。状态机模块:状态机模块用于记录数据接收和发送过程中系统所处的不同 的状态,以及编写了相关的缓冲区描述符或用于其他的一些模块。寄存器模块:寄存器模块

12、包含了用于以太网MAC操作的所有寄存器。媒体独立接口管理模块:媒体独立接口管理模块提供了一种媒体独立接口 到外部的以太网PHY芯片。1.2.2 Ethernet IP 核的特征Ethernet IP核的特征如下所列:.执行MAC层功能IEEE802.3以太网;.自动的32位CRC生成和检查;.CRC延迟生成;.前导码的产生和清除;.自动填充短帧传输;.检测数据包太长或者太短(长度的限制);.可以传输比标准传输数据包更大的数据包;.全双工支持;.支持10和100Mbps的传输速率;.过度的延迟和过小的帧间间隙都会使数据帧组装失败;.流量控制和全双工模式下的控制框架自动生成(IEEE802.3X)

13、;.在半双工模式下的冲突检测和冲突之后的自动重发(CSMA/CD协议);.TX/RX数据包状态的完善;.IEEE802.3媒体独立接口(MII);.内部内存包含有128个TX/RX缓冲描述符;.各种事件中断生成。第二章FPGA概述2.1 FPGA 简介FPGA( FieldProgrammable Gate Array)是现场可编程门阵列的缩写,是 近年来快速发展的大规模可编程逻辑器件。随着微电子技术及其制造工艺的发展, 可编程逻辑器件的逻辑门密度越来越高,具有百万逻辑门的FPGA已经出现。 FPGA是在PAL、GAL、CPLD等可编程器件的基础上进一步发展而来的产物。它 是作为专用集成电路(

14、ASIC)领域中的一种半定制电路而出现的,既解决了定 制电路的不足,又克服了原有可编程器件门电路数有限的缺点。由于FPGA具有高 密度,速度快,功耗小,使用方便灵活等特点,越来越来受到开发者的重视,尤 其是在嵌入式系统开发中得到了广泛的应用。FPGA与ASIC (专用集成电路)相比而言,一般来说比ASIC的运行速度要 慢,实现同样的功能也比ASIC电路所需要的面积要大一些,而且在同等情况下 的功耗更高。但是FPGA可以快速成品,可以被设计者通过修改程序来改正其中 的错误,而且FPGA具有更便宜的造价。芯片设计者的开发初期通常是在普通的 FPGA上完成的,在验证成功之后才将设计转移到一个类似于A

15、SIC的专用FPGA 芯片上。2.2 FPGA的工作原理FPGA采用了逻辑单元阵列LCA (Logic Cell Array)这样一个概念,内部包 括可配置逻辑模块CLB (Configurable Logic Block)、输入输出模块IOB (InputOutput Block)和内部连线(Interconnect)三个部分。现场可编程门阵列(FPGA) 是可编程器件,与传统逻辑电路和门阵列(如PAL, GAL及CPLD器件)相比, FPGA具有不同的结构。FPGA利用小型查找表(16X1 RAM)来实现组合逻辑, 每个查找表连接到一个D触发器的输入端,触发器再来驱动其他逻辑电路或驱动 I

16、/O,由此构成了既可实现组合逻辑功能又可实现时序逻辑功能的基本逻辑单元 模块,这些模块间利用金属连线互相连接或连接到I/O模块。FPGA的逻辑是通过 向内部静态存储单元加载编程数据来实现的,存储在存储器单元中的值决定了逻 辑单元的逻辑功能以及各模块之间或模块与I/O间的联接方式,并最终决定了 FPGA所能实现的功能,FPGA允许无限次的编程。2.3 FPGA的特点及优势使用FPGA进行数字电路的设计时,能够使设计流程简化,而且还能够减小 产品的体积,降低设计成本,提高系统设计的稳定性。这也就使设计开发者可以 避开传统的集成电路设计流程,降低开发的投资风险。使用FPGA进行电路设计 开发的主要特

17、点和优势如下:.设计灵活,不受标准系列器件在逻辑功能上的限制,对逻辑的更改可以设 计和使用的过程中进行,且只需通过对所用的FPGA重新编程即可实现。.集成度高,提高功能密度,减少其他集成芯片的使用和印制电路板的制作。.提高设计系统的稳定性,运行的速度快。.缩短设计开发的周期,降低产品的成本。.使用FPGA进行开发还能够提高产品的保密性。.FPGA采用高速CMOS工艺,功耗低,能够与TTL,CMOS电平兼容,可 以很好的移植。2.4 FPGA的开发流程FPGA的开发流程针对Altrea公司的FPGA来说就是利用QuartusII软件和 Modelsim工具软件对FPGA芯片进行开发。对于任何一个

18、FPGA的开发项目来 说,都要提前从设计需求开始分析。只有在把功能定义弄清楚了,才能更好的进 行下一步的可行性分析。在分析之后,设计师会把一个大的工程划分成很多的功 能模块。功能块的划分最基本的原则还是以功能为主,有时是按着数据流来划分 的。在模块划分完成之后就要进行底层的设计输入工作。设计输入可以是原理图 输入,代码输入或者搭建SOPC平台。在代码设计完成之后,最好先使用开发工 具进行语法检查。语法没问题了,进行综合,再然后进行功能仿真。功能仿真又 称为前仿,这个仿真是不涉及任何时序上的延时,只是单纯地验证代码所实现的 功能是否符合要求。在功能仿真之后一般进行一次全编译,然后使用开发软件提

19、供的时序编辑器进行时序约束。在添加完时序约束之后,开发者就要进行实现, 然后查看时序报告。如果有足够的时序余量,那么就可以继续往后进行布局布线。 在进行完实现之后就可以下载到配置的开发板上进行板级的调试和仿真验证。一 个FPGA项目的开发流程图如下图2.1所示。图2.1 FPGA的开发流程第三章Ethernet IP核的程序设计和实现下面将注重介绍所设计的Ethernet IP核的顶层模块以及其他部分子模块, 包含:媒体独立接口管理模块,接收模块,发送模块,控制模块,寄存器模块。Ethernet IP核的顶层模块eth_top.v包含一下子模块:eth_miil.v, eth_rxethmac

20、.v,eth_txethmac.v,eth_maccontrol.v,eth_registers.v,eth_wishbone.v, eth_macstatus.v以及一些用于同步,复用和输出寄存的逻辑。顶层模块主要负责 初始化,控制和协调各个调用子模块程序的工作。顶层模块程序和其他子模块程 序全部采用Verilog HDL书写,并且在Quartus II中进行编译和仿真。3.1顶层模块顶层模块eth_top.v程序内容简要介绍:module eth_top ();括号里包含的是整个Ethernet IP的输入输出端口列表; 分别涉及有 eth_wishbone.v, eth_miil.v,e

21、th_txethmac.v,eth_rxethmac.v 等子模块。eth_miim miim1();这是主模块调用的媒体独立接口子模块程序。eth_registers ethreg1 ();这是主模块调用的寄存器子模块程序。 eth_maccontrol maccontrol1 ();这是主模块调用的MAC控制器子模块。 eth_txethmac txethmac1 ();这是主模块调用的发送控制器的子模块。 eth_rxethmac rxethmac1 ();这是主模块调用的接收控制器的子模块。 eth_macstatus macstatus1 ();这是主模块调用的状态子模块。每一个调用

22、的子模块都有各自的操作参数,其中还有始终控制模块,为各 自模块的同步工作提供时钟依据。3.2媒体独立接口模块媒体独立接口子模块(eth_miil.v ):媒体独立接口模块(MII模块)提供了 Ethernet IP核与外部以太网芯片的接 口。它主要用来配置外部物理层的寄存器状态以及读取当前寄存器的状态。MII模块是媒体独立接口的顶层模块,包含有一下几个子模块:时钟产生 模块(eth_clockgen.v),移位寄存器模块(eth_shiftreg.v),和输入输出控制模块 (eth_outputcontrol.v)以及其他的逻辑。其他的逻辑控制模块用于产生以下一些 信号:1) .读(Write

23、DataOp),写(ReadStatusOp)和扫描(ScanStatusOp)操作的 同步请求;2) .更新 MIIRX_DATA 寄存器(UpdataMIIRX_DATAReg)的信号;3) .计数器(BitCounter)是MII接口主要的计数器,很多操作都依赖于它。4) .数据被移出时用的字节选择信号(ByteSelect3:0);5) .用于锁存输入数据的信号(LatchByte1:0)。当需要从PHY芯片中读取或者写入数据时,需要执行几个操作:1) . MIIMODER寄存器需要被设置:.时钟分频器需要被设置来提供频率合适的时钟信号Mdc(读取物理 层的信息来获得Mdc的频率值。)

24、.前导码的产生会被禁用(如果PHY支持无前导码的传输),默认情 况32位的前导码会被发送。.MII模块可能会在使用之前被重置。2) .物理层地址(可能同时几个PHY芯片连接到MII接口上)和选定的PHY芯片的寄存器地址需要在MIIADDRESS寄存器里被设置。3) .如果有需要写数据到选定的寄存器,需要将数据写入到MIITX_DATA寄存。4) .写入合适的值到MIICOMMAND寄存器中,开始请求操作。5) .如果“读状态”或“扫描状态”操作被请求时,那么从PHY接收到的值就能从MIIRX_DATA寄存器中被读出。MIISTATUS寄存器反映了 MII模块的状态。只有当从PHY的状态寄存器读

25、 到的返回状态是OK的,linkFail的状态才会被清除。3.3输入输出控制模块输入输出控制模块(eth_outputcontrol.v)执行两个主要任务:1) 产生MII连续输出信号Mdo;2) 产生Md。的使能信号MdoEn;由于媒体独立接口模块与外部模拟PHY芯片进行数据通信时的数据通道只 有一条,所以输入输出控制模块就必须将输入,输出信号同输入,输出使能信号结合起来产生统一的信号,以此来配合硬件设备。3.4时钟产生模块时钟产生模块(eth_clockgen.v )主要负责产生媒体独立接口所需的时 钟信号和使能信号,而且这些信号还要符合PHY芯片的要求。3.5移位寄存器模块移位寄存器模块

26、(eth_shiftreg.v)主要负责将从主机向外部PHY芯片发送的 数据(Mdo)串行化,同时将从外部PHY芯片接收到的数据(Mdi)并行化,并 且将数据暂时存储在寄存器Prsd中。最后,再把数据值存储到寄存器 MIIRX_DATA寄存器中。3.6接收模块接收模块(eth_rxethmac.v)主要负责数据帧的接收。数据接收模块在接收 过程中要识别数据帧的前缀码,帧起始标致,然后再检验目的地址以判断是否要 接收数据帧。数据帧的接收流程包含地址验证,数据计数,数据检验,数据接收。 以太网的PHY芯片从物理层接收串行的数据帧信号,然后去掉数据报头,把数据 和”数据有效”标志(MRxDV) 一起

27、装配成4位数据包,并且发送到接收模块 (MRxD 3:0)。接收模块然后把4位数据装配成完整的8位数据,然后连 带其他一些数据开始和结束的标志一起发送到WISHBONE总线模块。接收模块 同时也进行移除前导码和CRC检查等操作。接收模块的结构与发送模块类似。3.6.1接收模块的子模块接收模块包含一下四个子模块:1) eth_rxcrc,循环冗余码校验模块,根据接收到的数据生成相应地32 位的CRC校验码,并且与接收到的CRC校验码进行对比,进而判断数 据的接收是否完整,或者数据在传输过程中是否已经损坏。2) eth_rxaddrcheck,地址识别模块,检查数据包的接收目的地址和硬件 的地址是

28、不是一致,如果不一致就修改接收计数器并丢弃刚刚接收到 数据。如果地址一致,则接着完成接下来的工作。3) eth_rxcounters,包括接收数据包所需的各种计数器;4) eth_rxstatem,接收模块的状态机,协调数据的计数,地址验证,CRC 检查以及数据包的接收等工作的有序进行和完成。除了以上的这四大子模块之外,接收模块还有其他的一些逻辑控制模块。这 些逻辑控制模块的作用是:.产生在地址识别系统中要用到的CrcHash值和CrcHashGood标致。.锁存从PHY芯片接收到的数据(RxData)。.产生Broadcast和Multicast标致(当接收的数据包含有Broadcast和

29、Multicast的目的地址时)。.生成RxValid, RxStartFrm, RxEndFrm信号。这些信号标致着有效的 数据。3.6.2 EthernetIP核接收模块的状态机Ethernet IP核接收模块的状态机包含六个不同的状态:.Idle状态.Drop状态.Preamble 状态.SFD (标准帧定界符)状态.Data 0状态.Data 1状态接收状态机时接收模块的核心模块,接收状态机的各个状态之间的转换如下 图3.1所示。各个状态之间的转换关系如下:图3.1接收模块的状态转换1). Drop状态(丢弃状态):在复位之后状态机就进入Drop状态。如果在此 之后MRxDv被设置为0

30、,那么状态机就会进入Idle状态。只要在PHY的数据线 (MRxD)上有有效的值,那么PHY就会通过把MRxDv设置为1来通知接收器 开始工作。假设状态机处于在Idle状态,SFD状态或者Data0状态时,如果此时 数据的接收有错误发生,那么接收模块便立即放弃本帧的接收处理工作,状态机 转而进入Drop状态,直到错误的帧发送结束之后状态机再转而进入Idle状态;2) .Idle状态(空闲状态):当数据链路上没有数据帧发送过来时,状态机便 处于Idle状态。当接收数据帧的内容是前导码时,状态机便进入SFD状态。 Ethernet IP核亦可以接收没有标准7位前导码而只有SFD的数据包,所以假如数

31、 据链路上有数据帧发送过来,且数据帧的内容不为前导码时,状态机便进入 Preamble状态(前导码状态)。并且停留在此状态,直到合适的nibble被接收到 之后状态机再进入SFD状态。3) . SFD状态:状态机进入此状态后识别接收到的数据帧的帧起始标致符。 如果出现帧起始符则完成同步处理,状态机进入Data 0状态。否则就要等待发 送完毕之后再回到Idle状态。如果等待时间超过最小帧间隔时间(IFG,inter frame gap)但是仍未出现帧起始符,就放弃本次接收工作,状态机就进入Drop状态;4) . Data 0状态(数据0状态):如果IFGCounterEq24信号被设置成为有效

32、的值时,状态机进入Data 0状态并且开始接收一个字节的低四位,然后再进入 Data 1状态。之后状态机再回到Data 0状态接收下一个字节的低四位,然后再 进入Data 1状态,如此循环往复。直到数据包的结束信号被检查到,数据发送 完毕,状态机才进入Idle状态;一切的接收工作又重头开始。如果接收到的数据 帧长度超过最大的帧长,那么状态机便进入Drop状态;5) . Data 1状态(数据1状态):状态机进入此状态后便开始接收一个字节 的高四位数据,接收完之后再进入Data 0状态;如此循环往复。如果此时数据 帧发送完成,状态机便进入Idle状态。如果在接收的过程中IFGCounterEq2

33、4信 号被清除了,那么状态机便进入Drop状态。直到IFGCounterEq24信号再次被设 置,那么状态机进入Idle状态,一切接收工作都又重头开始。3.7发送模块发送模块(eth_txethmac.v)主要负责数据帧的发送。发送模块从WISHBONE 接口模块那里获得需要被发送的以字节为单位的数据帧。除此之外,发送模块还 会收到数据帧的起始标致符(TxStartFrm)以及数据帧的结束标致符(TxEndFrm)。 只要发送模块通过设置TxUsedData信号来通知WISHBONE接口模块它需要下 一个发送数据帧时,WISHBONE接口模块便会为它提供下一个发送数据帧。发 送模块一边得通知W

34、ISHBONE接口模块,还得一边通知Ethernet外部PHY芯 片当前的运行状态。3.7.1发送模块的子模块发送模块包含四个子模块:eth_crc模块:循环冗余码校验模块产生32位的循环冗余校验码,并且添加 到将要发送的数据帧字段里;eth_random模块:随机数生成模块产生后退操作所需要的随即延迟时间(再 发生冲突之后);eth_txcounters模块:计数器模块提供数据帧发送所需要的各种计数器; eth_txstatem模块:发送状态机模块为数据帧发送模块提供状态机。3.7.2发送模块的信号发送模块与Ethernet IP核的PHY芯片链接的信号有:1) 4位的数据帧MTxD:这个信

35、号是将要被PHY芯片发送到Ethernet的数 据。2) 发送使能信号MTxEn:这个信号告诉PHY芯片发送数据帧MTxD是有 效的,发送任务可以开始了。3) 发送错误信号MTxErr:这个信号告诉PHY芯片在数据帧的发送过程出现错误。发送模块与上层模块(WISHBONE模块)链接的信号有:1) .数据帧发送完成信号TxDone;2) .数据帧重新发送信号TxRetry;3) .数据帧发送失败信号TxAbort;4) . TxUsedData 信号。除了以上提到的一些信号之外,发送模块还提供一些其他信号:1) . WillTransmit信号:此信号用于通知接收模块发送模块即将开始进行数据帧的

36、发送。直到WillTransmit信号被清除,接收模块才会停止接收数据 帧。2) . ResetCollision信号:此信号用于产生冲突的复位信号,使同步触发器复位。(“冲突检测”的信号异步地来自PHY芯片,而且和TX时钟信号是 同步的)3) .ColWindow信号:冲突只可能在数据帧开始发送之后的一段时间内遭遇。这段时间就是所谓的窗口碰撞或者争用期。此信号表示在某站点发送数 据帧时,ColWindow信号标致着在每一段冲突中都有被视为有效碰撞的 时间窗口。4) . RetryCnt信号:此信号表示着数据帧重发计数器。5) . Data_Crc信号,Enable_Crc信号和Initial

37、ize_Crc信号:这几个信号都是用于循环冗余校验码的产生的。3.7.3发送任务的结束或失败出现下列情况时,发送任务结束:1) .发送任务成功完成,发送完成信号TxDone被设置成有效值;2) .发送任务需要重新进行,重新发送信号TxRetry被设置成有效值。当发生正常的冲突时,发送任务需要重新进行(在半双工模式下);3) .发送任务失败,发送失败信号TxAbort被设置成有效值。在一下情形下会发生发送任务失败:1) .数据帧长度太大(超过了数据帧的最大上限);2) .数据短缺发生时(WISHBONE模块不能准时提供数据帧);3) .过度延时发生时(Tx状态机保持在延时状态的时间过长);4)

38、.Late collison发生时(在争用期过后再检测到的冲突);5) .达到了数据帧重新发送的次数上限。3.7.4 EthernetIP核发送模块的状态机EthernetIP核发送模块的状态机包含有十个不同的状态:Idle状态,Preamble 状态,Data0状态,Data1状态,PAD状态,FCS状态,IPG状态,Jam状态,BackOff 状态,Defer状态。发送模块的核心就是发送模块的状态机,各个状态间的转化关系如下:1) Defer状态:复位后或者发送完一帧之后,数据链路繁忙或者发生了碰撞, 状态机都会进入Defer状态。进入此状态之后,要发送一帧数据时必须要等待帧 间间隔时间;

39、2) IPG状态:状态机处于这个状态表示发送模块处于等待帧间间隔时间的 状态,之后状态机进入Idle状态;3) Idle状态:状态机进入此状态即表示在数据链路上,至少一个Inter Frame Gap之内没有数据帧的发送。这时候,只要发送模块有发送命令,立马就可以进 行数据帧的发送,之后进入Preamble状态;4) Preamble状态:状态机进入这个状态,表示发送模块要发送数据帧,发 送模块会在数据内容的前面添加一个8个字节的前导码和1个字节的帧起始符。 只有等到前导码和帧起始符发送完毕之后,数据帧内容的发送才真正开始。之后 进入Data0状态;5) Data0状态:发送模块状态机进入此状

40、态表示发送模块正在发送一个字 节数据帧的低四位数据。之后状态机进入Data 1状态;6) Data1状态:发送模块状态机进入此状态表示发送模块正在发送一个字 节数据的高四位数据。在高四位发送完毕之后,状态机又回到Data0状态,如此 循环往复,直到所有数据内容发送完毕之后,状态机根据发送数据内容的长度来判断之后将要进入的状态是PAD状态还是FCS状态;7) PAD状态:当发送在之前发送的数据帧的长度小于定义的最小的帧长度 时,硬件会在数据帧上自动填充0,以达到最小帧长度;8) FCS状态:当发送模块完成数据发送之后,硬件会自动在数据帧的后面 添加32位的循环冗余校验码;9) Jam状态:发送模

41、块在发送数据时,如果发生了碰撞,那么状态机就会 进入Jam状态,并且向数据链路发送冲突加强信号;如果数据重发的次数还未达 到最大的上限值,那么状态机就会进入BackOff状态,进行数据的重新发送;如 果数据重发的次数已经达到了最大的上限值,那么状态机就会进入Defer状态, 取消数据的发送;10) BackOff状态:状态机处于这个状态时,会根据二进制指数后退算法进 行延时,之后进入Defer状态。状态机的这十个状态转换关系如下图3.2所示:图3.2接收模块的状态转换3.8控制模块当Ethernet IP核工作在100Mbps的全双工模式时,控制模块(eth_maccontrol.v) 负责数

42、据流控制。数据流的控制是通过发送和接收中断控制框架来实现的。控制 模块包含多路复用逻辑和两个子模块:.Ethernet发送控制模块.Ethernet接收控制模块当设备连接到Ethernet IP核(通常就是一个处理器)的WISHBONE总线接 口,它不能够完全处理它所接收到的所有数据包时(此时它还正在数据接收进行 中),它就需要向数据包发送的站点发送一个中断信号。这个中断请求一般通过 发送中断控制框架给数据发送站点来实现。一旦数据发送站点接收到了中断请求, 它立马停止数据的发送。直到中断请求时间结束或者中断请求关闭,数据发送又 重新开始。数据流发送的控制是在Ethernet发送控制模块中完成的

43、。当Ethernet IP核接收到一个中断请求时,它会在中断请求时间内由Ethernet接收控制模块来 实现停止数据发送。多路复用逻辑用来在普通的数据发送时复合数据和控制信号 的。当控制框架发送之后,填充和循环冗余校验码的产生就自动开启。3.9寄存器模块寄存器模块(eth_registers.v)包含了 Ethernet IP核的所有寄存器。虽然所有 的寄存器都被设置成了 32位,但是在真正的使用之中只有实际需要的位长才是 真正被使用的。其他的未用位则本固定成0。每一个寄存器都使用两个参数,宽 度和复位值。复位值决定了寄存器在复位后是把寄存的值清空为0,还是把寄存 器设置成为一些提前预设置的值

44、。3.10 Ethernet IP核设计文件之间的联络图经过前面对Ethernet IP核顶层文件的几个主要子模块的简单介绍,顶层模 块与子模块之间的结构层次比较清楚。可是,子模块与下一级子模块的结构关系 还不清楚。现在,通过分析了各设计原文件之间的关系,画出各个设计原文件之 间的关系。图中的原文件包含了顶层文件(eth_top.v)的子文件:timescale.v, eth_defines.v,eth_miim .v,eth_registers .v,eth_maccontrol .v,eth_txethmac .v, eth_rxethmac .v, eth_macstatus .v, e

45、th_wishbone.v, eth_outputcontrol.v, eth_shiftreg.v,eth_macstatus.v,eth_clockgen.v,eth_generic_spram.v,eth_fifo.v, eth_register.v。原文件 eth_maccontrol .v 包含的子文件:eth_receivecontrol.v, eth_transmitcontrol.v,timescale.v。原文 件 eth_txethmac .v 包含的子文 件:timescale.v,eth_txcounters.v, eth_txstatem.v,eth_crc.v,et

46、h_random.v。原文件 eth_rxethmac .v 包含的子文件:timescale.v, eth_rxstatem.v, eth_rxcounters.v, eth_rxaddrcheck.v, eth_crc.v。原文件 eth_wishbone.v 包含的子文件:eth_defines.v,timescale.vo当然,除了这些以外,eth_miim .v,eth_outputcontrol.v,eth_shiftreg.v, eth_macstatus.v,eth_clockgen.v,eth_generic_spram.v,eth_fifo.v,eth_register.v

47、 和 eth_macstatus .v 原文件中也引用了 timescale.v 子文件,eth_registers .v 原文件 中包含了 timescale.v 和 eth_defines.v 子文件。但是 timescale.v 和 eth_defines.v 子 文件仅是一些定义和申明,不属于上一层模块的子模块。所以在联络图中没有予 以体现。全部模块文件的层次式联络图如下图3.3所示。图3.3模块文件的层次式联络图发送模块和获得仿真的波顶层模块eth_top.v的部分综合图:第四章Ethernet IP核的程序仿制和测试在完成Ethernet IP核的程序设计之后还需要进行大量的语法检

48、查,仿真模拟 和性能测试。本文在Ethernet IP核的程序设计完成之后,对所有的子模块和主模 块都进行了语法检查和综合,获得了所有模块的综合图;并且着重对 eth_maccontrol.v控制模块进行了功能仿真,对eth_txethmac.veth_rxethmac.v接收模块进行了简单的功能仿真。功能仿真之后 形图。4.1 Ethernet IP核部分模块的综合图4.1.1顶层模块的综合图r 5L :.:图4.1 Ethernet IP核顶层模块的综合图(一)I Hi. J 4. Ui OIEjIei :. EH 斗 ith_register模块以及一些其他的逻辑口。这是顶层模块的部分综合图,图中包含的两个子模块是eth_miim模块和Hb -!mb

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号