[发明专利]FPGA内以太网数据帧的缓存与转发的方法及装置有效
申请号: | 201410469854.4 | 申请日: | 2014-09-15 |
公开(公告)号: | CN104199783B | 公开(公告)日: | 2017-06-20 |
发明(设计)人: | 刘福;刘超 | 申请(专利权)人: | 烽火通信科技股份有限公司 |
主分类号: | G06F12/02 | 分类号: | G06F12/02;H04L12/861 |
代理公司: | 北京捷诚信通专利事务所(普通合伙)11221 | 代理人: | 魏殿绅,庞炳良 |
地址: | 430074 湖北省武*** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | fpga 以太网 数据 缓存 转发 方法 装置 | ||
技术领域
本发明涉及以太网数据帧的缓存与转发,具体涉及FPGA内以太网数据帧的缓存与转发的方法及装置。
背景技术
以太网数据帧的缓存与转发是现场可编程门阵列(FPGA)与专用通信芯片之间重要的交互数据方式。根据802.3协议的规定,标准的以太网数据帧包含:7字节的前导码、1字节的帧起始符以及60-1514字节的净负荷数据(包含源地址、目的地址以及长度和类型)和4字节的帧校验序列。
在FPGA与专用通信芯片之间交互数据时,FPGA会缓存并转发接收到的以太网数据帧,根据不同的考虑角度,在FPGA内有多种方法实现以太网数据帧的缓存与转发,目前比较典型的方法有链表存储方法和连续存储方法。
链表存储方法适用于定包长数据帧的存储与转发,这种存储方法结构包含:
队列存储RAM,主要是存储每帧数据帧的指针,该指针指向一块连续的数据存储RAM的地址;
多块数据存储RAM,主要是存储数据帧的净负荷字节,它按照最大数据帧包长将FPGA内数据存储RAM等深度的划分成多块连续的数据存储RAM,每帧数据帧的存储都将占用一块RAM。
链表存储方法的缺点是RAM的利用率过低,当数据包中大量存在最小包长的数据帧时,该缺点将会非常明显。
连续存储方法结构主要包括使用来缓存接收到的数据帧的FIFO和存储该数据帧相关标识符的一个伴随FIFO。
相对链表存储方法而言,连续存储方法很好地提高了RAM的利用率,但是,当某一时刻的读/写指针出错(即伴随FIFO出错),则不可避免的会影响到后续的数据帧的读/写操作,甚至于会使整个缓存与转发机制崩溃,对于要求稳定的系统来说,这种错误是不可接受的。
发明内容
本发明所要解决的技术问题是以太网数据帧的缓存与转发时FPGA内RAM利用率低、稳定性差的问题。
为了解决上述技术问题,本发明所采用的技术方案是提供一种FPGA内以太网数据帧的缓存与转发的方法,包括以下步骤:
步骤A10、按照最小以太网数据帧包长,将FPGA内的整个数据帧缓存存储单元等深度地划分成若干小颗粒数据帧存储单元RAM(n);
步骤A20、将输入的以太网数据帧按照一定存储格式写入FPGA内的整个数据帧缓存存储单元内;
所述一定存储格式为:
起始小颗粒数据帧存储单元RAM(n)的0x0地址内存储接收的数据帧的标识符;
起始小颗粒数据帧存储单元RAM(n)的0x1地址内存储已缓存数据帧的末字节所在小颗粒数据帧存储单元RAM(n+m)的序号n+m;
起始小颗粒数据帧存储单元RAM(n)的0x2地址内存储已缓存数据帧的末字节所在小颗粒数据帧存储单元RAM(n+m)内的地址;
从起始小颗粒数据帧存储单元RAM(n)的0x3地址开始依次存储数据帧的净负荷字节直至完毕;
n为正整数,m为自然数;
步骤A30、读取当前起始小颗粒数据帧存储单元RAM(n)的0x1和0x2地址内末字节所在小颗粒数据帧存储单元RAM(n+m)的序号以及其在小颗粒数据帧存储单元RAM(n+m)内地址,从当前起始小颗粒数据帧存储单元RAM(n)的0x3开始依次读取缓存在数据帧缓存存储单元的数据帧净负荷字节,直至小颗粒数据帧存储单元RAM(n+m)内缓存末字节的地址,然后将小颗粒数据帧存储RAM(n+m)的序号加1,读取下一个以太网数据帧。
在上述方法中,所述数据帧缓存存储单元设置在FPGA内部双口随机存取存储器上,数据宽度与数据帧宽度一致,地址深度与最大以太网数据帧包长相对应。
在上述方法中,所述标识符包含缓存完毕标识符和校验结果标识符。
在上述方法中,从小颗粒数据帧存储单元RAM(n)的0x3地址开始依次存储数据帧的净负荷字节,当接收到的以太网数据帧仅靠小颗粒数据帧存储单元RAM(n)无法存储完毕时,顺序由相邻的小颗粒数据帧存储单元存储剩余所述净负荷字节,且存储剩余净负荷字节的每个所述小颗粒数据帧存储单元将会从0x0地址开始存储净负荷字节,直至所述数据帧的净负荷字节存储完毕。
在上述方法中,步骤A20包括以下步骤:
步骤A21、通过数据写入口接收以太网数据帧,并对所述以太网数据帧进行校验;
步骤A22、以数据帧缓存存储单元的当前小颗粒数据帧存储单元RAM(n)为起始小颗粒数据帧存储单元,该小颗粒的0x3地址为起始地址,将所述以太网数据帧的净负荷字节依次写入当前小颗粒数据帧存储单元RAM(n);
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于烽火通信科技股份有限公司,未经烽火通信科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410469854.4/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种基于分级存储的数据迁移方法及装置
- 下一篇:获取代码覆盖信息的方法及装置
- 数据显示系统、数据中继设备、数据中继方法、数据系统、接收设备和数据读取方法
- 数据记录方法、数据记录装置、数据记录媒体、数据重播方法和数据重播装置
- 数据发送方法、数据发送系统、数据发送装置以及数据结构
- 数据显示系统、数据中继设备、数据中继方法及数据系统
- 数据嵌入装置、数据嵌入方法、数据提取装置及数据提取方法
- 数据管理装置、数据编辑装置、数据阅览装置、数据管理方法、数据编辑方法以及数据阅览方法
- 数据发送和数据接收设备、数据发送和数据接收方法
- 数据发送装置、数据接收装置、数据收发系统、数据发送方法、数据接收方法和数据收发方法
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置