水颖
(第七一五研究所,杭州,310023)
目前,在传输业界中,网关、加扰机、编码机及调制解调设备等多采用千兆级以太网作为交互接口,要完成交互过程中大容量数据简单方便的缓存,通常采用板载FIFO、SRAM、SDRAM或DDR颗粒芯片的方案。在一些对存储资源要求不高但对存储速度要求高的应用中,大多使用FPGA内部的存储器资源。FIFO 是一种在电子系统得到广泛应用的模块,通常用于数据的缓存和容纳异步信号的频率或相位的差异。FIFO 的实现通常是利用双口RAM 和读写地址产生模块来实现的。
本文根据互联网帧的实际处理,提出了一种帧级 FIFO的设计,从而完成整帧数据处理的异步FIFO[1],设计的 FIFO处理模块是针对每一帧而不是每一个数据。根据FPGA提供BRAM块,搭建FIFO的读写以及数据使能,最关键的设计是控制读写地址、产生空满信号以及校验。此方式产生帧级的异步FIFO,既可以减少使用内部FIFO带来资源高的问题,又可以隔离异步时序减少亚稳态的产生。
传统的异步时序FIFO,当写入一个FIFO位宽的数据,FIFO的空信号(empty)置0,则可以进行读取数据。本文设计的基于帧级异步时序FIFO,当一个正常数据包正在写入时,FIFO的空信号并不会置0;只有当正常数据包全部写入异步FIFO中,空信号才能置 0,数据才能够被读取。此方式有利于互联网帧级数据的缓存和处理。
帧级FIFO是将一个数据包作为一个最小单元进行存储,包括以下几种情况:(1)数据包为坏包,则通过控制写RAM地址,刷新至上一包结束位置,将其从FIFO中删除;……