基于fpga的实现多路突发数据业务缓存的系统及方法

文档序号:6338121阅读:491来源:国知局
专利名称:基于fpga的实现多路突发数据业务缓存的系统及方法
技术领域
本 发明涉及通信技术领域,尤其涉及一种基于FPGA实现多路突发数据业务缓存 的系统及方法。
背景技术
在通信技术领域中,经常需要对多路具有突发、变长、非定时等特性的通信数据业 务进行缓存处理,以便后级模块固定速率的处理;特别对于不同速率的协议转换,更需要对 多路突发数据业务进行缓存处理;在现有的技术中,对多路突发数据业务的缓存,有多种缓 存方法,其实现方法分别为。(1)采用专用的ASIC芯片以堆叠的方式来实现;但专用的ASIC芯片提供的 通道数有限,每片ASIC芯片需要独立外挂存储器芯片;在实现更多路(N>2)突发数据业务 时,就需要更多的ASIC芯片与存储器芯片,造成硬件成本高,单板布线难度大。(2)采用FPGA片内RAM来实现;目前的FPGA内部一般都提供一定数目,固定 容量大小的RAM,利用这些RAM资源的组合,每路独立采用数据队列的方式,来实现多路数 据业务的缓存(见图1);但FPGA提供的片内RAM资源十分有限,一方面造成分配给多路数 据的数据队列深度有限,无法应对像视频数据一样的突发数据;另一方面如果要满足数据 队列的一定深度,缓存多路数据的通道数量就变得有限,无法实现通道数更多的情况。(3)采用FPGA片内RAM配合片外RAM芯片来实现;如图2所采用的方式,多 路突发数据业务由FPGA内部逻辑实现的仲裁器以固定优先级方式缓存到片外RAM芯片中, 每路突发数据的每个数据包长度信息存储于由FPGA片内RAM组成的数据包长度RAM中;该 方式相比方法(1)、(2)要灵活,但仍存在缺陷一,由FPGA片内RAM实现的数据包长度RAM, 其深度决定了缓存到片外RAM芯片的数据包个数,由于FPGA片内RAM资源有限,一方面限 制了数据包长度RAM的深度,即限制了缓存到片外RAM数据包的个数;另一方面在满足数据 包长度RAM深度要求时,又限制了通道数个数;二,多路突发数据采用固定优先级方式缓存 到片外RAM时,优先级高的通道在数据业务量大的情况下,会造成优先级低的通道的数据 业务得不到及时处理,容易出现“饥饱”现象。

发明内容
本发明的目的在于克服上述方法所存在的缺点,提供一种基于FPGA实现多路突 发数据业务缓存的系统及方法。本发明实施例是这样实现的一种基于FPGA的实现多路突发数据业务缓存的系 统,包括用于缓存多路突发数据的片外缓存器和提供RAM资源的FPGA芯片;所述FPGA芯片 包括片外缓存控制器,多路突发数据缓存管理电路,以及与数据通道数一致的数据包接收 及缓冲电路、数据包写控制电路、数据包缓冲及发送电路、数据包读控制电路;其中,
所述数据包接收及缓冲电路,其输入端接收外界的突发数据输入、输出端与数据包写 控制电路连接,包括数据包接收控制电路以及接收缓冲区,用于在接收缓冲区为空时接收外界输入的突发数据并将其写入接收缓冲区中,且在写入完整的数据包时置位整包标志位;
所述数据包写控制电路,其输入端与数据包接收及缓冲电路连接、输出端与多路突发 数据缓存管理电路连接,用于在所述整包标志位被置位且片外存储器中对应通道的缓存区 为非满状态时,在向多路突发数据包缓冲管理电路申请并得到授权的情况下,读取接收缓 冲区中完整的数据包并将其与其长度信息组合成新的数据流缓存到片外存储器中对应通 道的缓存区中,同时生成下一个写操作的行地址信息;
所述数据包缓冲及发送电路,其输入端与数据包读控制电路连接、输出端与外界端口 连接,包括发送缓冲区以及数据包发送控制电路,用于缓冲完整的数据包并将其发送至外 界端口 ;
所述数据包读控制电路,其输入端与多路突发数据缓存管理电路连接、输出端与数据 包缓冲及发送电路连接,用于发送缓冲区为空且片外存储器中对应通道的缓存区为非空状 态时,在向多路突发数据包缓冲管理电路申请并得到授权的情况下从片外存储器中对应通 道的缓存区中读取完整的数据包后写入发送缓冲区中,同时生成下一个读操作的行地址信 息;
所述多路突发数据包缓存管理电路,分别连接至多路数据包写控制电路及数据包读 控制电路,并与片外缓存控制器连接,用于在接收到多路突发数据的读包申请/写包申请 时对发送申请的突发数据通道进行仲裁及授权、再对授权的通道授权具体的读操作/写操 作,生成当前读/写操作的列地址信息,将数据包写入片外缓存器或将数据包从片外缓存 器中读取出来;
所述片外缓存控制器,与多路突发数据包缓存管理电路和片外缓存器分别连接,用于 对片外缓存器进行控制。其中,所述多路突发数据缓存管理电路包括多路突发数据组合仲裁器、读写仲裁 电路、突发管理电路、缓存用户接口、缓存区状态管理电路、写端数据与地址选择器、读端数 据与地址选择器、读授权控制电路、写授权控制电路。其中,所述多路突发数据组合仲裁器,用于在当前仅有单个通道请求采用固定优 先级的方式或者在当前通道请求的数量大于1时采用循环优先级的方式对各突发数据通 道进行仲裁及授权,并将授权的突发数据通道信息提供给读写仲裁电路,由其授权具体的 读操作或者写操作。所述突发管理电路,用于在读操作或者写操作过程中,生成当前操作的片外缓存 器的列地址,同时由缓存用户接口据此完成片外缓存器地址的转化并生成片外缓存控制器 的接口信号。所述缓存区状态管理电路,包含与突发数据通道数一致的N个包计数器,用于对 片外缓存器中对应于各路突发数据通道的缓存区中的数据包的个数分别进行实时统计,在 每路对应的包计数器值大于最大阈值/小于最小阈值时通知对应的写授权控制电路/读授 权控制电路及数据包写控制电路/数据包读控制电路其相应的缓存区为满状态/空状态, 多路突发数据组合仲裁器将据此状态中止响应对应通道的数据包写控制电路/数据包读 控制电路的写包/读包申请,同时对应通道的数据包写控制电路/数据包读控制电路将据 此满状态/空状态中止发送写包/读包申请。
所述写端数据与地址选择器/读端数据与地址选择器用于在写操作/读操作时根 据多路突发数据组合仲裁器的仲裁结果选择所授权通道的对应的数据包与行地址。 其中,所述接收缓冲区由2个双端口的以乒乓方式工作的片内RAM存储器组成;所 述发送缓冲区由1个双端口的片内RAM存储器组成。其中,所述组成接收缓冲区的片内RAM存储器的写端口的地址线有11根、输入数 据宽度为8位,读端口的地址线有8根、输出数据宽度为64位。所述组成发送缓冲区的片内RAM存储器的写端口的地址线有8根、写数据宽度为 64位,读端口的地址线有11根、读数据宽度为8位。其中,所述片外缓存器由2片16位的片外存储器组成。其中,所述片外存储器划分为多个相同容量大小的存储块,且其中连续的多个存 储块组成缓存区并分配给各路突发数据通道。其中,所述片外存储器划分为多个2048字节大小的存储块。一种如上所述系统的实现多路突发数据业务缓存的方法,包括接收数据处理的 步骤、写数据申请的步骤、多路突发数据仲裁管理的步骤、读数据申请的步骤以及发送数据 处理的步骤;其中,
所述接收数据处理的步骤包括在外界有突发数据输入时,判断接收缓冲区是否为空 且片外缓存器中对应通道的缓存区是否非满,若否,则丢弃当前输入的数据包;若是,则将 该数据包按字节写入接收缓冲区中,同时统计该数据包的字节数,且在接收完一个完整的 数据包时置位整包标志位;
所述写数据申请的步骤包括实时查询接收缓冲区中的整包标志位,当检测到置位时 向多路突发数据包缓存管理电路发起写包申请,并在通过申请并得到授权时,读取接收缓 冲区中完整的数据包内容并将其与该数据包的长度信息组合成新的数据流缓存到片外存 储器中对应于该突发数据通道的缓存区中;
所述多路突发数据仲裁管理的步骤包括实时查询各路通道的读/写请求,先进行对 请求的仲裁与通道的授权,再对授权的通道进行读写仲裁,生成读操作授权或者写操作授 权;
所述读数据申请的步骤包括检测发送缓冲区是否为空且片外缓存器中对应通道的缓 存区是否非空,若是,则向多路突发数据包缓存管理电路发起读包申请,并在通过申请并得 到授权时,从片外缓存器中对应通道的缓存区中读取完整的数据包并从其中分离出数据包 内容与数据长度信息,记录数据长度信息,将数据包内容写入发送缓冲区中;
所述发送数据处理的步骤包括检测发送缓冲区中是否有完整的数据包,然后从发送 缓冲区中读取数据包并将其发送至外界的输出端。其中,所述多路突发数据仲裁管理的步骤中,根据当前通道请求的数量,采用循环 优先级或者固定优先级的方式来实现对请求的仲裁与通道的授权。其中,若当前仅有单个通道请求,则采用固定优先级的方式来实现对请求的仲裁 与通道的授权;若当前通道请求的数量大于1,则采用循环优先级的方式来实现对请求的 仲裁与通道的授权。其中,所述方法还包括系统初始化的步骤,该步骤进一步包括
上电复位后,系统立即进行初始化过程,将FPGA芯片内的各个通道的行、列地址清零,缓存区状态管理中的包计数器、长度计数器清零,RAM读写地址、通道读写请求全部清零,各缓冲区、缓存区设为空状态,设置各路缓存区水线深度,将内部各控制逻辑设于空闲状态。本发明实施例与现有技术相比,有益效果在于
1)本发明采用FPGA实现多路突发数据业务的缓存,尤其适合于数据通信设备中的多 路通信数据的缓存处理,可实现多路(N > 2)突发数据业务的缓存,实现相对灵活,可根据 要求配置更多的通道。2)本发明采用循环优先级与固定优先级相结合的方式来实现对多路突发数据的 操作仲裁,使各路的突发数据业务能得到相对均衡的缓存。3)本发明将数据长度信息与数据内容组合成新的数据流,存放在片外的存储器 中,避免了数据长度记录表造成FPGA片内RAM资源短缺的瓶颈。4) 本发明采用独特的系统架构,根据需求及FPGA资源情况,可以以模块化的 方式,简单的增加或者减少通道个数,以适合不同的应用情况。5) 本发明对片外存储器的访问采用简单的地址生成机制,不需要采用复杂的 链表,使得片外存储器的BANK、行、列地址能独立产生,且列地址的生成不受通道个数的影 响。


图1是采用FPGA片内RAM实现数据队列的多通道数据缓存的系统框图。图2是采用FPGA片内RAM与片外RAM相结合实现多通道数据缓存的系统框图。图3是本发明实施例提供的采用FPGA实现多路突发数据业务缓存的系统框图。图4是本发明实施例提供的存储块及多路突发数据缓存区的划分示意图。图5是本发明实施例提供的循环优先级分配方法示意图 图6是本发明实施例提供的单路突发数据接收处理流程图。图7是本发明实施例提供的单路突发数据写控制处理流程图。图8是本发明实施例提供的多路突发数据缓存管理流程图。图9是本发明实施例提供的单路突发数据读控制处理流程图。图10是本发明实施例提供的单路突发数据发送控制流程图。
具体实施例方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对 本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并 不用于限定本发明。(一)、如图3所示,本实施例中采用FPGA实现多路突发数据业务缓存的系统包括 提供块RAM资源的FPGA芯片1和片外缓存器2。其中的FPGA芯片进一步包括与数据通道数一致的数据包接收及缓冲电路11、数 据包写控制电路12、数据包读控制电路13、数据包缓冲及发送电路14,多路突发数据缓存 管理电路15,片外缓存控制器16。上述各个组成部分的连接关系及工作原理分别如下所述。(1)数据包接收及缓冲电路11,它的输入来自外界的突发数据输入,输出连接到数据包写控制电路12,用于负责 接收输入端的数据并将数据缓冲起来,并将接收缓冲区 中的空满状态及是否有整包的标志反馈给数据包写控制电路12。它内含2个双端口 RAM组 成的以乒乓方式工作的乒乓缓冲区,缓冲从外界输入的突发数据,同时产生缓冲区空满状 态信号。组成乒乓缓冲区的2个双端口 RAM读写端口的地址线、数据线宽度不同,写端口的 地址线为11位、数据宽度为8位,而读端口的地址线为8位、数据宽度为64位。(2)数据包写控制电路12,输入来自前级的突发数据业务接收及缓冲电路1, 输出连接到多路突发数据缓存管理电路15,每个通道的缓存区状态管理中的满状态信号也 做为输入提供给数据包写控制电路12。它用于负责在通过申请并得到授权的情况下,将一 个完整的数据包缓存到片外存储器对应的缓存区中。(3 )数据包读控制电路13,它的输入来自多路突发数据缓存管理电路15,输 出连接到数据包缓存及发送电路14。它负责数据包读取,在通过申请并授权情况下,从片外 存储器对应的缓存区中读取一个完整的数据包写入到发送缓冲区中。(4)数据包发送及缓冲电路14,其输入来自数据包读控制电路13,输出连接 到外界端口。它负责缓冲读取的整个数据包,然后发送到外界。它内含由1个双端口 RAM 组成的发送数据缓冲区,双端口 RAM的读写端口的地址线、数据线宽度不同,写端口的地址 线为8根、数据线宽度为64位,而读端口的地址线为11根、数据线宽度为8位。(5)多路突发数据缓存管理电路15,它的输入输出与每路的数据包写控制电 路12、数据包读控制电路13及片外缓存控制器16相连。它负责多路突发数据的请求、仲裁 及通道授权,选择已授权通道的数据、地址、状态信息,统计缓存区的状态,生成列地址,将 数据包写入到片外存储器或将数据包从片外存储器中读取出来。它包括有缓存区状态管理 电路151、多路突发数据组合仲裁器152、读写仲裁电路153、突发管理电路154、缓存用户接 口 155、写端数据与地址选择器156、读端数据与地址选择器157、写授权控制电路158以及 读授权控制电路等功能模块。其中多路突发数据组合仲裁器152,是采用固定优先级与循环优先级相结合的 方式,实现对多路突发数据的请求、仲裁、授权。读端数据与地址选择器156/写端数据与地址选择器157均是N选1的X位 多路选择器,N的大小跟设计的突发数据通道数对应,对于数据选择器,X为片外存储器2的 总数据位宽度的2倍;对于地址选择器,X的位数跟片外存储器2的行、列地址位长度及数 据位宽度有关。缓存区状态管理电路151,含有N个K位的包计数器,N的大小跟突发数据通 道数对应,而K的大小跟对应通道的缓存区的深度有关;在某路对应缓存区写入一个包时, 相应的包计数器加1,当取走一个包时,相应的包计数器减1 ;当包计数器值超过最大阈值 时,相应通道的缓存区判为空状态,此时读端将不再发出读申请;当包计数器值超过最小阈 值时,相应通道的缓存区判为满状态,此时写端将不再发出写申请;同时,在缓存区空或满 的情况下,多路突发数据组合仲裁器152将不再响应读或写请求。(6)片外缓存控制器16,它的输入端、输出端分别与片外缓存器2及多路突发数据 缓存管理电路15相连接;片外缓存控制器16采用FPGA芯片厂商提供的IP软核实现。(7)片外缓存器2,它的输入端、输出端与片外缓存控制器16相连,它是独立 于FPGA的片外存储器。
片外缓存器2由片外的存储器芯片组成,根据存储芯片内部的存储结构,可 将存储区划分为多个2048字节大小的存储块,每个存储块的存储单元地址是连续的。连续 的多个存储块组成缓存区,再分配给各路突发数据通道;存储块可以根据存储芯片的行、列 地址、数据位宽度来划分,假如列地址宽度为10位,数据位宽度为16位,则正好一行划分为 一个存储块,对应每个存储块存储一个完整的数据包。而各路缓存区的大小如果都分配相 同,则可以根据存储芯片的BANK地址及行的高位地址来划分。假如多路突发数据通道为32 个,而存储芯片BANK地址宽度为3,则缓存区可按8个BANK,每个BANK分成四个区来划分, 即行的高2位地址用来做一个BANK内四个缓存区的划分,划分方式可参考附图4。因此每 路的地址产生,就变得十分简单,列的地址由多路突发数据缓存管理电路中的突发管理模 块生成,每次突发操作后,列地址自动按突发长度增加;而行的地址由每路的数据包写/读 控制电路生产,即每次往缓存区写入一个完整的数据包,行低(N-2)位地址(高2位地址用 于缓存区区域的划分,分配后不变)自动加1,每次从缓存区读取一个完整的数据包,行低位 地址自动减1。另外,数据包接收及缓存电路11含有数据接收控制电路和数据包缓冲区,其中 的数据接收控制电路用于负责控制外界输入数据到数据包缓冲区的写入过程,产生写地 址(Wr_ram_adr)及相关的写使能(Wr_ram_en)信号,含有2个数据包长度寄存器(pkt_ length_reg),2个整包标志位(full_pkt_flag),其中数据包长度寄存器(pkt_length_ reg)用于当一个完整的数据包写入到包缓冲区时,锁存当前写地址(wr_ram_adr)值,记录 当前数据包的长度信息及数据包写入缓存区时按一定突发长度所需的突发次数信息;整包 标志位(full_pkt_flag)标示缓冲区是否有完整的数据包。数据包写控制电路12由内部逻辑实现,检测到整包标志(full_pkt_flag) 置位时,向多路突发数据缓存管理电路15发起写请求(ch_wr_req),等待写授权(ch_wr_ gnt),然后查询数据包接收及缓存电路11提供的乒乓缓冲区的空状态信号,判断哪个缓冲 区有整包,并在写数据请求(Ch_Wdata_req)有效的情况下,读取缓冲区的数据并将其与数 据包长度信息组合成新的数据流输出给多路突发数据缓存管理电路15 ;且每向缓存区写 入一个完整数据包后,行地址(ch_wr_row_adr)自动加1,指向下一个数据包要缓存的行位 置。多路突发数据缓存管理电路15,由内部逻辑实现,将多个通道的仲裁授权与 通道的读写仲裁授权从功能上分开。内含的多路突发数据组合仲裁器152实时检测是否有 通道请求,并根据多个请求或单个请求采用循环优先级或固定优先级的方式来仲裁授权哪 个通道,并将授权的通道提供给读写仲裁电路153,读写仲裁电路153将授权通道的具体的 读或者写操作。在读或者写操作过程中,突发管理电路154生成当前操作的列地址(col_ adr),且每次突发操作后列地址(C0l_adr)按突发长度增加,以指向下一次要突发的位置; 同时缓存用户接口 155完成片外缓存器地址的转化,并生成片外缓存控制器16的接口信 号。循环优先级的优先级分配方法如图5所示,当前优先级最高的突发数据通道在下一次 分配中优先级最低。数据包读控制电路13,由内部逻辑控制实现,当检测到发送缓冲区空,而片 外的缓存区有数据包时,向多路突发数据缓存管理电路15发起读请求(Ch_rd_req),并等 待读授权(ch_rd_gnt),当读数据有效信号(ch_rdata_val id)有效时,将读取的数据写入到发送缓冲区中,同时锁存读 取的数据包长度信息(pkt_length_inf0),数据包长度信息 (pkt_length_inf0)提供当前读取数据包按一定突发长度所需的突发次数。数据包发送及缓存电路14,含有数据读控制电路和发送缓冲区,数据读控制 电路在发送缓存区有完整数据包时,生成读控制信号,控制发送缓冲区的数据读取。(二)、上述系统的工作过程为 (1)初始化过程。上电复位后,系统立即进行初始化过程,FPGA片内的各个通道的行地址、长度 计数器、RAM读/写地址、通道读/写请求等全部清零,列地址,缓存区状态管理中的包计数 器、各缓存区状态为空,设置各路缓存区水线深度,各内部控制逻辑处于空闲状态。(2)接收数据处理。参考附图6,该过程中的具体处理流程为如果有外界数据输入,检查乒乓缓 冲区是否为空,检查对应的片外缓存区状态是否非满,如果条件不成立,则丢弃当前输入的 数据包;如果条件成立,则将输入数据按字节写入到乒乓缓冲区中,同时计数输入数据的字 节数,收到一个完整的数据包后,锁存乒乓缓冲的写地址(wr_ram_adr)到数据包长度寄存 器(pkt_length_reg)中,同时置位相应的整包标志(full_pkt_flag)。(3)写数据申请。参考附图7,该过程中的具体处理流程为数据包写控制电路在时钟周期下 查询整包标志(full_pkt_flag),当检测到整包标志置位时,已知乒乓缓冲区有一个完整 包,立即向多路突发数据缓存管理电路发起写包申请(ch_wr_req),并等待多路突发数据组 合仲裁器的写授权(ch_Wr_gnt),当写数据请求有效信号(Ch_Wdata_req)到来,数据包写 控制电路读取乒乓缓冲区的完整数据包内容,并将其与该数据包的长度信息(pkt_length_ reg)中的值组合成新的数据流缓存到片外缓存器中对应的缓存区中;写操作下的行地 址(ch_wr_c0l_adr)在一个完整数据包写入片外缓存器中其对应的缓存区后,自动加1, 指向下一个数据包将要写入的位置;数据包的写中止信号(ch_wr_term)为由多路突发数 据缓存管理电路中的突发管理电路通过比较当前的列地址(c0l_adr)与整包长度(pkt_ length_reg)中的突发次数来产生。(4)多路突发数据仲裁管理。参考附图8,该过程中的具体处理流程为多路突发数据组合仲裁器在时钟周期 下实时检测是否有通道(读或写)请求(chx_req),并根据当前通道请求的数量,决定采用循 环优先级(通道请求数大于1)或者固定优先级(只有单个请求)方式来实现请求的轮询与通 道的授权(chX_gnt),授权的通道再通过读写仲裁,生成读操作授权(chX_rd_gnt)或者写 操作授权(chX_Wr_gnt)。同时根据仲裁的结果来选择所授权通道对应的数据、行地址、突发 次数、控制信号,授权通道的数据、行地址、突发次数、控制信号的选择由读端/ 写端地址与数据选择器完成;当向相对应通道的缓存区写入一个完整数据包时,缓存区状 态管理电路中相应的包计数器自动加1,当从相对应通道的缓存区读取一个完整数据包时, 缓存区状态管理电路中相应的包计数器自动减1 ;当包计数器值超过最大阈值或者最小阈 值时,将产生相应通道的缓存区满或者空状态信号。(5)读数据申请。参考附图9,该过程中的具体处理流程为数据读控制电路检测发送缓冲区是否为空,再检测对应的片外缓存区是否非空,然后则向多路突发数据缓存管理电路发出读包申请(Ch_rd_req),并等待多路突发数据组合仲裁器的读授权(ch_rd_gnt),在读取数据 有效信号(ch_rdata_valid)有效时,分离出数据包内容与数据长度信息,将数据长度记录 到长度信息寄存器(pkt_length_inf0)中,数据内容按时序写入到发送缓冲区中。当一个 完整数据包被读取后,读操作下的行地址(ch_rd_C0l_adr)自动加1,指向下一个将要读取 的数据包位置。数据包的读中止信号(ch_rd_term)由长度信息寄存器(pkt_length_inf0) 中突发次数与当前列地址(col_adr)比较产生。具体处理流程可见附图9。(6)发送数据处理。参考附图10,该过程中的具体处理流程为数据包缓冲及发送电路检测发送 缓冲区是否有完整的数据包,然后以字节形式从发送缓冲区中读取数据后发送到外界的 输出端。发送过程中,将记录发送的字节数(tx_byteS),并与当前数据包长度信息(pkt_ lengthjnfo)进行比较,确定数据包是否发送完,发送完成后,发送字节数与当前的数据包 长度信息都被清零,等待下一个数据包的读取与发送。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精 神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种基于FPGA的实现多路突发数据业务缓存的系统,其特征在于,该系统包括用于 缓存多路突发数据的片外缓存器和提供RAM资源的FPGA芯片;所述FPGA芯片包括片外缓 存控制器,多路突发数据缓存管理电路,以及与数据通道数一致的数据包接收及缓冲电路、 数据包写控制电路、数据包缓冲及发送电路、数据包读控制电路;其中,所述数据包接收及缓冲电路,其输入端接收外界的突发数据输入、输出端与数据包写 控制电路连接,包括数据包接收控制电路以及接收缓冲区,用于在接收缓冲区为空时接收 外界输入的突发数据并将其写入接收缓冲区中,且在写入完整的数据包时置位整包标志 位;所述数据包写控制电路,其输入端与数据包接收及缓冲电路连接、输出端与多路突发 数据缓存管理电路连接,用于在所述整包标志位被置位且片外存储器中对应通道的缓存区 为非满状态时,在向多路突发数据包缓冲管理电路申请并得到授权的情况下,读取接收缓 冲区中完整的数据包并将其与其长度信息组合成新的数据流缓存到片外存储器中对应通 道的缓存区中,同时生成下一个写操作的行地址信息;所述数据包缓冲及发送电路,其输入端与数据包读控制电路连接、输出端与外界端口 连接,包括发送缓冲区以及数据包发送控制电路,用于缓冲完整的数据包并将其发送至外 界端口 ;所述数据包读控制电路,其输入端与多路突发数据缓存管理电路连接、输出端与数据 包缓冲及发送电路连接,用于发送缓冲区为空且片外存储器中对应通道的缓存区为非空状 态时,在向多路突发数据包缓冲管理电路申请并得到授权的情况下从片外存储器中对应通 道的缓存区中读取完整的数据包后写入发送缓冲区中,同时生成下一个读操作的行地址信 息;所述多路突发数据包缓存管理电路,分别连接至多路数据包写控制电路及数据包读 控制电路,并与片外缓存控制器连接,用于在接收到多路突发数据的读包申请/写包申请 时对发送申请的突发数据通道进行仲裁及授权、再对授权的通道授权具体的读操作/写操 作,生成当前读/写操作的列地址信息,将数据包写入片外缓存器或将数据包从片外缓存 器中读取出来;所述片外缓存控制器连接于多路突发数据包缓存管理电路和片外缓存器之间,用于对 片外缓存器进行控制。
2.如权利要求1所述的基于FPGA的实现多路突发数据业务缓存的系统,其特征在于, 所述多路突发数据缓存管理电路包括多路突发数据组合仲裁器、读写仲裁电路、突发管理 电路、缓存用户接口、缓存区状态管理电路、写端数据与地址选择器、读端数据与地址选择 器、读授权控制电路、写授权控制电路;其中,所述多路突发数据组合仲裁器,用于在当前仅有单个通道请求采用固定优先级的方式 或者在当前通道请求的数量大于1时采用循环优先级的方式对各突发数据通道进行仲裁 及授权,并将授权的突发数据通道信息提供给读写仲裁电路,由其授权具体的读操作或者 写操作;所述突发管理电路,用于在读操作或者写操作过程中,生成当前操作的片外缓存器的 列地址,同时由缓存用户接口据此完成片外缓存器地址的转化并生成片外缓存控制器的接 口信号;所述缓存区状态管理电路,包含与突发数据通道数一致的N个包计数器,用于对片外 缓存器中对应于各路突发数据通道的缓存区中的数据包的个数分别进行实时统计,在每路 对应的包计数器值大于最大阈值/小于最小阈值时通知对应的写授权控制电路/读授权控 制电路及数据包写控制电路/数据包读控制电路其相应的缓存区为满状态/空状态,多路 突发数据组合仲裁器将据此状态中止响应对应通道的数据包写控制电路/数据包读控制 电路的写包/读包申请,同时对应通道的数据包写控制电路/数据包读控制电路将据此满 状态/空状态中止发送写包/读包申请。所述写端数据与地址选择器/读端数据与地址选择器用于在写操作/读操作时根据多 路突发数据组合仲裁器的仲裁结果选择所授权通道的对应的数据包与行地址。
3.如权利要求1或2所述的基于FPGA的实现多路突发数据业务缓存的系统,其特征在 于,所述接收缓冲区由2个双端口的以乒乓方式工作的片内RAM存储器组成;所述发送缓冲 区由1个双端口的片内RAM存储器组成。
4.如权利要求3所述的基于FPGA的实现多路突发数据业务缓存的系统,其特征在于,所述组成接收缓冲区的片内RAM存储器的写端口的地址线有11根、输入数据宽度为8位,读端口的地址线有8根、输出数据宽度为64位;所述组成发送缓冲区的片内RAM存储器的写端口的地址线有8根、写数据宽度为64 位,读端口的地址线有11根、读数据宽度为8位。
5.如权利要求1所述的基于FPGA的实现多路突发数据业务缓存的系统,其特征在于, 所述片外缓存器由2片16位的片外存储器组成。
6.如权利要求1或5所述的基于FPGA的实现多路突发数据业务缓存的系统,其特征在 于,所述片外存储器划分为多个相同容量大小的存储块,且其中连续的多个存储块组成缓 存区并分配给各路突发数据通道。
7.如权利要求6所述的基于FPGA的实现多路突发数据业务缓存的系统,其特征在于, 所述片外存储器划分为多个2048字节大小的存储块。
8.—种如权利要求1所述系统的实现多路突发数据业务缓存的方法,其特征在于,该 方法包括接收数据处理的步骤、写数据申请的步骤、多路突发数据仲裁管理的步骤、读数 据申请的步骤以及发送数据处理的步骤;其中,所述接收数据处理的步骤包括在外界有突发数据输入时,判断接收缓冲区是否为空 且片外缓存器中对应通道的缓存区是否非满,若否,则丢弃当前输入的数据包;若是,则将 该数据包按字节写入接收缓冲区中,同时统计该数据包的字节数,且在接收完一个完整的 数据包时置位整包标志位;所述写数据申请的步骤包括实时查询接收缓冲区中的整包标志位,当检测到置位时 向多路突发数据包缓存管理电路发起写包申请,并在通过申请并得到授权时,读取接收缓 冲区中完整的数据包内容并将其与该数据包的长度信息组合成新的数据流缓存到片外存 储器中对应于该突发数据通道的缓存区中;所述多路突发数据仲裁管理的步骤包括实时查询各路通道的读/写请求,先进行对 请求的仲裁与通道的授权,再对授权的通道进行读写仲裁,生成读操作授权或者写操作授 权;所述读数据申请的步骤包括检测发送缓冲区是否为空且片外缓存器中对应通道的缓存区是否非空,若是,则向多路突发数据包缓存管理电路发起读包申请,并在通过申请并得 到授权时,从片外缓存器中对应通道的缓存区中读取完整的数据包并从其中分离出数据包 内容与数据长度信息,记录数据长度信息,将数据包内容写入发送缓冲区中;所述发送数据处理的步骤包括检测发送缓冲区中是否有完整的数据包,然后从发送 缓冲区中读取数据包并将其发送至外界的输出端。
9.如权利要求8所述的实现多路突发数据业务缓存的方法,其特征在于,所述多路突 发数据仲裁管理的步骤中,根据当前通道请求的数量,采用循环优先级或者固定优先级的 方式来实现对请求的仲裁与通道的授权。
10.如权利要求9所述的实现多路突发数据业务缓存的方法,其特征在于,若当前仅有单个通道请求,则采用固定优先级的方式来实现对请求的仲裁与通道的授权;若当前通道请求的数量大于1,则采用循环优先级的方式来实现对请求的仲裁与通道 的授权。
11.如权利要求8至10任一权利要求所述的实现多路突发数据业务缓存的方法,其特 征在于,该方法还包括系统初始化的步骤,该步骤进一步包括上电复位后,系统立即进行初始化过程,将FPGA芯片内的各个通道的行、列地址清零, 缓存区状态管理中的包计数器、长度计数器清零,RAM读写地址、通道读写请求全部清零,各 缓冲区、缓存区设为空状态,设置各路缓存区水线深度,将内部各控制逻辑设于空闲状态。
全文摘要
本发明公开了一种基于FPGA的实现多路突发数据业务缓存的系统及方法,其中的系统包括用于缓存多路突发数据的片外缓存器和提供RAM资源的FPGA芯片;所述FPGA芯片又包括片外缓存控制器,用于处理多路突发数据的请求仲裁及通道授权、生成当前读/写操作的列地址信息、将数据包写入片外缓存器或将数据包从片外缓存器中读取出来的多路突发数据缓存管理电路,以及与数据通道数一致的数据包接收及缓冲电路、数据包写控制电路、数据包读控制电路、数据包缓冲及发送电路。采用本发明,可简单的增加或者减少通道个数,各路的突发数据业务能得到相对均衡的缓存,避免了FPGA片内RAM资源短缺造成的瓶颈。
文档编号G06F13/18GK102096648SQ20101058075
公开日2011年6月15日 申请日期2010年12月9日 优先权日2010年12月9日
发明者周学兵, 宋海波, 林彬, 郑楠, 黄良静 申请人:深圳中兴力维技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1