一种流水级的实现方法、流水级及流水线与流程

文档序号:12362727阅读:376来源:国知局
一种流水级的实现方法、流水级及流水线与流程

本发明涉及硬件设计技术领域,尤其涉及一种流水级的实现方法、流水级及流水线。



背景技术:

流水线是硬件设计中常用的控制策略。它对比状态机的控制有更高的效率,因而受到资深硬件工程师们的青睐。

现有的流水线设计是以流水线为整体进行设计,这种设计主要存在以下问题:设计时没有统一标准,特别是共同开发时,很难查看维护别人的代码;以流水线作为整体设计时,流水线级数和流水控制策略(控制协议,比如为实现预定的功能,给规定的变量赋值、数据的运算等)进行了绑定,都是先在文档中规划好,再去做RTL(register transfer level,指的是用寄存器这一级别的描述方式来描述电路的数据流方式)设计,当需要改变流水线级数时,需要对应的修改流水控制策略。这种修改以流水线作为整体进行修改,往往改动较大,甚至需要重新设计,验证也要重新做,耗时耗力。不利于流水线的升级。



技术实现要素:

发明人经过大量研究发现,现有流水线设计存在上述问题的根本原因是目前还没有独立工作的流水级,以致现有流水线不能实现模块化设计,只能整体进行设计。本发明实施例提供了一种流水级的实现方法、流水级及流水线,设计实现一种独立存在的流水级,在流水级的基础上采用统一的连接方式实现流水线的模块化设计,为流水线的设计提供一种统一的设计标准,使得流水线的结构具有通用性、扩展性,方便进行流水级的插入及裁剪,以及流水线的后期维护和升级,降低流水线的设计难度。

有鉴于此,本发明第一方面提供一种流水级的实现方法,包括:

所述流水级中数据的存储深度为1;流水级的状态为满时,写出使能信号有效;流水级为满且写出准备信号有效或流水级为空时,写入准备信号有效;则所述方法包括:

判断流水级的状态,若为空,且写入使能信号有效,则写入数据以及该数据的控制信号;

若为满,且写出准备信号有效,则写入准备信号有效,写出数据以及该数据的控制信号;若写入使能信号有效,则写入数据以及该数据的控制信号。

优选的,所述判断流水级的状态包括:

判断用于指示流水级状态的第一比特位和第二比特位的数值是否相等,若相等,则流水级状态为空;反之为满;其中,第一比特位在写入使能信号与写入准备信号均有效时翻转;第二比特位在写出使能信号与写出准备信号均有效时翻转。

本发明实施例还提供一种流水级的实现方法,所述流水级中数据的存储深度大于1;流水级的状态为非满时,写入准备信号有效;流水级为非空时,写出使能信号有效;则所述方法包括:

判断流水级的状态,若流水级的状态为既非空又非满,且写入使能信号有效,则按照先进先出机制向流水级写入数据以及该数据的控制信号;若写出准备信号有效,则按照先进先出机制从流水级写出数据以及该数据的控制信号;

若为空,且写入使能信号有效,则按照先进先出机制向流水级写入数据以及该数据的控制信号;

若为满,且写出准备信号有效,则按照先进先出机制从流水级写出数据以及该数据的控制信号。

优选的,所述判断流水级的状态包括:

判断指示流水级状态的第一双比特与第二双比特中的低位数值是否相等;

若低位数值不相等,则流水级的状态为既非空又非满;若低位数值相等,则判断第一双比特与第二双比特中的高位数值是否相等;

若高位数值相等,则流水级为空;若高位数值不相等,则流水级为满;其中,第一双比特在写入使能信号与写入准备信号均有效时数值加1;第二双比特在写出使能信号与数据写出准备信号均有效时数值加1。

本发明实施例还提供一种流水级,包括:所述流水级中数据的存储深度为1;流水级的状态为满时,写出使能信号有效;流水级为空或流水级为满且写出准备信号有效时,写入准备信号有效;则所述流水级包括:

第一判断模块,用于判断流水级的状态;

第一写入模块,用于第一判断模块判定流水级状态为空时,若写入使能信号有效,写入数据以及该数据的控制信号;

第一写出模块,用于第一判断模块判定流水级为满时,若写出准备信号有效,写出数据以及该数据的控制信号;

第一确定模块,用于第一判断模块判定流水级为满时,确定写入准备信号有效;

第二写入模块,用于第一确定模块判定写入使能信号有效时,若数据写出成功,写入数据以及该数据的控制信号。

本发明实施例还提供一种流水级,所述流水级中数据的存储深度大于1;流水级的状态为非满时,写入准备信号有效;流水级为非空时,写出使能信号有效;则所述流水级包括:

第二判断模块,用于判断流水级的状态;

第三写入模块,用于流水级的状态为既非空又非满时,若写入使能信号有效,则按照先进先出机制向流水级写入数据以及该数据的控制信号;

第二写出模块,用于流水级的状态为既非空又非满时,若写出准备信号有效,按照先进先出机制从流水级写出数据以及该数据的控制信号;

第四写入模块,用于流水级为空时,若写入使能信号有效,按照先进先出机制向流水级写入数据以及该数据的控制信号;

第三写出模块,用于流水级为满时,若写出准备信号有效,按照先进先出机制从流水级写出数据以及该数据的控制信号。

本发明实施例还提供一种流水线,所述流水线包括:上述任一所述的存储深度为1的多个流水级和/或上述任一所述的存储深度大于1的多个流水级;

前一流水级连接至少一个下一级流水级,前一级流水级通过选通信号选择下一级流水级;

相邻两级的流水级之间的连接如下:前一级流水级的写出使能信号输入至后一级流水级,作为下一级流水级的写入使能信号;前一级流水级的写出控制信号输入至后一级流水级,作为后一级流水级的写入控制信号;前一级流水级写出的数据输入至后一级流水级,作为后一级流水级的输入数据;后一级流水级的写入准备信号输入至前一级流水级,作为前一级流水级的写出准备信号。

优选的,当前一级流水级连接多个下一级流水级时,对应数据的控制信号中携带数据流向的下一级流水级的标识,以及数据的顺序标识。

优选的,部分流水级的写入准备信号与写出准备信号在流水级内部通过寄存器隔离,以达到流水线对时序的要求。

从以上技术方案可以看出,本发明实施例具有以下优点:

本发明实施例为流水级提供了一种独立的工作逻辑,在此工作逻辑下,流水级可以看作一个独立的模块进行工作。

进一步的,在得到具有独立工作逻辑的流水级后,将流水级看作一个模块,在级联成流水线时,除后一级流水级的数据写入准备信号输入至前一级 流水级,作为前一级流水级的数据写出准备信号之外,只需前级流水级的输出类信号连接至下级流水级作为输入信号。上述连接方式为流水级级联提供了一种通用的连接方式。按照上述方式,可以对流水线进行流水级的裁剪以及插入,实现简单,使得流水线的工作非常灵活。

附图说明

图1为本发明实施例中一种流水级的实现方法实施例1的流程图;

图2为本发明实施例中一种流水级实施例1的结构示意图;

图3为本发明实施例对应的一种流水级的时序图;

图4为本发明实施例中一种流水级的实现方法实施例2的流程图;

图5为本发明实施例中一种流水级实施例2的结构示意图;

图6为本发明实施例对应的另一种流水级时序图;

图7为本发明实施例中一个单向条状流水线示意图;

图8为本发明实施例中一个网状流水线示意图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的,所有其他实施例,都应当属于本发明保护的范围。

下面对本发明实施例的技术方案做详细、公开的描述。

首先介绍一下流水级设置的端口信号,主要包括时钟信号(clk)、复位信号(rst)、写入使能信号(upen)、写入准备信号(uprdy)、写入控制信号(upctrl)、写入数据信号(upda)、写出使能信号(dnen)、写出准备信号(dnrdy)、写出控制信号(dnctrl)、写出数据信号(dnda)。

其中时钟信号(clk)、复位信号(rst)为系统级信号。写入使能信号(upen)和写入准备信号(uprdy)为流水级写入数据时的依据,当二者均有效时,流水级才能写入数据(写入数据信号(upda))。同理,写出使能信号(dnen)、 写出准备信号(dnrdy)为流水级写出数据时的依据,当二者均有效时,流水级才能写出数据(写出数据信号(dnda))。

与数据信号(写入数据信号、写出数据信号)对应的为控制信号(写入控制信号(upctrl)、写出控制信号(dnctrl)),控制信号根据具体实现的功能设置,即在流水级的基础上具体实现某种功能时设定的数据运算或者传输协议,比如在某一具体功能下,做如下控制协议:当写入的数据大于某一设定数值时,将数据减去设定数值。

以下实施例中出现的信号参考上述描述,不再赘述。

本发明提供一种流水级的实现方法实施例1,参考图1所示的流程图,本实施例所述的流水级中数据的存储深度为1,所述存储深度是指流水级可以存储一定长度的数据的个数,比如,流水级中设定的存储数据为32位,若流水级中数据的存储深度为1,则流水级能只存储1个32位的数据,若流水级中数据的存储深度为3,则流水级能存储3个32位的数据。

本实施例具体可以包括如下步骤:

S11、判断流水级的状态;

本实施例中所述的流水级中数据的存储深度为1,故其状态有两种:空(流水级中没有数据)和满(流水级中有数据)。

当流水级的状态为空时,即流水级中没有数据,则可以向流水级中写入数据,此时写入准备信号有效,以便于为向流水级中写入数据做准备。

当流水级的状态为满时,可以从流水级中读数据,写出使能信号有效,以便于为从流水级中写出数据做准备。若此时写出准备信号也有效,则可以从流水级中写出数据,一旦数据被写出,则流水级处于空的状态,所以在这种情况下,即流水级为满且写出准备信号有效时,写入准备信号有效,以便于在数据被写出后,为向流水级中写入数据做准备。

当本步骤中判定流水级状态为空时,进入步骤S12,流水级状态为满时, 进入步骤S14。

S12、判断写入使能信号是否有效;

流水级的状态为空时,可以向流水级中写入数据,此时写出使能信号无效,写入准备信号有效。由于写出使能信号与写出准备信号均有效时,才会输出数据,所以,当写出使能信号无效时,无需再判断写出准备信号是否有效,只需判断写入使能信号是否有效。

当写入准备信号有效且写入使能信号有效时,则执行步骤S13,向流水级中写入数据以及该数据的控制信号。若此时写入准备信号有效,而写入使能信号无效,则写入数据失败。

其中,本实施例中所指的信号有效是说信号是处于高电平还是低电平,至于高电平有效还是低电平有效,可以由用户自定义设置,这里不再赘述。

S13、写入数据以及该数据的控制信号;

S14、判断写出准备信号是否有效;

流水级的状态为满时,可以从流水级中读出数据,写出使能信号有效,需要判断判断写出准备信号是否有效。

当写出使能信号有效且写出准备信号有效时,进入步骤S15。当写出使能信号有效而写出准备信号无效时,写出数据失败。由于流水级的状态是满,所以,一旦数据写出失败,则无论此时写入相关的信号是否有效,写入数据均是失败的。

S15、写出数据以及该数据的控制信号。

在流水级的状态为满的情况下,当写出准备信号均有效时,写入准备信号也有效,所以执行完步骤S15之后,进入步骤S16确定是否可以写入数据。

S16、判断写入使能信号是否有效;

基于步骤S15的结果可知,写入准备信号也有效,若此时写入使能信号也有效,则可以写入数据,进入步骤S17。

S17、写入数据以及该数据的控制信号。

当流水级的状态为空时,则只能接收输入的数据(写入准备信号有效),不能向外写出数据(写出使能信号无效);当流水级状态为满时,则可以向外写出数据(写出使能信号有效),同时能不能接收写入的数据则由流水级写出数据是否成功决定。

由于现有技术中没有独立的流水级,所以流水线在设计时是以整体进行设计的,不方便后期的升级。本实施例提供的技术方案,主要为实现一种独立的流水级提供一种可行的方法,为流水线的模块化设计奠定基础。

优选的,在实施例1的基础上,在判断流水级的状态时,可以通过设置指示位的方式指示流水级的状态,比如,设置两个比特位分别记为第一比特位和第二比特位,当第一比特位和第二比特位的数值相等时(比如均为“0”或均为“1”),指示流水级状态为空,反之为满。当然,也可以设定第一比特位和第二比特位的数值相等时,流水级状态为满,反之为空,这里不作具体限定。

本领域技术人员可以理解,流水级状态的指示可以由设计人员自定义实现,并不局限于上述方式。

在流水级的正常工作过程中,随着数据的写入与写出,流水级的状态是实时变化的,所以指示流水级状态的指示位应当能够实时的反应流水级的真实状态,本实际操作中可以通过如下方式实现:

当写入使能信号与写入准备信号均有效时,第一比特位翻转;写出使能信号与写出准备信号均有效时,第二比特位翻转。

在流水级工作过程中,实时根据指示位的数值状态判断流水级的状态,依据判断结果进行数据的写入或者写出。流水级一旦被复位,则流水级回到初始状态,指示流水级状态的指示位赋值为0。

相应的,本发明实施例还提供一种流水级实施例1,参考图2所示,为对 应的结构示意图,其中,所述流水级中数据的存储深度为1;流水级的状态为满时,写出使能信号有效;流水级为满且写出准备信号有效或流水级为空时,写入准备信号有效,则所述流水级包括:

第一判断模块21,用于判断流水级的状态;

第一写入模块22,用于第一判断模块判定流水级状态为空时,若写入使能信号有效,写入数据以及该数据的控制信号;

第一写出模块23,用于第一判断模块判定流水级为满时,若写出准备信号有效,写出数据以及该数据的控制信号;

第一确定模块24,用于第一判断模块判定流水级为满时,确定写入准备信号有效;

第二写入模块25,用于第一确定模块判定写入使能信号有效时,若数据写出成功,写入数据以及该数据的控制信号。

优选的,流水级状态的判断可以参考上述对设置指示位的描述,这里不再赘述。

为了便于对本发明实施例提供的技术方案的理解,下面通过举例对上述内容进行简要说明。

参考表1所示,为流水级的端口设计参考,参考前述流水级的端口设置,在实际操作中,设置时钟信号(clk)、复位信号(rst)、写入使能信号(upen)、写入控制信号(upctrl)、待写入的数据和写出准备信号(dnrdy)为流水线工作过程中接收的输入信号。写入控制信号(upctrl)、待写入的数据一起被写入流水级。

表1 流水级的端口设计

对应的工作逻辑参考表2所示,以第一比特位为wp1、第二比特位为rp1示意说明,其中wp1和rp1在实际应用中可以用寄存器实现。

表2 流水级工作逻辑说明

表2描述的逻辑对应的真值表参考表3所示,其中用“1”表示信号的状态为有效,用“0”表示信号的状态为无效。

表3 表2对应的流水级逻辑的真值表

在对应的逻辑设计下,举例说明根据表1和表2的逻辑设计得到的一个具体的时序图,参考图3所示。表4为对应的时序说明。

表4 对应图3所示的时序说明

在实施例1的基础上,本发明还提供一种流水级的实现方法实施例2,参考图4所示的流程图,其中,所述流水级中数据的存储深度大于1;设定流水级的状态为非满时,写入准备信号有效;流水级为非空时,写出使能信号有效;则本实施例主要包括:

S401、判断流水级的状态;

与上述方法实施例1不同的是,本实施例中流水级的存储深度大于1,所以流水级的状态除了空和满之外,还有既非满又非空。比如,流水级中数据 的存储深度为3,而流水级中存储的数据只有2个。

如果流水级的状态为既非空又非满,进入步骤S402,若流水级的状态为空,进入步骤S404,若流水级的状态为满,进入步骤S405。

S402、若写入使能信号有效,则按照先进先出机制向流水级写入数据以及该数据的控制信号;

流水级处于非空也非满的状态时,既可以进行数据的写入也可以进行数据的写出,同时根据设定的内容可知,流水级处于非空也非满的状态时,写入准备信号与写出使能信号均有效。在写入准备信号有效时,写入使能信号也有效,则可以进行数据的写入,由于流水级中数据的存储深度大于1,所以优选的,这里采用先进先出机制进行数据的写入与读出,保证数据的有序性。反之,若写入使能信号无效,则写入数据失败。

S403、若写出准备信号有效,按照先进先出机制从流水级写出数据以及该数据的控制信号;

在写出使能信号有效时,若写出准备信号无效,则写出数据失败。当写出使能信号有效且写出准备信号有效时,则按照先进先出机制从流水级写出数据以及该数据的控制信号。

由于流水级的状态为既非空又非满时,可以进行数据的写入也可以进行数据的写出,所以本领域技术人员可以理解,步骤S402和S403之间并无固定的先后执行顺序。

S404、若写入使能信号有效,则按照先进先出机制向流水级写入数据以及该数据的控制信号;

在步骤中流水级为空,可以等效的理解为一种特殊的非满状态,则写入准备信号有效,若此时写入使能信号也有效,则按照先进先出机制向流水级写入数据以及该数据的控制信号。若写入使能信号无效,则写入数据失败。

流水级的状态为空,则不能写出数据,只能写入数据,所以写出使能信 号无效。

S405、若写出准备信号有效,则按照先进先出机制从流水级写出数据以及该数据的控制信号。

根据设定的逻辑可知,在本实施例中流水级的状态为满时(看作一种非空状态),写出使能信号有效,如果写出准备信号也有效,则按照先进先出机制从流水级写出数据以及该数据的控制信号。

本实施例具体可以为实现存储深度大于1的流水级提供一种可行的方法。

优选的,在所述方法实施例2的基础上,设置两个两位的比特位来标识流水级的状态,比如,将两个比特位记为第一双比特位和第二双比特位,两比特的数值包括“00、01、10、11”四种,具体在实际操作中,流水级状态的判断过程可以采用如下方式:

判断第一双比特与第二双比特中的低位数值是否相等;若低位数值不相等,则判定流水级的状态为既非空又非满;若低位数值相等,则判断第一双比特与第二双比特中的高位数值是否相等;若高位数值相等,则判定流水级的状态为空;若高位数值不相等,则判定流水级的状态为满。

为了能够实时的指示流水级的状态,在流水级写入和写出数据时,指示位也要相应的进行变化,具体的采用如下方式:写入使能信号与写入准备信号均有效时,第一双比特位数值加1;写出使能信号与数据写出准备信号均有效时,第二双比特位数值加1。

对应的,本发明实施例还提供一种流水级实施例2,如图5所示,其中,所述流水级中数据的存储深度大于1;设定流水级的状态为非满时,写入准备信号有效;流水级为非空时,写出使能信号有效;则所述流水级包括:

第二判断模块51,用于判断流水级的状态;

第三写入模块52,用于流水级的状态为既非空又非满时,若写入使能信号有效,则按照先进先出机制向流水级写入数据以及该数据的控制信号;

第二写出模块53,用于流水级的状态为既非空又非满时,若写出准备信号有效,按照先进先出机制从流水级写出数据以及该数据的控制信号;

第四写入模块54,用于流水级为空时,若写入使能信号有效,按照先进先出机制向流水级写入数据以及该数据的控制信号;

第三写出模块55,用于流水级为满时,若写出准备信号有效,按照先进先出机制从流水级写出数据以及该数据的控制信号。

优选的,本实施例中,第二判断模块可以通过设置两个两位的比特位来确定流水级的状态,比如,将两个比特位记为第一双比特位和第二双比特位,两比特的数值包括“00、01、10、11”四种,具体在实际操作中,判断过程可以采用如下方式:

判断第一双比特与第二双比特中的低位数值是否相等;若低位数值不相等,则流水级的状态为既非空又非满;若低位数值相等,则判断第一双比特与第二双比特中的高位数值是否相等;若高位数值相等,则流水级的状态为空;若高位数值不相等,则流水级的状态为满。

为了可以实时的指示流水级的变化,指示位的状态也要随着流水级写入数据或写出数据变化,具体为:写入使能信号与写入准备信号均有效时,第一双比特位数值加1;写出使能信号与数据写出准备信号均有效时,第二双比特位数值加1。参考前述例子,本例中以第一双比特位为wp2、第二双比特位为rp2标识流水级的状态。本实施例中,流水级的工作逻辑如下:

表5 流水级工作逻辑说明

表5描述的逻辑对应的时序图可以参考图6给出的一种示例。对应的真值表参考表6所示:

表6 表5描述的逻辑对应的真值表

本发明实施例还提供一种流水线实施例,包括多个如上述流水级实施例1所述的流水级和/或多个如上述流水级实施例2所述的流水级。前一流水级连接至少一个下一级流水级,前一级流水级通过选通信号选择下一级流水级;

相邻两级的流水级之间的连接如下:

前一级流水级的写出使能信号输入至后一级流水级,作为下一级流水级的写入使能信号;前一级流水级的写出控制信号输入至后一级流水级,作为 后一级流水级的写入控制信号;前一级流水级写出的数据输入至后一级流水级,作为后一级流水级的输入数据;后一级流水级的写入准备信号输入至前一级流水级,作为前一级流水级的写出准备信号。

流水线可以是一个单向的条状系统,如图7所示,把第n个gppipe(流水级)的输出端和第n+1个gppipe的输入端相连,就可以完成流水级的级联,形成完整的流水线。流水线也可以是一个网络形态,比如,前一流水级连接多个下一级流水级时,其中,前一级流水级通过选通信号(比如可以通过开关实现信号的选通)选择下一级流水级。由于对应数据的控制信号中携带了数据流向的下一级流水级的标识,以及数据的顺序标识,即使当前流水级连接多个下一级流水级,当前流水级也能根据数据中的控制信号信息将数据传输到正确的流水级中。

如图8所示,流水级1(记为nod1)与流水级2(记为nod2)和流水级3(记为nod3)构成一个网络,流水级1(记为nod1)的上一级有一流水数据d0->d1->d2->d3流到nod1。nod1根据数据中的控制信号将将d0、d2分到nod2,d1、d3分到nod3,nod2的数据最后流到nod3,nod3将数据按照d0->d1->d2->d3的顺序流到下级。

本实施例提供的技术方案,所述流水线基于上述方法实施例得到的流水级级联而成,每一级流水级的连接方式类似,除后一级流水级的数据写入准备信号输入至前一级流水级,作为前一级流水级的数据写出准备信号之外,只需前级流水级的输出类信号连接至下级流水级作为输入信号,为流水级级联提供了一种通用的连接方式。按照上述方式,可以将每一个流水级作为一个独立的模块,进行流水级的裁剪以及插入,按照统一的接口连接方式连接即可,实现了流水线的模块化设计,使得流水线的设计非常灵活。

上述实施例所述的流水线,dnrdy会串联到uprdy中,时序串联的方向是流水的反方向,如果流水级个数很多,流水过长,会出现timing(时序)不够 的情况。为了进一步优化流水线的时序,优选的,可以进一步将部分流水级的写入准备信号与写出准备信号在流水级内部通过寄存器隔离,将数据的时序从输入到输出变为:从输入到寄存器、从寄存器到寄存器、从寄存器到输出。实现时序的优化,且在优化时序的同时没有改变流水线的端口设计以及内部的工作逻辑。

需要说明的是,设计人员在实际操作时可以根据实际需要随机选择部分流水级的写入准备信号与写出准备信号在流水级内部通过寄存器隔离,只要最终的流水线能够达到时序的要求即可。

以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1