您的位置首页 >Mac >

基于EP2S30 FPGA芯片实现MAC接收控制器的设计

大家好,我是极客范的本期栏目编辑小友,现在为大家讲解基于EP2S30 FPGA芯片实现MAC接收控制器的设计问题。

1.引言。

传统的测控网络是通过VXI、CAN等专用总线将各种功能的仪表连接起来,形成一个完整的测控系统。目前,传统的测控网络有四个缺点:一是数据传输速率有限;二是传输距离有限;三是设备数量有限;第四,成本高。传统的测控网络已经难以满足人们对数据量大、距离远、成本低的要求。随着互联网技术的发展和普及,通过将仪器接入互联网,将测量数据封装成IP包进行传输,既能解决传统测控网络的缺点,又能共享网络技术发展带来的便利,实现跨地域限制的测量数据共享。本文主要讨论了多路千兆以太网信号中IP数据传输和接收的设计与实现,并详细介绍了MAC接收控制器的设计,为仪器接入网络、构建高速网络化测控系统提供了一种经济高效的测试数据传输手段。

2.系统功能及介绍。

系统框图如图1所示。

该系统主要采用Altera公司的StratixII FPGA芯片EP2S30作为处理芯片,利用Vitesse公司的PHY芯片VSC8224及相关外围电路实现8千兆以太网电信号中ip数据的收发功能。VSC8224主要实现物理层比特流和链路层数据的转换。IP数据的接收和输出由EP2S30通过VHDL程序实现。EP2S30在整个系统中起着关键作用。它将VSC8224发送的两条数据进行重组,从MAC帧中提取IP数据,并存储在缓冲存储器中。最后,它从IP通道依次向其他设备输出八个通道的数据。同时,EP2S30还接收其他设备发送的IP数据,然后封装成MAC帧,通过VSC8224发送到以太网。EP2S30还控制LED阵列,以指示每个网络端口的当前连接状态和系统的工作状态。

3.系统的硬件设计。

EP2S30是Altera公司推出的StraTIxII系列FPGA之一。它拥有丰富的I/O资源,支持多级标准。内部资源丰富,可以实现复杂的应用。特别是它将M512/M4K/MRAM与大量片内RAM集成在一起,可以配置成单端口/双端口/FIFO等多种存储器,特别适合存储和转发大量数据。

VSC8224是一款四端口低功耗的高性能以太网PHY芯片,支持10/100/1000BASE-T和1000base-x,支持最新的RGMII V2.0标准,为PCB板设计提供了极大的便利,无需考虑非常严格的延迟要求。在图1中,两个VSC8224芯片和FPGA之间的连接是RGMII接口。VSC8224有三种配置模式可供选择。这里使用EEPROM(AT24C16)进行配置。首先,通过编程器将配置内容固化到EEPROM中。上电或复位后,VSC8224自动从EEPROM中读取配置数据进行自我配置。FPGA通过2线SMI串行管理接口访问VSC8224的内部状态寄存器,读出VSC8224的工作状态,决定进一步的操作。FPGA通过VSC8244的2线串行LED状态输出端口读出4个端口的状态,然后通过驱动器驱动LED发光,为设计提供了很大的灵活性,可以控制LED显示各种状态。

4.MAC控制器的VHDL实现。

该系统采用VHDL语言实现媒体访问控制控制器和IP数据的接收和输出。媒体访问控制帧的格式如图2所示:

从MAC帧格式可以看出,只要我们在接收过程中找到前导码和定界符,就可以根据MAC帧格式得到整个MAC帧,然后根据长度/类型判断这个MAC帧的内容,从而得到MAC帧中的IP数据。发送IP数据的过程与接收IP数据的过程相反。只要将ip数据按照MAC帧的格式封装在MAC帧中,然后通过PHY芯片依次发送出去,就可以实现IP数据的传输。

FPGA主要实现MAC帧的发送和接收、MAC帧的组装和分解、IP数据的发送和接收等功能。利用VHDL模块化设计,只要实现一个通道,其他七个通道都可以轻松实现。本文主要介绍了媒体访问控制接收控制器的设计。这里使用VHDL设计MAC接收控制器,如图3所示。

如图3所示,根据RGMII接口规范,RXCLK是VSC8224从接收数据中提取的125MHz接收时钟,RXD[3:0]]和RXCTL在RXCLK的上下沿有效,RxSt是RXCLK的上下沿RXCTL之和,RXD数据相当于4位125MHz时钟。

DDR信号,为了便于后期处理,将数据组合成一个8bit×125MHz的信号。这一部分由图3中的数据组合模块组成。

为了实现MAC巨帧的处理,充分利用FPGA资源,实现异步数据的同步输出,为每一路千兆以太网都生成了一个16K字节的双口RAM作为缓冲器,双口RAM的输入是8比特,输出为16比特的数据,同时输入时钟是各路提取的125MHz的时钟,输出为同源时钟产生的160MHz时钟,这样能够实现了异步信号的同步输出。

IP数据的提取和存储由接收控制器来实现,IP数据的输出由输出控制器来实现。下面就分别介绍这两种控制器。

4.1 接收控制器

接收控制器主要是由一个写地址控制器和一个有限状态机组成。

写地址控制器主要控制3个信号,一个是14bit的写地址寄存器WrAddr,一个是14bit的写起始地址寄存器Haddr和一个写使能WrEnable信号。在每次写一帧数据之前都将写起始地址寄存器的值赋给写地址寄存器。在每帧数据CRC校验正确之后,修改Haddr的值为当前WrAddr的值加1,如果CRC校验有误则不修改Haddr的值,则下一帧从原来的地址开始,覆盖上一帧接收错误的数据。由于双口RAM的输入是8bit,输出为16bit,而且IP数据总长度可能为奇数也可能为偶数,为了便于后面的数据输出,Haddr的值始终应该为偶数,当CRC校验无误后,如果IP数据包的长度为奇数,应将Haddr自动加上1变为偶数,作为下一次写地址的起始地址。WrAddr在达到0x3FFF之后自动回到0x0000继续递增。

根据MAC帧格式,接收状态机分别设置了9个状态:idle, preamble, sfd, destaddr, souaddr, typ_len, payload, padding, fcs。当RxSt为0时,接收状态机始终处于idle状态。当RxSt为1时,接收状态机开始监视RxData上的数据,如果为0x55,则由idle态进入preamble态,如果满足7个连续的0x55,则进入sfd状态,否则返回idle状态。在sfd状态下,如果此时RxData上的数据为0xD5,则进入下一个状态,否则返回到idle状态。在destaddr和souaddr状态下,接收控制器可以获得目的MAC地址和源MAC地址。在typ_len状态下,接收控制器可以获得该MAC帧的类型或长度,由于该系统主要是处理IP数据,所以只关心类型为0x0800的IP数据和类型为0x0806的Arp请求帧。如果接收的类型不是0x0800或0x0806则放弃这次接收,返回到idle状态。如果为Arp请求帧,在接收完后帧校验无误则使能ArpEnable信号,使能Arp应答模块发送Arp应答帧。如果为IP数据包帧,在payload状态下,如果destaddr状态获得的目的MAC地址与自身的MAC地址一致则继续进行接收,否则放弃这次接收。在数据接收完之后,如果总长度大于46字节,则进入fcs状态,以获得帧校验结果;如果长度小于46字节,则还要进入padding状态,之后才能进入fcs状态。在fcs状态之后,将获得的帧校验结果和CRC32模块计算获得的结果进行比较,以保证传输的正确性。

4.2 输出控制器

与接收控制器一样,输出控制器也是由一个读地址控制器和一个有限状态机组成。

读地址控制器有一个13bit的读地址信号RdAddr,这个读地址信号与写控制器输出的写起始地址信号Haddr的高13bit进行比较,如果相等则表明当前双口RAM中无新的IP数据,如果不相等则表明RAM中至少有一帧新的数据。此时输出一个DatAvailable信号给顶层模块,顶层模块根据各路情况,输出一个RdEnable信号给下层模块,下层模块将RdAddr信号递增以读出RAM中的数据,当达到0x1FFF时自动回到0x0000进行递增。

由于保存在RAM中的数据包括MAC帧的目的地址、源地址、类型/长度和数据部分,所以输出状态机设置了5个状态:Ridle,Rdestaddr,Rsouaddr,Rtyp_len,Rdat。在RdEnable信号无效时,状态机始终处于Ridle状态,当RdEnable信号有效时,由Ridle状态依次进入Rdestaddr、Rsouaddr和Rtyp_len状态。IPvalid用于指示IP数据有效,IPhead指示IP包的第一个字节,IPtail指示IP包的最后一个字节,HalfB用于指示在IP数据包为奇数时,IP包输出的最后一个16bit数据的高8bit为有效的IP数据。IPCLK为160MHz的时钟,是由外部输入的50MHz时钟经过FPGA内部的锁相环得到。

4.3 顶层模块设计

顶层模块主要是协调与控制8路模块的工作。顶层模块依次对每一路进行轮询,由于下层模块的RAM中一旦有新的IP数据就会输出一个DatAvailable信号,从第一路到第8路依次查询各路的DatAvailable信号,如果有效则输出一个RdEnable信号给该模块,读出一帧IP数据包。当一帧IP数据包输出后继续进行下一路的查询,而不管这一路是否还有新的IP数据没有读出,如果还有数据没有读出,在下次轮询的时候再读出,这样将减小因为某一路一直占用IP数据输出通道而其他路无法输出IP数据而发生双口RAM溢出的可能。

5 、结论

本文所设计的千兆以太网IP数据传输设备通过在现场的调试,运行良好,状况稳定,误码率低,而且支持IP数据包长达8K字节的巨帧,提高了网络利用率,达到了高速测控数据传输的要求。该系统的研制为仪器接入网络,利用网络来收发测试数据成为可能,为网络化仪器和网络化测控系统的发展提供了经济可行的高速数据传输手段。

本文作者创新点:利用FPGA片上RAM为每一路千兆以太网设计了一个数据缓冲器及一个MAC接收控制器,解决了多路IP数据收发和异步数据同步输出的问题。

责任编辑:gt

免责声明:本文由用户上传,与本网站立场无关,如有侵权请联系删除!财经信息仅供读者参考,并不构成投资建议,投资者据此操作,风险自担。

今日大家都在搜的词: