数据帧队列管理方法

文档序号:9687241阅读:1245来源:国知局
数据帧队列管理方法
【技术领域】
[0001 ]本发明关于通信数据传输领域中数据缓存与队列管理的方法。
【背景技术】
[0002]在通信系统中,链路层数据复接时需要将多个上层NDU(Network_layer DataUnit)数据帧封装为物理层传输的LDU(Link-layer Data Unit)数据帧。通常物理层的数据率是恒定的,而来自用户的NDU速率是变化的,需要在通信系统的链路层对NDU数据帧进行缓存,因此需要对数据帧的队列进行管理。传统的数据队列管理通常在CPU中实现。虽然运行于CPU的高级语言在队列管理方面比较成熟,但对于当前通信系统的速率越来越高,实时性越来越强的环境下,采用CHJ高级语言对数据帧的队列管理已不在适应。为了提高链路层的速度和减小时延将数据队列管理可以放到现场可编程逻辑门阵列FPGA中实现。虽然采用硬件逻辑电路实现各种功能的FPGA具有并行快速等特点,比较容易实现定长的数据帧队列管理,但其开发语言不如运行CPU上的高级语言灵活。比如,《电子技术应用》2012年38期中公开了《星载交换机中高性能队列管理器的研究与实现》,该方法采用虚拟输出排队机制改善输入缓存中存在的队头阻塞问题;使用前向地址指针pre_addr和后向地址指针nxt_addr控制信元的写入和读出。在FPGA中采用索引结构,建立索引表存储每个数据帧的首地址和尾地址,通过首尾地址来检索数据帧,其能够达到星载交换机的队列时延要求,具有较高的交换性能及稳定性,但实现比较复杂耗费资源也较多。

【发明内容】

[0003]本发明的目的是针对上述现有技术存在的不足之处,提供一种具有实现简单,消耗FPGA资源少,无需首尾地址来检索数据帧的数据队列管理方法。
[0004]本发明的上述目的可以通过以下措施来达到,一种数据帧队列管理方法,其特征在于包括如下步骤:采用FPGA内部先进先出FIFO存储缓冲区存储数据帧;数据帧队列管理装置采用标识位来标识帧头帧尾,在数据帧中每一个元素配一个能够标识出数据帧的帧头和帧尾的帧标识,数据帧队列管理装置将数据帧元素和帧标识一并存入FIFO存储缓冲区;然后通过FPGA的帧计数器统计数据帧队列的帧数,得到帧计数值;数据帧队列管理装置读控制器接收完一帧数据后,通过帧计数器将帧计数值加1,输出一帧数据后,将帧计数值减1;数据帧输出时,数据帧队列管理装置读控制器从FIFO中读取帧标识和数据帧元素中,通过帧标识判读数据帧的帧头和帧尾,取出完整的帧数据输出。
[0005]本发明相比于现有技术具有如下有益效果。
[0006]实现简单。本发明的数据帧队列管理,采用FPGA内部先进先出FIFO存储缓冲区存储数据帧,实现简单。
[0007]消耗FPGA资源少。本发明采用读控制器数据帧队列接收完一帧数据后,帧计数器将帧计数值加1,本发明的数据帧队列管理装置输出一帧数据后,将帧计数值减1,数据帧输出时,读控制器从FIFO中读取帧标识和数据帧元素中,通过帧标识判读数据帧的帧头和帧尾,取出完整的帧数据输出。由于FPGA内部FIFO的位宽为9N比特,通常数据帧位宽为8N(N为自然数),多余的N比特被浪费掉,本发明巧妙的利用多余的比特存储标识位,因此节省了FPGA资源。
[0008]无需首尾地址来检索数据帧。本发明的数据帧队列管理装置采用标识位来标识帧头帧尾,数据帧中每一个元素配一个能够标识出数据帧的帧头和帧尾的帧标识,将数据帧元素和帧标识一并存入FIFO存储缓冲区;然后通过FPGA的帧计数器统计数据帧队列的帧数,得到帧计数值;不需要通过首地址和尾地址来索引帧头和帧尾,因此可以适用于定长或者变长的数据帧队列管理。
【附图说明】
[0009]图1是本发明数据帧队列管理装置数据帧队列输入输出流程示意图。
[0010]图2是本发明数据帧队列在FPGA内部FIFO存储的数据结构。
[0011 ]图3是本发明帧标识为2比特时FPGA内部FIFO存储的数据结构示例。
[0012]图4是本发明帧标识为1比特时FPGA内部FIFO存储的数据结构示例。
[0013]图5本发明数据帧队列管理装置在FPGA内的实现框图。
[0014]图6是本发明数据帧队列的输入时序图。
[0015]图7是本发明数据帧队列的输出时序图。
【具体实施方式】
[0016]下面结合附图及具体实施例对本发明再作进一步详细说明。
[0017]根据本发明,采用FPGA内部先进先出FIFO存储缓冲区存储数据帧;数据帧队列采用标识位来标识帧头帧尾,采用FPGA内部FIFO实现数据帧的存储,数据帧中每一个元素配一个能够标识出数据帧的帧头和帧尾的帧标识,数据帧元素和帧标识一并存入FIFO内部,采用FPGA实现计数器统计数据帧队列的帧数得到帧计数值,数据帧队列接收完一帧数据将帧计数值加1,输出一帧数据后将帧计数值减1,数据帧输出时从FIFO中读取帧标识和数据帧元素,通过帧标识判读数据帧的帧头和帧尾,取出完整的帧数据输出。帧计数器为FPGA内部逻辑构建的一个计数器,帧计数器检查到帧写结束信号上升沿时计数器加1,帧计数器检查到帧读结束信号上升沿时计数器减1。
[0018]参阅图1。在数据帧队列管理中,数据帧的输入输出流程如所述,在数据帧队列输入流程中,当有数据输入时,数据帧队列管理装置将数据帧的元素和帧标识组合后写入FIF0,并判断数据帧是否输入完成,如果未完成则继续将数据帧元素和帧结束标志写入FIF0,如果一个数据帧写完帧计数值加1;在数据帧队列输出流程中,当数据帧队列接收到帧输出数据请求并且帧计数值大于0时,数据帧队列管理装置的读控制器从FIFO中读取数据帧元素和帧标识,否则数据帧队列处于等待状态,数据帧队列通过帧标识判断从FIFO中读取的数据元素是否为帧头,如果不是帧头则继续读取下一个数据帧的元素和帧标识,直到找到帧头,如果是帧头将帧头输出并从FIFO中读取下一个数据帧的元素和帧标识,并且通过帧标识判断该元素是否为帧尾,如果不是帧尾继续读取下一个数据帧的元素和帧标识直到找到数据帧尾,如果找到帧尾输出帧尾并将帧计数值减1。
[00?9]参阅图2、图3 JIFO中的数据结构包括数据元素和帧标识,数据元素包括:帧1元素1、帧1元素2、帧1元素3…帧1元素N-1、帧1元素N,帧2元素1、帧2元素2、帧2元素N...;帧标识包括:帧1标识1、帧1标识2、帧1标识3...帧1标识N-1、帧1标识N,帧2标识1、帧2标识2、帧2标识3...帧2标识N...。数据帧队列管理装置将数据帧的元素和帧标识组合后写入FIFO,在写入FIFO前将数据帧的元素和帧标识合并为一个数据,不同的数据帧在FIFO中连续存储。
[0020]数据帧由若干元素构成,一个元素可能是一字节或者其它任意比特的数据,数据帧的第一个元素称为帧头,数据帧的最后一个元素为帧尾。
[0021]帧标识用来区分数据帧的帧头和帧尾,帧标识为Μ比特宽度的二进制数据,其中,Μ为自然数。
[0022]帧标识宽度Μ大于等于2时,数据帧队列管理装置采从Μ比特帧标识组成的数据中任意选择三个分别标识帧头、帧尾和其它数据元素,例如帧标识为2比特时,可以但不限于选择二进制的00表示帧头,二进制的01表示帧尾,二进制的11表示其它元素,,帧标识为2比特时FPGA内部FIFO存储的数据结构,采用二进制帧标识00、11、11…11、01、00、11.??对应帧头帧1元素1、帧1元素2、帧1元素3...帧1元素N-1、帧尾帧1元素N,帧头帧2元素1、帧2元素2...。
[0023]帧标识宽度Μ等于1时,帧标识只有1比特数据,其组成的二进制数据只能表示“0”、“1”两个状态。数据帧队列管理装置采用相邻数据帧元素对应的帧标识的组合来区分帧头,帧尾和其它数据元素,比如但不限于采用帧头的数据元素对应的帧标识和其后相邻的一个帧标识位两比特为二进制的10表示帧头,帧尾的数据元素对应的帧标识和在前相邻的一个帧标识位两比特为二进制的11表示帧尾,其余数据帧元素对应的帧标识为0,如图4所述,帧标识为1比特时FPGA内部FIFO存储的数据结构,包括,帧标识1、0、0、0、1、1、1、0、…,对应帧元素:帧头帧1元素1、帧1元素2、帧1元素3...帧1元素N-1、帧尾帧1元素N,帧头帧2元素1、帧2元素2...。数据队列管理中根据帧标识判断帧头的方法如下:
1、若帧标识大于等于2比特,则比较从FIF 0中读取出的帧标识位和帧头标识位是否相同,若相同则
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1