集约式数据帧队列控制器及控制方法

文档序号:6493699阅读:150来源:国知局
集约式数据帧队列控制器及控制方法
【专利摘要】本发明涉及一种集约式数据帧队列控制器及控制方法,该集约式数据帧队列控制器包括用于顺序存放所有数据帧首地址的FIFO、用于存储器存放数据帧长度和内容的共享存储资源的双端口存储器以及用于实现数据帧队列控制管理的专用控制逻辑;专用控制逻辑分别与FIFO以及双端口存储器相连。本发明提供了一种可实现数据帧的紧密存储排列、可提高有限存储资源利用率、有效地解决存储资源的瓶颈问题、有利于在现有FPGA芯片基础上实现高性能的交换机和通信接口以及可降低硬件设计难度和成本的集约式数据帧队列控制器及控制方法。
【专利说明】集约式数据帧队列控制器及控制方法
【技术领域】
[0001]本发明属于计算机控制【技术领域】,涉及一种集约式数据帧队列控制器及控制方法,尤其涉及一种对交换机和通信节点中数据帧队列管理的集约式数据帧队列控制器及控制方法。
【背景技术】
[0002]在高速通信系统设计中,为了保证系统的传输效率和通信服务质量,需要在交换机、通信节点中需要采用大量的存储资源存放数据帧以缓解通信接口与上层处理访问速率不匹配。
[0003]通信系统的硬件设计往往采用FPGA可编程器件实现,而受芯片工艺限制,FPGA内部存储资源有限,因此FPGA存储资源成为制约高速通信系统设计的瓶颈。
[0004]传统的数据帧存储管理采用以最大数据帧长为单位,将存储区划分为等长的存储块,构成一个环形缓冲队列。该方法简单。传统的数据帧存储管理采用以最大数据帧长为单位,将存储区划分为等长的存储块,存储块从零开始,顺序编号,构成一个环形缓冲队列。该方法简单。但在实际应用过程中,传输的数据帧长度往往小于最大帧长度。队列中每个数据块的长度必须不小于最大数据帧的长度。例如:以太网数据帧的取值范围为64-1518字节,数据块的长度不能小于1518字节,当传输的帧长为64字节时,该数据块的利用率只有4.2% (64/1518)。因此,传统的数据帧存储管理对存储资源利用率低,设计成本高。

【发明内容】

[0005]为了解决【背景技术】中存在的上述技术问题,本发明提供了一种可实现数据帧的紧密存储排列、可提高有限存储资源利用率、有效地解决存储资源的瓶颈问题、有利于在现有FPGA芯片基础上实现高性能的交换机和通信接口以及可降低硬件设计难度和成本的集约式数据帧队列控制器及控制方法。
[0006]本发明的技术解决方案是:本发明提供了一种集约式数据帧队列控制器,其特殊之处在于:所述集约式数据帧队列控制器包括用于顺序存放所有数据帧首地址的FIFO、用于存储器存放数据帧长度和内容的共享存储资源的双端口存储器以及用于实现数据帧队列控制管理的专用控制逻辑;所述专用控制逻辑分别与FIFO以及双端口存储器相连。
[0007]上述专用控制逻辑包括用于存放环形队列包括队列首地址QueueHeadPtr、队列尾地址QueueTailPtr、队列长度QueueLength、最大数据巾贞长Frame_MAXLen的控制寄存器组;
[0008]根据控制寄存器组中队列首地址QueueHeadPtr、队列尾地址QueueTailPtr,获取双端口存储器中空闲存储空间,将数据帧的长度和内容写入到双端口存储器中,同时将数据帧在双端口存储器的首地址写入到FIFO,并调整队列尾地址QueueTailPtr的输入控制单元;
[0009]以及读取FIFO中的数据帧首地址,根据数据帧首地址从双端口存储器中读取数据中贞,并调整队列首地址QueueHeadPtr的输出控制单元;
[0010]所述输入控制单元通过双端口存储器接入输出控制单元;所述控制寄存器组分别与FIFO以及双端口存储器相连。
[0011]一种集约式数据帧队列控制器的控制方法,其特殊之处在于:所述控制方法包括以下步骤:
[0012]I)对控制寄存器组以及FIFO进行初始化;
[0013]2)数据帧输入单元将新收到数据帧写入到双端口存储器,并将数据帧的地址写入到FIFO中;
[0014]3)数据帧输出单元从FIFO中获取数据帧首地址,根据数据首帧从双端口存储器读取数据帧的内容。
[0015]上述步骤I)的具体实现方式是:
[0016]1.1)设置队列首地址和队列尾地址:将控制寄存器组中的队列首地址QueueHeadPtr、队列尾地址QueueTailPtr分别设置为零;
[0017]1.2)设置队列长度:根据双端口存储器的大小设置控制寄存器组中队列长度QueueLength ;
[0018]1.3)设置最大数据帧长:按照预先定义最大帧长,设置控制寄存器组中最大数据中贞长Frame_MAXLen ;Frame_MAXLen取值为4字节的整数倍;
[0019]1.4)对FIFO进行复位:复位FIF0,清空FIFO中存放的所有信息。
[0020]上述步骤1.3)中的取值范围是在32-4096字节之间。
[0021]上述步骤2)的具体实现方式是:
[0022]2.1)判断双端口存储器的空满状态:若数据帧环形队列满,则直接丢弃该数据帧;若否,则执行步骤2.2);
[0023]2.2)判断FIFO状态:判断FIFO是否已满,若FIFO已满,则直接丢弃该数据帧;若否,则执行步骤2.3);
[0024]2.3)计算数据帧在存储单元中首地址:所述数据帧在存储单元中的首地址是双端口存储器在逻辑上构成一个数据巾贞环形队列的尾地址QueueTailPtr ;
[0025]2.4)将数据帧的长度和内容写入数据帧首地址对应的存储单元中;
[0026]2.5)将数据帧首地址写入到FIFO中:
[0027]2.6)调整队列尾地址 QueueTailPtr,所述 QueueTailPtr 是 QueueTailPtr 与Frame_Len之和,判断新的QueueTailPtr后续存储区域是否还能存放一个最大数据巾贞,当(QueueTailPtr+Frame_MAXLen) %QueueLength 小于 QueueTailPtr 成立,表不队列尾地址QueueTailPtr已到双端口存储器的尾端,则设置队列尾地址QueueTailPtr为零。
[0028]上述步骤2.1)中双端口存储器在逻辑上构成一个数据帧环形队列,所述数据帧环形队列判断为满的条件是:(QueueTailPtr+2*Frame_MAXLen)%QueueLength>=QueueHeadPtr。
[0029]上述步骤3)的具体实现方式是:
[0030]3.1)判断FIFO的状态,若FIFO为空,则双端口存储器无新的数据帧,直接返回;若否,则执行步骤3.2);
[0031]3.2)从FIFO中读取数据巾贞首地址Frame_Addr ;[0032]3.3)根据数据帧首地址,从双口存储器的数据帧首地址处读取前四字节作为数据帧的长度Frame_Len,根据数据帧的长度,从双口存储器的数据帧首地址Frame_Addr+4处读取数据帧的内容;
[0033]3.4)调整环形队列的队列首地址QueueHeadPtr,将QueueHeadPtr设置为Frame_Addr0
[0034]本发明提出一种集约式数据帧队列控制器及控制方法,该集约式数据帧队列控制器采用FIFO+双端口存储器+专用控制逻辑,构造一个链式结构的共享存储体,实现支持变长、集约式数据帧队列控制器电路。其中双端口用于存储器存放数据帧的内容,逻辑上构成一个的环形队列;FIF0用于顺序存放所有数据帧首地址。数据帧首地址表示该数据帧在双端口存储器中的偏移地址。专用控制逻辑实现数据帧队列控制管理。专用控制逻辑包括控制寄存器组、输入控制单元和输出控制单元。输入控制单元和输出控制单元分别在双端口存储器和FIFO两端操作,收到数据帧时,输入控制将数据帧的长度和内容写入到双端口存储器中,将双端口存储器存放数据帧首地址写入到FIFO中。输出控制负责从FIFO读取数据帧索引信息,根据数据帧首地址从双端口存储器中读取数据帧的长度和内容。该集约式数据帧队列控制器的控制方法采用链式存储和环形队列管理等策略实现一种集约式数据帧队列管理。本发明所提供的集约式数据帧队列控制器及控制方法按照单个数据帧的实际长度分配存储空间,实现数据帧的紧密存储排列,提高了有限存储资源利用率,有效地解决存储资源的瓶颈问题,有利于在现有FPGA芯片基础上实现高性能的交换机和通信接口,降低硬件设计难度和成本,保证了通信系统具有很好传输服务质量。另外,该集约式队列数据帧队列管理控制器实现简单、可扩展性强、访问延迟小。采用硬件电路实现一种集约式数据帧队列控制器。具体而言,本发明具有如下优点:
[0035]资源利用率高:采用链式存储器管理策略,实现了数据帧紧密存储排列,提高了存储资源利用率,减少系统设计对存储资源需求。
[0036]传输效率高:采用硬件电路数据帧队列控制管理,满足通信高速传输要求。
[0037]可扩展性强:数据帧队列控制器的存储器的最大长度、数据帧的最大长度可配置,使用灵活,具有很好的可扩展性。
[0038]设计难度小:有效提高单芯片内通信系统设计规模,系统内部互连实现简单,保证通信系统具有很好传输服务质量,降低通信系统设计难度。
【专利附图】

【附图说明】
[0039]图1是本发明所提供的集约式数据帧队列控制器的结构框图;
[0040]图2是本发明所提供的集约式数据队列管理控制器工作原理图。
【具体实施方式】
[0041]参见图1,集约式数据队列控制器基于双端口存储器和FIFO,采用链式管理结构进行数据帧的紧密排列,基于FPGA设计实现一种数据帧队列管理控制电路。该电路由输入控制单元、输出控制单元、双端口存储器、FIFO、控制寄存器组五部分组成。
[0042]其中:
[0043]双端口存储器:用于存放数据帧长度和内容的共享存储资源。[0044]FIFO:用于存放数据帧首地址,数据帧地址表示该数据在双端口存储器中的偏移地址。FIFO采用一个先进先出策略实现多个数据帧地址的顺序存储。
[0045]控制寄存器组:用于存放环形队列包括队列首地址QueueHeadPtr、队列尾地址QueueTailPtr、队列长度QueueLength、最大数据巾贞长Frame_MAXLen。控制双端口存储器的访问,双端口存储器从逻辑上构成一个环形缓冲区。
[0046]输入控制单元:根据控制寄存器组中队列首地址QueueHeadPtr、队列尾地址QueueTailPtr,获取双端口存储器中空闲存储空间,将数据帧的长度和内容写入到双端口存储器中,同时将数据帧在双端口存储器的首地址写入到FIF O,并调整队列尾地址QueueTailPtr ;
[0047]输出控制单元:读取FIFO中的数据帧首地址,根据数据帧首地址从双端口存储器中读取数据巾贞,并调整队列首地址QueueHeadPtr。
[0048]参见图2,本发明在提供上述控制器的同时,还提供了一种基于该控制器的控制方法,该方法主要分为三个步骤:初始化、数据帧输入、数据帧输出。
[0049]其中:
[0050]1.初始化时,控制器需要初始化控制寄存器组和FIFO。将双端口存储器逻辑上构成一个环形缓冲区。初始化具体过程如下。
[0051]1.1)设置队列首地址和队列尾地址:将控制寄存器组中的队列首地址QueueHeadPtr、队列尾地址QueueTailPtr分别设置为零;
[0052]1.2)设置队列长度:根据双端口存储器大小设置控制寄存器组中队列长度QueueLength ;
[0053]1.3)设置最大数据帧长:按照用户预先定义最大帧长,设置控制寄存器组中最大数据帧长Frame_MAXLen ;Frame_MAXLen取值为4字节的整数倍,典型取值范围在32-4096字节之间。
[0054]1.4)复位FIFO:复位FIF0,清空FIFO中存放的所有信息。
[0055]2.数据帧输入:数据帧输入单元负责将新收到数据帧写入到双端口存储器,并将数据帧的地址写入到FIFO中,具体流程如下:
[0056]2.1)判断双端口存储器空满状态:双端口存储器在逻辑上构成一个数据帧环形队列,数据巾贞环形队列判断为满的条件为:(QueueTailPtr+2*Frame_MAXLen)%QueueLength>=QueueHeadPtr。若数据帧环形队列满,则直接丢弃该数据帧,否则进入到步骤2.2);
[0057]2.2)判断FIFO状态:判断FIFO是否已满,若FIFO已满,则直接丢弃该数据帧,否则进入到步骤2.3);
[0058]2.3)计算数据帧在存储单元中首地址:双端口存储器在逻辑上构成一个数据帧环形队列,队列尾地址QueueTailPtr即新数据巾贞在存储单元的首地址;
[0059]2.4)数据帧写入到存储单元:将数据帧的长度和内容写入数据帧首地址对应的存储单元中;
[0060]2.5)将数据帧首地址写入到FIFO中:将数据帧首地址写入到FIFO中。
[0061 ] 2.6 )调整数据帧环形队列的队列尾地址:调整队列尾地址QueueTai IPtr,QueueTaiIPtr=QueueTailPtr+Frame_Len,判断新的 QueueTailPtr 后续存储区域是否还能存放一个最大数据巾贞,当条件(QueueTai lPtr+Frame_MAXLen ) %QueueLength<QueueTai IPtr成立,表示队列尾地址QueueTailPtr已到双端口存储器的尾端,则设置队列尾地址QueueTailPtr 为零。
[0062]3、数据帧输出:数据帧输出单元负责从FIFO中获取数据帧首地址,根据数据首帧从双端口存储器读取数据帧的内容,具体流程如下:
[0063]3.1)判断FIFO状态:判断FIFO的状态,若FIFO为空,表明双端口存储器无新的数据帧,直接返回,否则进入到步骤3.2);
[0064]3.2)获取数据帧首地址:从FIFO中读取数据帧首地址Frame_Addr ;
[0065]3.3)读取数据帧的内容:根据数据帧首地址,从双口存储器的数据帧首地址处读取前四字节作为数据帧的长度Frame_Len,根据数据帧的长度,从双口存储器的数据帧首地址Frame_Addr+4处读取数据巾贞的内容;
[0066]3.4)调整数据帧环形队列的队列首地址:调整环形队列的队列首地址QueueHeadPtr,将 QueueHeadPtr 设置为 Frame_Addr。
【权利要求】
1.一种集约式数据帧队列控制器,其特征在于:所述集约式数据帧队列控制器包括用于顺序存放所有数据帧首地址的FIFO、用于存储器存放数据帧长度和内容的共享存储资源的双端口存储器以及用于实现数据帧队列控制管理的专用控制逻辑;所述专用控制逻辑分别与FIFO以及双端口存储器相连。
2.根据权利要求1所述的集约式数据帧队列控制器,其特征在于:所述专用控制逻辑包括用于存放环形队列包括队列首地址QueueHeadPtr、队列尾地址QueueTailPtr、队列长度QueueLength、最大数据帧长Frame_MAXLen的控制寄存器组; 根据控制寄存器组中队列首地址QueueHeadPtr、队列尾地址QueueTailPtr,获取双端口存储器中空闲存储空间,将数据帧的长度和内容写入到双端口存储器中,同时将数据帧在双端口存储器的首地址写入到FIFO,并调整队列尾地址QueueTailPtr的输入控制单元; 以及读取FIFO中的数据帧首地址,根据数据帧首地址从双端口存储器中读取数据帧,并调整队列首地址QueueHeadPtr的输出控制单元; 所述输入控制单元通过双端口存储器接入输出控制单元;所述控制寄存器组分别与FIFO以及双端口存储器相连。
3.根据权利要求2所述的集约式数据帧队列控制器的控制方法,其特征在于:所述控制方法包括以下步骤: 1)对控制寄存器组以及FIFO进行初始化; 2)数据帧输入单元将新收到数据帧写入到双端口存储器,并将数据帧的地址写入到FIFO 中; 3)数据帧输出单元从FIFO中获取数据帧首地址,根据数据首帧从双端口存储器读取数据帧的内容。
4.根据权利要求3所述的控制方法,其特征在于:所述步骤I)的具体实现方式是: .1.1)设置队列首地址和队列尾地址:将控制寄存器组中的队列首地址QueueHeadPtr、队列尾地址QueueTailPtr分别设置为零; .1.2)设置队列长度:根据双端口存储器的大小设置控制寄存器组中队列长度QueueLength ; .1.3)设置最大数据帧长:按照预先定义最大帧长,设置控制寄存器组中最大数据帧长Frame_MAXLen ;Frame_MAXLen取值为4字节的整数倍; .1.4)对FIFO进行复位:复位FIFO,清空FIFO中存放的所有信息。
5.根据权利要求4所述的控制方法,其特征在于:所述步骤1.3)中的取值范围是在32-4096字节之间。
6.根据权利要求4或5所述的控制方法,其特征在于:所述步骤2)的具体实现方式是: . 2.1)判断双端口存储器的空满状态:若数据帧环形队列满,则直接丢弃该数据帧;若否,则执行步骤2.2); . 2.2)判断FIFO状态:判断FIFO是否已满,若FIFO已满,则直接丢弃该数据帧;若否,则执行步骤2.3); . 2.3)计算数据帧在存储单元中首地址:所述数据帧在存储单元中的首地址是双端口存储器在逻辑上构成一个数据帧环形队列的尾地址QueueTailPtr ; .2.4)将数据帧的长度和内容写入数据帧首地址对应的存储单元中;.2.5)将数据帧首地址写入到FIFO中: 2.6)调整队列尾地址 QueueTailPtr,所述 QueueTailPtr 是 QueueTailPtr 与 Frame_Len之和,判断新的QueueTailPtr后续存储区域是否还能存放一个最大数据帧,当(QueueTailPtr+Frame_MAXLen) %QueueLength 小于 QueueTailPtr 成立,表不队列尾地址QueueTailPtr已到双端口存储器的尾端,则设置队列尾地址QueueTailPtr为零。
7.根据权利要求6所述的控制方法,其特征在于:所述步骤2.1)中双端口存储器在逻辑上构成一个数据帧环形队列,所述数据帧环形队列判断为满的条件是:(QueueTai lPtr+2*Frame_MAXLen) %QueueLength>=QueueHeadPtr。
8.根据权利要求7所述的控制方法,其特征在于:所述步骤3)的具体实现方式是: .3.1)判断FIFO的状态,若FIFO为空,则双端口存储器无新的数据帧,直接返回;若否,则执行步骤3.2); .3.2)从FIFO中读取数据帧首地址Frame_Addr ; .3.3)根据数据帧首地址,从双口存储器的数据帧首地址处读取前四字节作为数据帧的长度Frame_Len,根据数据帧的长度,从双口存储器的数据帧首地址Frame_Addr+4处读取数据帧的内容; . 3.4)调整环形队列的队 列首地址QueueHeadPtr,将QueueHeadPtr设置为Frame_Addr。
【文档编号】G06F5/01GK103902249SQ201210574664
【公开日】2014年7月2日 申请日期:2012年12月26日 优先权日:2012年12月26日
【发明者】王红春, 牛文生, 黄韬, 邱征 申请人:中国航空工业集团公司第六三一研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1