基于FPGA的以太网控制器设计
时间:07-28
来源:互联网
点击:
目前,以太网802.3协议和TCP/IP协议是现今嵌入式系统接入Internet的首选协议。而以太网(Ethernet)的核心思想是多用户使用共享的公共传输信道,它通过带冲突检测的载波侦听多路访问协议(CSMA/CD)来控制对介质的访问。
本文给出了完全用FPGA的控制逻辑来实现嵌入式系统Internet接人中的底层以太网控制器的设计方法。并最终设计出符合IEEE 802.3标准的控制器,从而实现了10 Mbps和100 Mbps两种传输速率以及半双工和全双工两种工作模式,并可通过IEEE802.3标准定义的介质独立接口(MII)与以太网物理层芯片相连接。
1 总体设计方案
以太网控制器的FPGA设计工作包括以太网MAC子层的FPGA设计、MAC子层与上层协议的接口设计以及MAC与物理层(PHY)的MII接口设计。
该以太网控制器的总体结构设计框图如图1所示。整个系统分为发送模块、接收模块、MAC状态模块、MAC控制模块、MII管理模块和主机接口模块六部分。发送模块和接收模块主要提供MAC帧的发送和接收功能,其主要操作有MAC帧的封装与解包以及错误检测,它直接提供了到外部物理层芯片(PHY)的并行数据接口(MII)。MAC控制模块则用于执行全双工模式中的流量控制功能。MAC状态模块可用来监视MAC的操作过程的各种状态信息,并作修改。MII管理模块提供了标准的IEEE 802.3介质独立接口(MII),可用于连接以太网的链路层与物理层(PHY)。主机接口则提供有以太网控制器与上层协议(如TCP/IP协议)之间的接口,以用于数据的发送、接收以及对控制器内各种寄存器(控制、状态和命令寄存器)的设置。
2 MAC发送模块
MAC发送模块可将上层协议提供的数据封装之后通过MII接口发送给PHY。发送模块可接收主机接口模块的数据帧开始和数据帧结束标志,并通过主机接口从外部存储器中读取要发送的数据,然后对数据进行封装,然后通过PHY提供的载波侦听和冲突检测信号,在信道空闲时通过MII接口将数据以4位的宽度发送给PHY,最后由PHY将数据发送到网络上。
发送模块由CRC生成模块(crc_gen)、随机数生成模块(random_gen)、发送计数模块(tx_cnt) 和发送状态机(tx_statem_模块等四个子模块组成。
2.1 CRC生成模块(crc_gen)
该模块用于计算发送数据的CRC值,并将CRC值添加到数据帧的帧校验序列字段(FCS)内。为了提高效率,并考虑到MAC与PHY的数据通道为4位,设计时可采用4位并行CRC计算方法,算法中可使用一个次态函数,并通过循环迭代来模拟移位操作。这样,发送模块就可以在边发送数据到PHY的同时,一边计算CRC,这样当数据发送完时,CRC值也计算完成了。
2.2 随机数生成模块(random_gen)
如在发送过程中检测到冲突,发送模块就先发送拥塞码(jam),随后停止发送。在下次重新发送之前,发送模块会先执行一个后退(backoff)操作,即发送模块等待一个半随机(生成的随机数有范围限制)的时间之后再开始发送。该随机数就是由随机数生成模块产生的,它采用经典的截断二元指数后退算法,后退的时间是一个与发生冲突次数有关的随机数,随着冲突的次数增多,用于生成该随机数的范同也将逐渐增大,以减少冲突的概率。
2.3 发送计数模块(tx_cnt)
发送计数模块由半字节计数器(nibcnt)、字节计数器和重试次数计数器(retrycnt)三个计数器组成。其中重试次数计数器(retrycnt)可对发送某个帧时产生冲突次数进行计数。当计数器的值达到最大重试次数时,它将放弃重试,并丢弃发送缓冲器内的数据。同时,重试计数器的值还被随机数生成模块用于计算下次重试之前需要后退(backoff)的时隙的个数。
半字节计数器和字节计数器分别用于对发送过程中的半字节(bibble)和字节进行计数。
信道忙时,发送模块会一直等待,半字节计算器一直计数。当计数到额定等待时间时(最大帧长度的两倍,即3036字节时间),系统会根据设置放弃发送或是一直等待(可选功能)。一旦信道空闲再进入帧间间隙周期(≥96个比特时间),南半字节计数器从零开始计数。帧间间隙分为两个部分,在前2/3个周期中,如果检测到信道忙信号,则半字节计数器复位,发送模块重新开始等待;在后l/3周期中,即使检测到信道忙信号,半字节计数器也不会复位,而是继续计数,以保证每个站点公平的竞争信道。而当半字节计数器的值达到帧问间隙周期时,此时如果有数据等待发送,发送模块就开始发送数据。此外,半字节计算器还用于前序码的生成和短帧的判断,在数据帧的长度小于最小帧时,发送模块必须根据系统设置进行填充或不填充。
字节计算器还可用于滞后冲突(late collision)和超长帧的判断。当滞后冲突发生时,正在发送的数据将被丢弃。超长帧的判断则是从对帧内容(包括FCS)进行字节计数,如果字节计数器的值大于最大有效帧的长度(1518个字节),发送模块就根据系统设置(是否支持超长帧)丢弃或发送。
本文给出了完全用FPGA的控制逻辑来实现嵌入式系统Internet接人中的底层以太网控制器的设计方法。并最终设计出符合IEEE 802.3标准的控制器,从而实现了10 Mbps和100 Mbps两种传输速率以及半双工和全双工两种工作模式,并可通过IEEE802.3标准定义的介质独立接口(MII)与以太网物理层芯片相连接。
1 总体设计方案
以太网控制器的FPGA设计工作包括以太网MAC子层的FPGA设计、MAC子层与上层协议的接口设计以及MAC与物理层(PHY)的MII接口设计。
该以太网控制器的总体结构设计框图如图1所示。整个系统分为发送模块、接收模块、MAC状态模块、MAC控制模块、MII管理模块和主机接口模块六部分。发送模块和接收模块主要提供MAC帧的发送和接收功能,其主要操作有MAC帧的封装与解包以及错误检测,它直接提供了到外部物理层芯片(PHY)的并行数据接口(MII)。MAC控制模块则用于执行全双工模式中的流量控制功能。MAC状态模块可用来监视MAC的操作过程的各种状态信息,并作修改。MII管理模块提供了标准的IEEE 802.3介质独立接口(MII),可用于连接以太网的链路层与物理层(PHY)。主机接口则提供有以太网控制器与上层协议(如TCP/IP协议)之间的接口,以用于数据的发送、接收以及对控制器内各种寄存器(控制、状态和命令寄存器)的设置。
2 MAC发送模块
MAC发送模块可将上层协议提供的数据封装之后通过MII接口发送给PHY。发送模块可接收主机接口模块的数据帧开始和数据帧结束标志,并通过主机接口从外部存储器中读取要发送的数据,然后对数据进行封装,然后通过PHY提供的载波侦听和冲突检测信号,在信道空闲时通过MII接口将数据以4位的宽度发送给PHY,最后由PHY将数据发送到网络上。
发送模块由CRC生成模块(crc_gen)、随机数生成模块(random_gen)、发送计数模块(tx_cnt) 和发送状态机(tx_statem_模块等四个子模块组成。
2.1 CRC生成模块(crc_gen)
该模块用于计算发送数据的CRC值,并将CRC值添加到数据帧的帧校验序列字段(FCS)内。为了提高效率,并考虑到MAC与PHY的数据通道为4位,设计时可采用4位并行CRC计算方法,算法中可使用一个次态函数,并通过循环迭代来模拟移位操作。这样,发送模块就可以在边发送数据到PHY的同时,一边计算CRC,这样当数据发送完时,CRC值也计算完成了。
2.2 随机数生成模块(random_gen)
如在发送过程中检测到冲突,发送模块就先发送拥塞码(jam),随后停止发送。在下次重新发送之前,发送模块会先执行一个后退(backoff)操作,即发送模块等待一个半随机(生成的随机数有范围限制)的时间之后再开始发送。该随机数就是由随机数生成模块产生的,它采用经典的截断二元指数后退算法,后退的时间是一个与发生冲突次数有关的随机数,随着冲突的次数增多,用于生成该随机数的范同也将逐渐增大,以减少冲突的概率。
2.3 发送计数模块(tx_cnt)
发送计数模块由半字节计数器(nibcnt)、字节计数器和重试次数计数器(retrycnt)三个计数器组成。其中重试次数计数器(retrycnt)可对发送某个帧时产生冲突次数进行计数。当计数器的值达到最大重试次数时,它将放弃重试,并丢弃发送缓冲器内的数据。同时,重试计数器的值还被随机数生成模块用于计算下次重试之前需要后退(backoff)的时隙的个数。
半字节计数器和字节计数器分别用于对发送过程中的半字节(bibble)和字节进行计数。
信道忙时,发送模块会一直等待,半字节计算器一直计数。当计数到额定等待时间时(最大帧长度的两倍,即3036字节时间),系统会根据设置放弃发送或是一直等待(可选功能)。一旦信道空闲再进入帧间间隙周期(≥96个比特时间),南半字节计数器从零开始计数。帧间间隙分为两个部分,在前2/3个周期中,如果检测到信道忙信号,则半字节计数器复位,发送模块重新开始等待;在后l/3周期中,即使检测到信道忙信号,半字节计数器也不会复位,而是继续计数,以保证每个站点公平的竞争信道。而当半字节计数器的值达到帧问间隙周期时,此时如果有数据等待发送,发送模块就开始发送数据。此外,半字节计算器还用于前序码的生成和短帧的判断,在数据帧的长度小于最小帧时,发送模块必须根据系统设置进行填充或不填充。
字节计算器还可用于滞后冲突(late collision)和超长帧的判断。当滞后冲突发生时,正在发送的数据将被丢弃。超长帧的判断则是从对帧内容(包括FCS)进行字节计数,如果字节计数器的值大于最大有效帧的长度(1518个字节),发送模块就根据系统设置(是否支持超长帧)丢弃或发送。
嵌入式 FPGA Verilog Altera Quartus Mentor ModelSim 仿真 相关文章:
- 基于FPGA的片上系统的无线保密通信终端(02-16)
- 基于Virtex-5 FPGA设计Gbps无线通信基站(05-12)
- 基于FPGA的DVI/HDMI接口实现(05-13)
- 基于ARM的嵌入式系统中从串配置FPGA的实现(06-09)
- FPGA按键模式的研究与设计(03-24)
- 周立功:如何兼顾学习ARM与FPGA(05-23)