一种基于fpga的高带宽以太网ip核的制作方法

文档序号:7801722阅读:235来源:国知局
一种基于fpga的高带宽以太网ip核的制作方法
【专利摘要】本发明开发设计出了一种基于FPGA的以太网IP核,解决了嵌入式应用领域中千兆以太网实时数据传输过程中通信速率均值不高的问题,使其能够更加方便地应用在大数据量高带宽的以太网传输通信领域。该基于FPGA的高带宽以太网IP核,包括:接收模块,用于接收网络数据,实时检测以太网帧头起始字节,在确认接收到以太网帧头后,开始接收整个以太网帧,并对接收到的以太网帧的协议类型进行判别,将接收到的以太网帧分为ARP数据帧和以太网数据帧,分别放在两个不同的缓存区;ARP帧处理模块;以太网数据帧处理模块;发送模块,设置有多个双端口的FIFO,其中至少一个接口对应于所述ARP帧处理模块回复的响应帧。
【专利说明】—种基于FPGA的高带宽以太网IP核
【技术领域】
[0001]本发明属于网络通信【技术领域】,涉及一种基于FPGA的高带宽以太网IP核的设计与开发。
技术背景
[0002]目前,基于以太网的数据传输通信已经广泛应用,但是这些应用大多依靠计算机与网卡组合来实现。对于一些嵌入式系统领域的数据传输要求来说,这样的实现方法不合适。
[0003]在嵌入式系统开发中,普遍采用ARM或者DSP这些微处理器来实现网络传输通信的方法,但是由于微处理器是运行其内部程序来进行数据处理,具有分时多任务处理的特点,不能在同一时刻同时并行处理多个任务,这就导致了其网络传输速率峰值不高的缺陷。在商业嵌入式应用领域中,采用ARM或者DSP进行千兆以太网数据通信时,其通信均值速率一般在400Mbps以下,只能适用于较一般情况下的以太网实时通信,无法满足大批量数据高带宽实时通信的需求。
[0004]现阶段,商业上主流的FPGA生产厂家Altera和Xilinx都开发出了千兆以太网IP核,但是其使用都需要支付相当昂贵的授权费用,且其提供的以太网IP核后端一般都与其内部软核相连,从而导致其整体架构上通信均值速率不高,通信均值低于600Mbps。
[0005]综上所述,在一些高清无损图像传输领域,或者大数据量高带宽的传输、实时性的要求高、成本研发有限的情况下,上述嵌入式系统开发的千兆以太网实时处理性能无法满足要求,所以有必要研制一套能够胜任低成本、高实时性、高带宽的千兆以太网嵌入式逻辑接口。

【发明内容】

[0006]本发明针对现有技术的不足,开发设计出了一种基于FPGA的以太网IP核,解决了嵌入式应用领域中千兆以太网实时数据传输过程中通信速率均值不高的问题,使其能够更加方便地应用在大数据量高带宽的以太网传输通信领域。
[0007]本发明的基本解决方案如下:
[0008]基于FPGA的高带宽以太网IP核,其中FPGA采用RGMII接口与一物理层PHY芯片通信连接,物理层以上的协议全部在FPGA内部实现;其特殊之处在于,该以太网IP核包括:
[0009]接收模块,用于接收网络数据,实时检测以太网帧头起始字节,在确认接收到以太网帧头后,开始接收整个以太网帧,并对接收到的以太网帧的协议类型进行判别,将接收到的以太网帧分为ARP数据帧和以太网数据帧,分别放在两个不同的缓存区,记为ARP_RX_RAM 和 ETHENT_RX_RAM ;
[0010]ARP帧处理模块,用于对所述ARP数据帧进行处理;(具体处理方式可以参照现有技术,即:按照ARP数据帧的格式,判别接收到的ARP数据帧为请求帧或应答帧,若为应答帧则丢弃该帧,若为请求帧,则判别请求帧内的目的IP地址与IP核自身的IP地址是否一致,如果一致则进行ARP请求帧的响应回复,如果不一致则丢弃该帧)
[0011]以太网数据帧处理模块,用于对所述以太网数据帧进行处理,即判别其协议具体类型和整帧长度,进行以太网数据帧头校验位和帧尾部CRC校验位的计算,若计算得出帧头校验位或者CRC校验位错误,则丢弃该数据帧,否则将该帧存入缓存区ETHENT_REC_RAM ;
[0012]发送模块,设置有多个双端口的FIFO,用以分别缓存不同接口发来的数据,其中至少一个接口对应于所述ARP帧处理模块回复的响应帧;然后判别各个双端口的FIFO的状态以及是否写入完毕,按照写入完毕的顺序依次发送各个双端口的FIFO中的数据;通过以太网接口(RJ45)向外发送以太网帧时,采用流水线作业的编程机制,分别进行待发送以太网帧的帧头的校验计算、UDP帧校验的计算,以及CRC校验码的计算,在CRC校验的计算中,采用CRC32的循环校验码计算模块生成每个待发送以太网帧的CRC校验码在每个待发送以太网帧的帧尾部输出。
[0013]基于上述基本解决方案,本发明还作如下优化限定或改进:
[0014]所述发送模块还设置有一缓存区,该缓存区采用CAM查询表方式存入以太网络上已知的IP及其对应MAC地址并实时更新;若待发送以太网帧的目的IP及其对应的MAC地址能够在CAM查询表中查找到,则直接按照CAM查询表记录的地址发送。(若在CAM查询表没有对应的记录,则可以参照现有技术发送一包ARP请求帧,然后将返回的ARP应答帧中的IP及其对应MAC地址提取出来存入CAM查询表,同时按照该地址发送以太网帧)
[0015]所述接收模块还通过实时检测每秒以太网接入时钟上升沿的个数以确定接入的以太网速率,从而动态调整RGMII接口时钟频率(即可实现IOOMbps或者IOOOMbps以太网连接的自动切换)。
[0016]以太网IP核内部主时钟为100MHZ,16位数据并行运算。
[0017]IP核内部设置有多个寄存器,通过将FPGA与外部的微处理器连接,微处理器将指令写入相应的寄存器中从而修改寄存器的值,能够添加或者去除IP核中的某些功能,以便用户在不同的网络环境中使用。例如:IP核内部的IP地址和MAC地址可以通过内部寄存器实时更改,满足不同用户不同条件下的需求。
[0018]本发明具有以下优点:
[0019]本发明设计的基于FPGA的一种千兆以太网IP核,可以替代Altera或者Xilinx开发的千兆以太网IP核,采用RGMII接口与PHY芯片进行通信,架构功能齐全,可以完成IPV4版本中各种网络协议的通信。FPGA外部只需使用一片物理层PHY芯片,物理层以上的协议全部在FPGA内部实现。采用流水线和双FIFO缓存等架构,区分ARP数据帧和以太网数据帧并行运算,实现了千兆以太网数据高速处理。
[0020]本发明中的以太网IP核,采用内部主频为100MHZ的时钟计数的方法,来判别接入的网络速率,从而动态调整内部与外部PHY芯片的接口时钟频率,从而实现IOOMbps或者IOOOMbps以太网连接的自动判别。
[0021]本发明的以太网IP核内部主时钟为100MHZ,16位数据并行运算,采用流水线和双FIFO缓存等架构,使得其内部数据处理速度可以达到1.6Gbps,完全满足千兆以太网高速数据处理的需求。
[0022]为了实现在不同场合,不同试验环境下的要求,本发明中IP核的设计还充分考虑了通用性、可配置性,IP核内部设定了 40个寄存器,用户可以通过修改寄存器的值,从而添加或者去除IP核中的某些功能,以便用户在不同的网络环境中使用。例如,IP核内部的IP地址和MAC地址可以通过内部寄存器实时更改,满足不同用户不同条件下的需求。
【专利附图】

【附图说明】
[0023]图1为基于FPGA的以太网IP核内部逻辑架构框图。
[0024]图2为基于FPGA的以太网IP核外部接口示意图。
[0025]图3为基于FPGA的以太网IP核数据接收模块流程图。
[0026]图4为基于FPGA的以太网IP核数据发送模块流程图。
[0027]图5为以太网帧在IP核中的缓存格式。
[0028]图6为CAM查询表的缓存空间格式。
具体实施方案
[0029]本发明中的以太网IP核是在基于CycloneIII系列的FPGA架构系统上的,电路板采用的以太网PHY芯片为88E1111,采用HALO公司的RJ45接口 ;Altera公司的CycloneIII系列的开发板或者满足以下要求的电路板都可以实现该系统:
[0030]I)具备千兆以太网接口和PHY芯片;
[0031]2)具备自定义的IO接口;
[0032]3)板载的CycloneIII系列的FPGA芯片。
[0033]供电之后,FPGA采用MDC/MD10接口对物理层芯片PHY进行配置,PHY芯片完成传输速度和相关的信息协商之后,进而建立有效可靠的连接。
[0034]本发明中的以太网IP核接收模块,实时检测端口的以太网帧头的8个起始字节,在接收到以太网帧帧头之后,开始接收整个以太网帧,并对接收到帧的协议类型和帧长度进行判别。根据帧协议类型的不同,将接收到的以太网帧分别放在两个不同的缓存区内部,分别为ARP_RX_RAM和ETHENT_RX_RAM,然后再有分别的逻辑电路分别对这两块缓存RAM中的数据进行处理。
[0035]ARP帧处理模块按照ARP数据帧的格式,判别接收到的ARP数据帧内的内容,并根据自身的IP地址,从而决定是否进行ARP请求帧的响应回复。
[0036]以太网数据帧处理模块根据接收到的以太网帧数据,读取ETHENT_RX_RAM中的数据,判别其协议类型和整帧长度,进行IP帧头校验的核查和帧尾部CRC校验位的计算。若计算得出IP帧头校验或者CRC校验位错误,则丢弃该数据帧,否则将校验正确的数据帧存入到ETHENT_REC_RAM,并提交给上一层以太网帧过滤模块进行处理。
[0037]在以太网数据帧处理模块中,为了保证读取RAM缓存区数据排列顺序的正确性和灵活操作性,可将处理后的数据帧按照图5中的格式进行存放。同时,设定两个不同的指针类型:分别定义为头指针地址和尾指针地址。头指针地址用于存放写入到ETHENT_REC_RAM中的最后一个地址,尾指针地址用于更新读取ETHENT_REC_RAM中的最后一个地址。这样,当头指针地址和尾指针地址相同时,便认为缓存RAM中的全部数据已经处理完毕,否则就说明缓存RAM内部还有数据没有处理完毕,这样的设计思想大大简化了逻辑操作,并提高了逻辑内部模块交联的可靠性。[0038]以太网发送逻辑模块单元能够接收来自多个不同接口写入进来的数据,可以以下
三类:
[0039]I)外部并行的数据接口写入的数据;
[0040]2 )内部ARP处理模块回复的响应帧;
[0041]3)其它电路模块写入的数据帧。
[0042]在逻辑电路设计时,充分考虑到三个不同来源的数据可能同时写入的问题,采用双端口的FIFO进行缓存。这种设计思路,使得FIFO的写入和读出可以采用两个不同的时钟域来进行操作,从而可以满足不同速率的数据写入并通过以太网接口发送的问题。
[0043]在通过以太网端口向外部发送数据时,单独设计一个独立的处理模块用来判别三个不同发送数据源的FIFO内部状态,以及哪个FIFO中要发送的数据已经写入完毕,从而优先发送先最早写入完毕FIFO中的数据。
[0044]在通过以太网接口向外发送以太网帧时,采用流水线作业的编程机制,采用不同的模块分别进行发送以太网帧的IP帧帧头的校验计算、UDP帧校验的计算,以及CRC校验码的计算。在CRC校验的计算中,采用CRC32的循环校验码计算模块,生成每个发送的以太网帧的CRC校验码,在每个发送帧的最后输出。
[0045]IP核中CAM表的设计,实际是两个分别独立的缓存区,这两个缓存区是可读写的,在IP核运行中,运用查表的方式将两个缓存区中的IP地址和MAC地址对应起来。根据待发送帧的目的IP去查找目的IP是否存贮在目的IP存贮器中,如果已经存贮,那么硬件查找对应的目的MAC存贮器,获得发送端口的目的MAC地址。否则,则会触发ARP帧处理模块,从RJ45端口发送ARP请求帧,以便获得待发送帧中目的IP对应的目的MAC地址。
[0046]在电路板带宽的实际测试中,采用分辨率为2048x2048,输出帧频为25fps,每个像素点8个字节位宽的高清摄像机来进行测试。为了保证传输的可靠性和验证通信的可靠性,在以太网发送帧中添加发送帧计数值,每发送一帧数据,该计数值加1,同时将相机的分辨率、帧频等信息参数打包在以太网帧的数据段中进行发送。经实际测试,千兆以太网帧发送均值速率达到920Mbps,该IP核设计满足了实际应用中的需要。
【权利要求】
1.一种基于FPGA的高带宽以太网IP核,其中FPGA采用RGMII接口与一物理层PHY芯片通信连接,物理层以上的协议全部在FPGA内部实现;其特征在于,该以太网IP核包括: 接收模块,用于接收网络数据,实时检测以太网帧头起始字节,在确认接收到以太网帧头后,开始接收整个以太网帧,并对接收到的以太网帧的协议类型进行判别,将接收到的以太网帧分为ARP数据帧和以太网数据帧,分别放在两个不同的缓存区,记为ARP_RX_RAM和ETHENT_RX_RAM ; ARP帧处理模块,用于对所述ARP数据帧进行处理; 以太网数据帧处理模块,用于对所述以太网数据帧进行处理,即判别其协议具体类型和整帧长度,进行以太网数据帧头校验位和帧尾部CRC校验位的计算,若计算得出帧头校验位或者CRC校验位错误,则丢弃该数据帧,否则将该帧存入缓存区ETHENT_REC_RAM ; 发送模块,设置有多个双端口的FIFO,用以分别缓存不同接口发来的数据,其中至少一个接口对应于所述ARP帧处理模块回复的响应帧;然后判别各个双端口的FIFO的状态以及是否写入完毕,按照写入完毕的顺序依次发送各个双端口的FIFO中的数据;通过以太网接口(RJ45)向外发送以太网帧时,采用流水线作业的编程机制,分别进行待发送以太网帧的帧头的校验计算、UDP帧校验的计算,以及CRC校验码的计算;在0^校验的计算中,采用CRC32的循环校验码计算模块生成每个待发送以太网帧的CRC校验码在每个待发送以太网帧的帧尾部输出。
2.根据权利要求1所述的基于FPGA的高带宽以太网IP核,其特征在于:所述发送模块还设置有一缓存区,该缓存区采用CAM查询表方式存入以太网络上已知的IP及其对应MAC地址并实时更新;若待发送以太网帧的目的IP及其对应的MAC地址能够在CAM查询表中查找到,则直接按照CAM查询表记录的地址发送。
3.根据权利要求1所述的基于FPGA的高带宽以太网IP核,其特征在于:所述接收模块还通过实时检测每秒以太网接入时钟上升沿的个数以确定接入的以太网速率,从而动态调整RGMII接口时钟频率。
4.根据权利要求1所述的基于FPGA的高带宽以太网IP核,其特征在于:以太网IP核内部主时钟为IOOMHZ,16位数据并行运算。
5.根据权利要求1所述的基于FPGA的高带宽以太网IP核,其特征在于:IP核内部设置有多个寄存器,通过将FPGA与外部的微处理器连接,微处理器将指令写入相应的寄存器中从而修改寄存器的值,能够添加或者去除IP核中的某些功能,以便用户在不同的网络环境中使用。
【文档编号】H04L12/02GK103916252SQ201410158047
【公开日】2014年7月9日 申请日期:2014年4月18日 优先权日:2014年4月18日
【发明者】刘广森, 李乐尧, 梁伟, 曾晶, 梁洁 申请人:岳阳巅峰电子科技有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1