可重置分段可缩放移位器的制作方法

文档序号:17933360发布日期:2019-06-15 01:06阅读:196来源:国知局
可重置分段可缩放移位器的制作方法

本申请涉及与本申请同时提交的标题为“并行ldpc解码器(parallelldpcdecoder)”的共同转让的美国专利申请号[hkap.p0132us.10010543350],其整个内容以引用的方式并入本文中,用于所有的可适用的目的。

【技术领域】

本发明总体而言涉及数据移位,特别涉及可重置的移位器。



背景技术:

移位器通常是数字信号处理中的重要元件。例如,移位器用于各种应用,如信道解码器(如5g准循环低密度奇偶校验(qc-ldpc)解码器)、cpu的算术逻辑单元(alu)、坐标旋转数字计算机(cordic)处理器、数据加密(如rijndael算法)等。

可以使用移位器来提供三种主要类型的数据移位。图1显示了用于数据移位的算术移位、逻辑移位和循环移位类型的8比特alu的比特移位示例。图1的数据移位类型示例描述了数据移位的左移位和右移位。

从图1所示示例可以理解,移位器提供的数据移位不仅只涉及向左或向右的简单移位数据比特。例如,在实施算术移位时,输入是一个带符号的数字(如在所述8位示例中,比特[7]是一个符号比特),当比特向右移位时,插入符号比特作为最左比特。或者,在实施算术移位时,当比特向左移位时,插入“0”比特作为最右比特。在实施逻辑移位时,当比特向左移位时,插入“0”比特作为最右比特,当比特向右移位时,插入“0”比特作为最左比特。在实施循环移位时,当比特向左移位时,插入最左边的比特作为最右比特,而当比特向右移位时,插入最右边的比特作为最左比特。因此,配置用于实施数据移位的电路可能有些复杂,特别是如果被配置为适应多种类型的数据移位。

关于数据移位的例子,传统移位器支持单个移位命令。例如,传统移位器的常见配置是单指令单数据(sisd)实施,如图2a所示。在sisd移位器运行时,关于输入数据(x,如图1的包含八比特[7:0]的例子),提供单个移位命令(cmd),用于实施数据移位,产生相应的输出数据(y,如根据cmd移位的比特[7:0])。传统移位器的另一种常见配置是单指令多数据(simd)实施,如图2b所示。在simd移位器运行时,关于多个输入数据(x_1、x_2、...、x_m,如每个输入数据都是图1的八比特[7:0]示例),提供单个移位命令(cmd),用于对每个输入都实施相同的数据移位,生成相应的输出数据(y_1、y_2、...、y_m,如每个都是根据cmd移位的比特[7:0])。这种传统移位器不支持多个数据移位命令,该多个数据移位命令允许并行地实施单个、多个不同数据移位(例如,对多个输入数据如x_1、x_2、...、x_m中的每个输入数据提供不同的数据移位)。

已经有实施可重置可缩放(scalable)移位器配置来适应关于不同比特尺寸数据的数据移位。图3显示一个示例的典型可重置移位器的可缩放运行,其中移位器适应高达八比特数据移位,数据移位的例子涉及五比特数据。这种传统的可重置可缩放移位器的逻辑电路是基于移位器可以处理的最长比特长度的输入数据而设计的。在运行时,当处理较短比特长度的输入数据时,逻辑电路的一部分是空闲的。例如,如图3所示,尽管移位器可重置以适应小于移位器所支持全数据比特的数据移位,但在特别的数据移位期间(例如,关于数据比特位置[7:5]的电路保持空闲,而关于数据比特位置[4:0]的电路则对5比特输入数据执行移位),关于缩小输入的不需要数据移位的那部分移位器保持空闲。可以容易理解,由于输入数据的比特长度随应用而变化,所以移位器中的硬件资源可能明显地未被充分利用。

现有技术的移位器配置的具体示例可以在美国专利9,537,510和8,713,399中找到。美国专利9,537,510中的移位器提供了以下实施,即多个移位器阶段协作以提供sisd配置,支持关于m比特输入数据的可变移位值。但是,此移位器不支持可变大小的并行分段(segmented)数据。美国专利8,713,399中的移位器提供了以下实施,即simd配置支持预定数据大小的多个输入数据的数据移位。例如,对于一组三个输入消息(即n=3)、一组六个输入消息(即n=6)或一组九个输入消息(即n=9),执行一个相同的移位命令,提供数据移位。但是,此移位器不支持所有可能的数据大小值,而是仅支持预定的数据大小。此外,对于组中每个输入消息,执行相同的数据移位。



技术实现要素:

本发明涉及支持多指令多数据(mimd)的可重置移位器配置的系统和方法。根据本发明实施例而实施的移位器,支持有关数据移位的多个数据移位,其中多个单独的不同数据移位被并行一次性地实施。在根据实施例运行时,可以使用多个数据移位命令,使得多个数据(如输入数据的每个消息)可以有独自的移位命令,从而对于每个这种数据,实施不同的数据移位。

根据本发明实施例而实施的mimd移位器,提供可重置分段可缩放移位器配置。可重置分段可缩放移位器,除了可重置扩展性以支持各种比特长度数据的数据移位,还被配置以并行地支持不同比特长度的数据移位。例如,可以并行地向不同比特长度的消息提供单独的数据移位。因此,可重置分段可缩放移位器的输入可以包括不同尺寸的混合输入。

实施例的数据移位器实施分段,方便不同比特长度的数据移位。例如,在可重置分段可缩放移位器的每个分段中,可以对来自输入数据的一个或多个消息提供数据移位。在根据实施例运行时,可重置分段可缩放移位器的分段利用逻辑的其他空闲部分来对其他输入数据进行数据移位。对于每个这种分段可以提供不同数据移位命令,从而有助于各种比特长度数据并行地进行多个数据移位。

可重置分段可缩放移位器配置为输入数据的每个消息提供完全可重置的数据宽度和移位命令。例如,移位器可关于分段数(m)(如1≤m≤n)、每个分段的尺寸(n_m)(如n≥n_m≥2)、每个分段的移位值(s)(0≤s≤n)、每个分段的移位方向(d)(如d是左或右)、和/或每个分段的移位类型(t)(如t是逻辑的、算术的或循环的)进行重置。根据本发明概念,这种可重置分段可缩放移位器灵活且有效利用硬件来并行处理各种比特长度的数据输入。

前面已经相当广泛地概述了本发明的特征和技术优点,以便可以更好地理解随后的本发明的详细描述。在下文中将描述本发明的其他特征和优点,其形成本发明权利要求的主题。本领域技术人员应该理解,所公开的概念和具体实施例可以容易地当作一个基础,用于修改或设计用于实现本发明相同目的的其他结构。本领域技术人员还应该认识到,这种等同构造不脱离所附权利要求中阐述的本发明精神和范围。当结合附图考虑时,从以下描述将更好地理解被认为是本发明特征的新颖特性,有关其组织和操作方法,以及其他目的和优点。然而,应该清楚地理解,提供每个附图仅仅是为了说明和描述的目的,而不是作为对本发明限制的定义。

【附图说明】

为了更完整地理解本发明,现参考以下结合附图的描述,其中:

图1显示数据左移和数据右移的数据移位类型示例;

图2a和2b显示现有技术的单指令移位器;

图3显示一种现有技术的典型可重置移位器实施的可缩放操作;

图4a和图4b显示本发明实施例的可重置分段可缩放移位器的多指令多数据实施;

图5a显示本发明实施例的可重置分段可缩放移位器实施单个分段提供循环移位;

图5b-图5d显示有关图5a的可重置分段可缩放移位器实施例的对数移位器配置的详情;

图6显示本发明实施例的输出阶段,其被配置以合并右移位器部分和左移位器部分来提供循环移位结果;

图7显示本发明实施例的可重置分段可缩放移位器实施两个分段提供循环数据移位;

图8显示本发明实施例的对数移位器配置的移位器阶段;

图9显示本发明实施例的可重置分段可缩放移位器实施两个分段提供算术数据右移;

图10显示本发明实施例的输出阶段,其被配置以将移位器结果替换为符号比特来提供算术移位结果;

图11显示本发明实施例的可重置分段可缩放移位器实施两个分段提供算术数据左移;

图12显示本发明实施例的输出阶段,其被配置以将移位器结果替换为0来提供算术移位结果;

图13显示本发明实施例的可重置分段可缩放移位器实施两个分段提供逻辑数据右移;

图14显示本发明实施例的输出阶段,其被配置以将移位器结果替换为0来提供逻辑移位结果;

图15显示本发明实施例的可重置分段可缩放移位器实施两个分段提供逻辑数据左移;

图16显示本发明实施例的可重置分段可缩放移位器的详情:

图17a-图17f显示本发明实施例的可控数据路径元件的配置,其可用于支持循环移位、算术移位和逻辑移位的可重置分段可缩放移位器的输出阶段中;

图18显示本发明实施例的可重置分段可缩放移位器的分节的(sectioned)移位器阶段配置;

图19显示本发明实施例的可重置分段可缩放移位器实施分节的详情;

图20显示本发明实施例的输出阶段,其被配置以合并右移位器部分和左移位器部分的结果来提供循环移位结果。

【具体实施方式】

图4a显示本发明实施例的可重置分段可缩放移位器400。可重置分段可缩放移位器400提供一种支持多指令多数据(mimd)的可重置移位器配置。特别是,提供给可重置分段可缩放移位器400的输入数据(x)包括多个消息(m),显示为消息x_1、x_2、…、x_m,其中对于这些消息,可以并行一次性地实施多个单独的不同数据移位,以提供有移位数据的m个消息的输出数据(y),显示为消息y_1、y_2、...、y_m。因此,多个数据移位命令(如cmd_1、cmd_2、...、cmd_m)与输入数据消息相关联。根据实施例运行时,每个输入数据的消息(如x_1、x_2、...、x_m)都根据一个相应的数据移位命令(如cmd_1→x_1、cmd_2→x_2、...、cmd_m→x_m)来进行单个移位,从而促进每个输出消息(如y_1、y_2、...、y_m)的不同数据移位。

根据可重置分段可缩放移位器400实施的分段配置,有助于利用逻辑的空闲部分来对其他输入数据进行移位。图4b显示本发明实施例的有关可重置分段可缩放移位器400的其他细节,包括其分段配置。特别地,图4b所示的可重置分段可缩放移位器400包括输入阶段410、移位器阶段420和输出阶段430,实施分段配置。

例如,输入阶段410可以包括可配置存储器元件(如随机存取存储器(ram)、闪存、磁存储器、光存储器等)和/或可控数据路径(如可控数据路径元件),适于存储输入到可重置分段可缩放移位器400的消息数据,为其提供移位并可控地将这些数据与移位器阶段420的可重新配置分段相关联。从以下讨论可以更好地理解,输入阶段410用于将输入数据(x)的一个或多个消息(如x_1、x_2、...、x_m)与移位器阶段420的对应分段相关联。例如,在所述实施例中,输入数据(x)包括消息x_1、x_2、x_3、…、x_m,其中输入阶段410促进消息x_1的n_1个比特(如消息x_1的比特0到n_1-1)与移位器阶段420的分段1的对应关系,促进消息x_2的n_2个比特(如消息x_2的比特0到n_2-1)与移位器阶段420的分段2的对应关系,促进消息x_3的n_3个比特(如消息x_3的比特0到n_3-1)与移位器阶段420的分段3的对应关系,促进消息x_m的n_m个比特(如消息x_m的比特0到n_m-1)与移位器阶段420的分段m的对应关系。

例如,移位器阶段420可以包括适合实施数据移位的可控数据路径元件(如多路复用器和相关控制元件)。这种数据路径元件可以实施各种移位器架构,诸如对数移位器配置、桶形移位器配置、组合移位器配置等。从以下讨论将更好地理解,移位器阶段420提供可重置可缩放的分段,其可用于对输入数据的多个消息并行地实施数据移位。在所述实施例中,显示了移位器阶段420的控制器421,用于根据与输入数据(如x=x_1、x_2、x_3、...、x_m)相关联的数据移位命令(如cmd_1、cmd_2、...、cmd_m)向移位器阶段420的分段提供单独的移位命令。根据相应的数据移位命令,移位器阶段420的分段独立地提供数据移位(如分段1的左循环、分段2的左循环、以及分段m的右循环),因此并行地一次性地实施多个单独的不同数据移位。

应当理解,尽管在图4b示例中描述了循环移位的实施,但实施例可以实施各种数据移位类型(如算术移位、逻辑移位和/或循环移位),无论是通过所有分段还是以分段的各种不同组合。此外,在可重置分段可缩放移位器400的一些数据移位例子中,也可以配置一个或多个分段不提供任何数据移位操作。例如,在所述数据移位例子中,图4b示例性实施例中的分段3就未用于数据移位(如空闲或被配置为直接传递数据比特而不移位)。例如,这种未使用的分段可用于以下情况,如输入数据(x)的消息(x_1、x_2、...、x_m)总体包含更少比特,比可重置分段可缩放移位器400能容纳的比特更少。这些未使用分段的位置可以是可重置分段可缩放移位器内的任何位置,以方便适应各种消息长度,以促进一个以相应消息最低有效位(lsb)开始的分段等,这些将从以下讨论更好地理解。

可重置分段可缩放移位器400被配置以可重置有关输入数据的每个消息的数据宽度和/或移位命令。例如,如以下详细所示,移位器阶段420可重置有关分段数目(m)(如1≤m≤n)、每个分段的大小(n_m)(如n≥n_m≥2)、每个分段的移位值(s)(s_m)(0≤s_m≤n)、每个分段的移位方向(d)(d_m)(如d_m是左或右)、和/或每个分段的移位类型(t)(t_m)(如t_m是逻辑的、算术的或循环的),其任何一个或全部都可以由控制器421控制。提供给可重置分段可缩放移位器400(如给控制器421)的各个数据移位命令(如cmd_1、cmd_2、...、cmd_m)可以包括各种这样的信息(如各个分段的大小(n_m)、各个分段的移位值(s_m)、各个分段的移位方向(d_m)、各个分段的移位类型(t_m)等)。另外或替代地,包括各种这样信息(如分段数量(m)、每个分段的大小(n_m)、全局适用的移位值(s)、全局适用的移位方向(d)、全局适用的移位类型(t)等)的一个或多个通用数据移位命令(如cmd,在所示实施例中未显示),可被提供给可重置分段伸放缩移位器400(如给控制器421),用于控制移位器和/或分段的各个方面。

例如,输出阶段430可以包括可配置的存储器元件(如ram、闪存、磁存储器、光学存储器等)和/或可控的数据路径(如可控数据路径元件),适于可控制地将移位器阶段420的可重置分段与输出数据消息相关联,用于存储移位的消息数据。从以下讨论可以更好地理解,输出阶段430用于将移位器阶段420的分段与输出数据(y)的一个或多个消息(如y_1、y_2、...、y_m)相关联。例如,在所述实施例中,输出数据(y)包括消息y_1、y_2、y_3、....、y_m,其中输出阶段410促进消息y_1的n_1个移位比特(如消息y_1的比特0到n_1-1)与移位器阶段420的分段1的对应关系,促进消息y_2的n_2个移位比特(如消息y_2的比特0到n_2-1)与移位器阶段420的分段2的对应关系,促进消息y_3的n_3个未移位比特(如消息y_3的比特0到n_3-1)与移动器阶段420的分段3(在所述图示中是空闲的)的对应关系,以及促进消息y_m的n_m个移位比特(如消息y_m的位0到n_m-1)与移位器阶段420的分段m的对应关系。

为了帮助理解本发明概念,以下参考对数移位器配置,描述移位器实施例,其使用8比特长度的输入/输出数据的3阶段架构来提供数据移位,应该理解,这些只是示例性的实施方式,并不限制本发明。可重置分段可缩放移位器可以使用诸如对数移位器配置、桶形移位器配置、组合移位器配置或其组合来实施。为简化起见,这里提供8比特可重置分段可缩放移位器的示例,期望本发明的可重置分段可缩放移位器能够容纳极大的数据输入(如用于5gqc-ldpc解码器的384个数据输入)。同样地,为了简化在此讨论的概念,尽管提供了少量分段(如m=1或m=2)配置的分段示例,但可重置分段可缩放移位器能够采纳各种分段尺寸的广范围分段配置(如范围从2到384比特的分段,分段尺寸从384到2,用于上述5gqc-ldpc解码器实施)。

为了方便理解本发明概念,图5a显示以相对简单配置而实施的可重置分段可缩放移位器400的示例性实施例。图5a实施例的可重置分段可缩放移位器400被配置为8比特单分段实施,其提供3比特循环右移(如移位器大小n=8,分段数m=1,分段1尺寸n_1=8,分段1移位值s_1=3,分段1移位方向d_1=右,分段1移位类型t_1=循环)。

在所述示例中,输入数据(x)包括8比特。因此,输入数据可以表示为x[7:0],其中x[7:0]={x[7],x[6],x[5],x[4],x[3],x[2],x[1],x[0]}。相应地,输出数据可以表示为y[7:0],其中y[7:0]={y[7],y[6],y[5],y[4],y[3],y[2],y[1],y[0]}。如上所述,在该示例中,分段(m)的数量是1。因此,x_1[7:0]=x[7:0]和y_1[7:0]=y[7:0],其中x_1[7:0]是分段1的输入数据,而y_1[7:0]]是分段1的输出数据。

如图5b-图5d所示,可以使用对数移位器配置来实施图5a的可重置分段可缩放移位器。对数移位器的阶段数是k=ceil[log2(n)]。在示例性实施例中,n=8,因此k=log2(8)=3。3阶段对数移位器,如图5b所示的移位器阶段420的右移位部分,其中yr_1[7:0]=阶段1的输出,yr_2[7:0]=阶段2的输出,yr_3[7:0]=阶段3的输出。

对数移位器的阶段在每个阶段实施对数递增移位(例如,在阶段1移位1比特,在阶段2移位2比特,在阶段4移位4比特)。由阶段提供的移位,可以被可控地组合,以提供移位值范围从0(即直接传递数据比特而不移位)到所有阶段的组合总移位值(如在3阶段示例中1+2+4=7)。在所述实施例的示例中,分段1移位值s_1=3,且分段1移位方向d_1=右。分段1的右移命令可以表示为sr1=3,其也可以表示为3比特二-十进制编码(bcd)3'b011。应当理解,3比特bcd移位命令表示对应于3阶段操作,以执行期望的数据移位。特别地,在bcd表示中,lsb(在该示例中为1)对应于被选中的阶段1的移位(阶段1提供右移1位),中间位(在该示例中为1)对应于被选中的阶段2的移位(阶段2提供右移2位),最高有效位(msb)(本示例中为0)对应于未被选中的阶段3的移位(阶段3直接传递数据比特并不提供右移4比特),从而提供3比特右移。

对于移位器的每个阶段提供控制信号,以关于任何数据移位来实施前述命令。例如,如图5c所示,可以使用多路复用器架构来实施移位器各个阶段上的任何特定比特的数据移位。特别地,多路复用器501可以布置在每个阶段的路径结点处(例如,在阶段1的路径0和路径1、路径1和路径2、路径2和路径3、路径3和路径4、路径4和路径5、路径5和路径6、以及路径6和路径7的结点处,在阶段2的路径0和路径2、路径1和路径3、路径2和路径4、路径3和路径5、路径4和路径6、路径5和路径7的结点处,在右移位部分521(图5d)的阶段3上的路径0和路径4、路径1和路径5、路径2和路径6、以及路径3和路径7的结点处,在阶段1上的路径1和路径0、路径2和路径1、路径3和路径2、路径4和路径3、路径5和路径4、路径6和路径5、以及路径7和路径6的结点处,在阶段2上的路径2和路径0、路径3和路径1、路径4和路径2、路径5和路径3、路径6和路径4、以及路径7和路径5的结点处,在左移位部分522的阶段3上的路径4和路径0、路径5和路径1、路径6和路径2、路径7和路径3的结点处),并提供一个控制信号来选择输出移位数据或直接传递数据。

如图5c所示,前述实施例提供sr_k[n]作为阶段k路径n的控制信号。因此,在图5b所示的3阶段移位器阶段420的右移位部分中,sr_1[7:0]=右移位阶段1路径的控制信号,sr_2[7:0]=右移位阶段2路径的控制信号,sr_3[7:0]=右移位阶段3路径的控制信号。如果路径的控制信号是“0”,则数据将沿着相同路径传播到下一阶段。但是,如果路径的控制信号是“1”,则连接到多路复用器的另一路径的数据将沿着该路径传播到下一个阶段。因此,在上述sr1=3=3'b011的示例中,移位器阶段的控制信号可以表示为sr_1[7:0]=1111_1111(阶段1),sr_2[7:0]=1111_1111(阶段2),sr_3[7:0]=0000_0000(阶段3)。在图5d所示的右移位部分521的粗体路径上,描述了根据这些控制信号实施数据移位以提供从x[3]到y[0]、x[4]到y[1]、x[5]到y[2]、x[6]到y[3]、x[7]到y[4]的3比特右移。

如前所述,图5a的可重置分段可缩放移位器400被配置为8比特单分段实施,其提供3比特循环右移。但是,图5b所示移位器阶段420的右移位部分并不提供实施数据移位循环方面的路径(例如,将数据从x[2]路由到y[7]、从x[1]到y[6]、从x[0]到y[5])。因此,移位器阶段420还有另一个移位部分,用于这个目的。

图5d显示移位器阶段420的右移位部分521和左移位部分522。根据本发明实施例,在右循环移位操作中,右移位部分521可以提供数据右移,而左移位部分522可以用于实现数据移位的循环。类似地,在左循环移位操作中,左移位部分522可以提供数据左移,而右移位部分521可以用于实现数据移位的循环。此外,从下面讨论可以更好地理解,右移位部分521可以在算术右移和逻辑右移操作中提供右移。类似地,左移位部分522可以在算术左移和逻辑左移操作中提供左移。

如图5d所示,参看示例右侧的3比特循环移位,右移位部分521提供3比特右移,适当地将数据从x[3]路由到y[0]、从x[4]路由到y[1]、从x[5]路由到y[2]、从x[6]路由到y[3]、以及从x[7]路由到y[4]。但是,右移位部分521并没有适当地将数据从x[2]路由到y[7]、从x[1]路由到y[6]、从x[0]路由到y[5],用于3比特右移。数据移位循环可以实施为特定输入数据左移。特定右循环移位所需的左移位,可以从分段大小和分段移位值来计算获得(例如,左移位命令等于分段大小减去右移位值)。在以上示例中,sl1=n_1-s_1=8-3=5,其中sl是分段1左移位命令,n_1是分段1的分段大小,s_1是分段1的移位值。分段1的左移位命令可以表示为sl1=5,其也可以表示为3比特二-十进制编码(bcd)3'b011。

右移位部分提供的控制信号类似,前述实施例提供sl_k[n]作为阶段k路径n的控制信号。因此,在图5d所示3个阶段移位器阶段420的左移位部分中,sl_1[7:0]=左移位阶段1的路径的控制信号,sl_2[7:0]=左移位阶段2的路径的控制信号,sl_3[7:0]=左移位阶段3的路径的控制信号。因此,在上述sl1=5=3'b101的示例中,移位器阶段的控制信号可以表示为sl_1[7:0]=1111_1111(阶段1)、sl_2[7:0]=0000_0000(阶段2)、sl_3[7:0]=1111_1111(阶段3)。在图5d所示的左移位部分522的粗体路径上,描述了根据这些控制信号实现数据移位,提供从x[2]到y[7]、x[1]到y[6]、x[0]到y[5]的5比特左移,以实现3比特循环右移。

应当理解,图5b和图5d显示了所有阶段的所有输出(即yr_3[7:0]、yr_2[7:0]、yr_1[7:0])的可选移位器路径的两个选择(即0选择值路径的虚线,1选择值路径的实线),以显示可以使用上述控制信号来选择各种可能路径。例如在图5b,分段1的一个输出yr_1[0]有两个源x[1]和x[0],其中如果选择值为0,则选择来自x[0]的源,但如果选择值为1,则选择x[1]的源。图5d中粗线覆盖的可能可选路径,显示了最终选择路径,贡献给移位器的最终输出。

输出阶段430合并右移位部分521和左移位部分522的结果,从而提供循环移位结果。例如,如图6所示,输出阶段430可以包括多路复用器602,其设置在右移位部分521和左移位部分522的每个路径的相应输出处(例如,两个部分的路径0,两个部分的路径1,两个部分的路径2,两个部分的路径3,两个部分的路径4,两个部分的路径5,两个部分的路径6,以及两个部分的路径7),并提供控制信号以选择右移位数据或左移位数据的输出。可以通过输出选择控制信号s[i]来控制移位器结果的合并,对于i≥sl1,s[i]=1,其中i={0,1,......7},sl1=n_1-s_1。应该理解,在该示例中,由输出阶段430存储和/或输出的数据y[7:0](即y[7],y[6],y[5],y[4],y[3],y[2],y[1],y[0]),对应于图5a中的3比特循环右移。

尽管前述示例是参考实施数据右移来描述的,但这些概念可以容易地应用于数据左移。例如,可重置分段可缩放移位器的右移位部分和左移位部分的角色可以颠倒(即,切换右移位部分为左移位部分,反之亦然),以便实现循环左移。

如前所述,图5a-图5d示例的可重置分段可缩放移位器400提供一个相对简单的配置,其中仅提供1个分段(m=1)以帮助理解本发明概念。根据本发明实施例,同一分段内的数据路径都共享同一控制信号值(即,控制分段的数据路径以实施相同的数据移位)。因此,在以上示例中,一个特定阶段内的所有8个路径的控制信号是相同的(例如,对于右移位阶段1,所有控制信号值是1或sr_1[7:0]=1111_1111,对于右移位阶段2,所有控制信号值为1或sr_2[7:0]=1111_1111,对于右移位阶段3,所有控制信号值均为0或sr_3[7:0]=0000_0000,对于左移位阶段1,所有控制信号值均为1或sl_1[7:0]=1111_1111,对于左移位阶段2,所有控制信号值都是0或sl_2[7:0]=0000_0000,对于左移位阶段3,所有控制信号都是1或sl_3[7:0]=1111_1111)。但是,应当理解,根据本发明实施例,前述示例的可重置分段可缩放移位器为每个路径提供单独的控制信号,从而有助于独立地控制分段。相反,传统移位器仅为所有路径提供1个控制信号。因此,这种传统移位器不能支持本发明实施例的分段。

为了更好地描述本发明可重置分段可缩放移位器的分段,请参考图7可重置分段可缩放移位器400实施的2分段(m=2)配置。特别地,图7显示的可重置分段可缩放移位器400,被配置为8比特2分段实施,其中分段1提供3比特循环右移,分段2提供2比特循环右移(例如,移位器大小n=8,分段数m=2,分段1大小n_1=5,分段1移位值s_1=3,分段1移位方向d_1=右,分段1移位类型t_1=循环,分段2大小n_2=3,分段2移位值s_2=2,分段2移位方向d_2=右,分段2移位类型t_2=循环)。

应当理解,尽管图7显示了两分段实施相同类型移位(例如,循环)和相同方向(例如,右)移位的配置,但本发明对这种配置没有任何限制。例如,可重置分段可缩放移位器可以被配置为提供不同尺寸的分段、分段的不同移位方向、分段的不同移位值、和/或分段的不同移位类型。

与图5a示例一样,图7的输入数据(x)包括8比特,其中输入数据可以表示为x[7:0](例如,x[7:0]={x[7],x[6],x[5],x[4],x[3],x[2],x[1],x[0]}),输出数据可以表示为y[7:0](例如,y[7:0]={y[7],y[6],y[5],y[4],y[3],y[2],y[1],y[0]})。但是,在图7示例中,分段(m)数是2,其中分段1包括5比特,分段2包括3比特,使得x_1[4:0]是分段1的输入,x_2[2:0]是分段2的输入,y_1[4:0]是分段1的输出数据,y_2[2:0]是分段2的输出数据。因此,x[7:0]={x[7],x[6],x[5],x[4],x[3],x[2],x[1],x[0]}={x_2[2:0],x_1[4]:0]},其中x_1[4:0]={x[4],x[3],x[2],x[1],x[0]}和x_2[2:0]={x[7],x[6],x[5]}。类似地,y[7:0]={y[7],y[6],y[5],y[4],y[3],y[2],y[1],y[0]}={y_2[2:0],y_1[4:0]},其中y_1[4:0]={y[4],y[3],y[2],y[1],y[0]},y_2[2:0]={y[7],y[6],y[5]}。

图8显示一个可以用于图7可重置分段可缩放移位器中的移位器阶段的例子,其使用对数移位器配置。对数移位器的阶段数是k=ceil[log2(n)],其中如上所述,在示例性实施例中,n=8,因此k=log2(8)=3。在图8所示移位器阶段420的右移位部分521和左移位部分522上,显示3阶段对数移位器,其中yr_1[7:0]=右移位部分的阶段1的输出,yr_2[7:0]=右移位部分的阶段2的输出,yr_3[7:0]=右移位部分阶段3的输出,yl_1[7:0]=左移位部分阶段1的输出,yl_2[7]:0]=左移位部分阶段2的输出,yl_3[7:0]=左移位部分阶段3的输出。

如在先前示例中详细讨论的,可重置分段可缩放移位器可以提供sr_k[n]作为阶段k路径n的控制信号。因此,在图8所示的移位器阶段420的右移位部分的3个阶段中,sr_1[7:0]=右移位阶段1的路径的控制信号,sr_2[7:0]=右移位阶段2的路径的控制信号,sr_3[7:0]=右移位阶段2的路径的控制信号。相应地,在图8所示的移位器阶段420的左移位部分的3个阶段中,sl_1[7:0]=左移位阶段1的路径的控制信号,sl_2[7:0]=左移位阶段2的路径的控制信号,sl_3[7:0]=左移位阶段3的路径的控制信号。如果路径的控制信号为“0”,数据将沿同一路径传播到下一阶段。但是,如果路径的控制信号是“1”,连接到多路复用器的另一路径的数据将沿着该路径传播到下一阶段。

在该分段示例中,sr1=3=3'b011(即,分段1移位值s_1=3,分段1移位方向d_1=右)和sr2=2=3'b010(即,分段2移位值s_2=2,分段2移位方向d_2=右)。该分段提供循环移位,因此,使用数据左移来提供数据移位循环。在该示例中,sl1=5-3=2=3'b010(即,分段1大小n_1=5,分段1移位值s_1=3,分段1移位类型t_1=循环),sl2=3-2=1=3'b001(即,分段2大小n_2=3,分段2移位值s_2=2,分段2移位类型t_2=循环)。对于右移位部分,分段移位器阶段的控制信号可以表示为sr_1[7:0]=0001_1111(阶段1),sr_2[7:0]=1111_1111(阶段2),sr_3[7:0]=0000_0000(阶段3),对于左移位部分,分段移位器阶段的控制信号可以表示为sl_1[7:0]=1110_0000(阶段1),sl_2[7:0]=0001_1111(阶段2),sl_3[7:0]=0000_0000(阶段3)。可以理解,每个上述控制信号的最右边5比特,为分段1的5比特提供分段数据移位,每个上述控制信号的最左边3位,为分段2的3比特提供分段数据移位。如图8的右移位部分521的粗体路径所示,根据右移位控制信号(sr_1,sr_2和sr_3)实施数据移位,为分段1提供x[3]到y[0]和x[4]到y[1]的3比特右移,并为分段2提供x[7]到y[5]的2比特右移。相应地,如图8的右移位部分521的粗体路径所示,根据左移位控制信号(sl_1,sl_2,和sl_3)实施数据移位,为分段1的循环方面提供x[0]到y[2]、x[1]到y[3]、x[2]到y[4]的2比特左移,为分段2的循环方面提供x[5]至y[6]、x[6]至y[7]的1比特左移。

在图8中,未显示可选移位器路径的未选路径,而是仅显示了每个阶段的每个输出的选中路径,其中粗线表示最终选择路径,贡献于移位器的最终输出。应当理解,未显示未选路径的图8,与图5d形成对比,其中图5显示了可选移位路径的两个选择(即,虚线为选择值0的路径,实线为选择值1的路径),最终选择路径贡献于移位器的最终输出。

如前所述,输出阶段430合并右移位器部分521和左移位器部分522的结果,以提供循环移位结果,例如通过使用如图6所示的多路复用器602。在该分段示例中,合并移位器结果可以由输出选择控制信号s[i]控制,其中:对于i≥sl1,s[i]=1,其中i={0,1,...,4},sl1=n_1-s_1(分段1);对于i≥sl2+5,s[i]=1,其中i={5,6,7},sl2=n_2-s_2(分段2)。可以理解,由输出阶段430存储和/或控制的y[7:0]数据(即y[7],y[6],y[5],y[4],y[3],y[2],y[1],y[0])对应于图7的分段1的3比特循环右移和分段2的2比特循环右移。

尽管参考实施数据右移来描述上述示例,但这些概念可以容易地应用于数据左移。例如,可重置分段可缩放移位器的右移位部分和左移位部分的角色可以调换(即,将右移位部分换为左移位部分,反之亦然),以便实现循环左移。

此外,尽管参考实施循环移位描述了上述两个示例,但这些概念可以容易地应用于其他类型的数据移位。例如,可以使用可重置分段可缩放移位器架构来实施算术移位和/或逻辑移位。因此,图9和11显示了使用可重置分段可缩放移位器架构来实施算术移位的示例,图13和15显示了使用可重置分段可缩放移位器架构来实施逻辑移位的示例。

首先参见图9,显示一个分段算术数据移位的示例。特别地,图9显示可重置分段可缩放移位器400被配置为一个8比特2分段实施,其中分段1提供3比特算术右移,而分段2提供一个2比特算术右移(例如,移位器大小n=8,分段数m=2,分段1大小n_1=5,分段1移位值s_1=3,分段1移位方向d_1=右,分段1移位类型t_1=算术,分段2大小n_2=3,分段2移位值s_2=2,分段2移位方向d_2=右,分段2移位类型t_2=算术)。应当理解,尽管图9显示了两分段实施相同类型移位(例如,算术)和相同方向移位(例如,右)的配置,但本发明对于这种配置是没有任何限制的。

与先前示例一样,图9的输入数据(x)包括8比特,其中输入数据可以表示为x[7:0](例如,x[7:0]={x[7],x[6],x[5],x[4],x[3],x[2],x[1],x[0]}),输出数据可以表示为y[7:0](例如,y[7:0]={y[7],y[6],y[5],y[4],y[3],y[2],y[1],y[0]})。在图9中,分段数(m)是2,其中分段1包括5比特,分段2包括3比特,x_1[4:0]是分段1的输入,x_2[2:0]是分段2的输入,y_1[4:0]是分段1的输出数据,y_2[2:0]是分段2的输出数据。因此,x[7:0]={x[7],x[6],x[5],x[4],x[3],x[2],x[1],x[0]}={x_2[2:0],x_1[4:0]},其中x_1[4:0]={x[4],x[3],x[2],x[1],x[0]},x_2[2:0]={x[7],x[6],x[5]}。类似地,y[7:0]={y[7],y[6],y[5],y[4],y[3],y[2],y[1],y[0]}={y_2[2:0],y_1[4:0]},其中y_1[4:0]={y[4],y[3],y[2],y[1],y[0]},y_2[2:0]={y[7],y[6],y[5]}。

图8显示的使用对数移位器配置来实施移位器阶段示例,可以用于图9的可重置分段可缩放移位器。对数移位器的阶段数是k=ceil[log2(n)],其中如上所述,在示例性实施例中,n=8,因此k=log2(8)=3。对数移位器的3阶段显示在图8移位器阶段420的右移位部分521中,其中yr_1[7:0]=右移位部分阶段1的输出,yr_2[7:0]=右移位部分阶段2的输出,yr_3[7:0]=右移位部分阶段3的输出。应当注意,鉴于不需要左移位部分的功能来实现算术右移,图8的移位器阶段420的左移位部分522未在图9中使用。

如先前所述,可重置分段可缩放移位器可以提供sr_k[n]作为右移位部分阶段k路径n的控制信号。因此,在图8所示移位器阶段420的右移位部分的3个阶段中,sr_1[7:0]=右移位阶段1的路径的控制信号,sr_2[7:0]=右移位阶段2的路径的控制信号,sr_3[7:0]=右移位阶段3的路径的控制信号。如果路径的控制信号是“0”,数据将沿着相同路径传播到下一个阶段。但是,如果路径的控制信号是“1”,连接到多路复用器的另一路径的数据将沿着该路径传播到下一个阶段。在该示例中,左移位部分控制信号sl_k[n]是不需要的,可以是任意值(即,“不关心”)。

在该分段示例中,sr1=3=3'b011(即,分段1移位值s_1=3,分段1移位方向d_1=右),sr2=2=3'b010(即,分段2移位值s_2=2,分段2移位方向d_2=右)。对于右移位部分,分段移位器阶段的控制信号可以表示为sr_1[7:0]=0001_1111(阶段1),sr_2[7:0]=1111_1111(阶段2),sr_3[7:0]=0000_0000(阶段3)。可以理解,每个上述控制信号的最右边5比特,为分段1的5比特提供分段数据移位,上述控制信号的最左边3比特,为分段2的3比特提供分段数据移位。如图8的右移位部分521的粗体路径所示,根据右移控制信号(sr_1,sr_2和sr_3)实施数据移位,为分段1提供x[3]到y[0]和x[4]到y[1]的3比特右移,为分段2提供x[7]到y[5]的2比特右移。

该示例分段的可重置分段可缩放移位器配置提供算术移位,因此,尽管比特确实移位了(例如分段1的路径0和路径1的输出,以及分段2的路径5的输出,如图8的右移位部分521上被圈住的阶段3输出所示),但是插入一个符号比特(例如,分段2的符号比特x[7],分段1的符号比特x[4])作为每个右移操作的最左比特(例如,分段1的路径2、路径3和路径4的输出,分段2的路径6和路径7的输出,如图8的左移位部分522中被圈住的阶段3输出所示)。根据yl_k[n-1:0],可以确定与一个相应符号比特x[n]相连数据的输出位置,其中yl_k数据比特被相应符号比特替代,而不是之前循环移位示例中的左移位输出,用于与右移位部分的输出合并在一起。因此,输出阶段430合并右移位器部分521结果和相应分段的符号比特,来提供算术移位结果,例如通过使用如图10所示的多路复用器1003。在该分段示例中,合并移位器结果和符号比特可以由输出选择控制信号s[i]控制,其中:对于i≥sl1,s[i]=1,其中i={0,1,...,4},sl1=n_1-s_1(分段1);对于i≥sl2+5,s[i]=1,i={5,6,7},sl2=n_2-s_2(分段2)。可以理解,由输出阶段430存储和/或输出的数据y[7:0](即y[7],y[6],y[5],y[4],y[3],y[2],y[1],y[0])对应于图9所示分段1的3比特算术右移和分段2的2比特算术右移。

现参见图11,显示了另一示例的分段算术数据移位。特别地,图11显示了可重置分段可缩放移位器400被配置为一个8比特2分段实施,其中分段1提供2比特算术左移,分段2提供1比特算术左移(例如,移位器大小n=8,分段数m=2,分段1大小n_1=5,分段1移位值s_1=2,分段1移位方向d_1=左,分段1移位类型t_1=算术,分段2大小n_2=3,分段2移位值s_2=1,分段2移位方向d_2=左,分段2移位类型t_2=算术)。应当理解,尽管图11显示了两分段实施相同类型的移位(例如,算术)和相同方向的移位(例如,左)配置,但本发明对这种配置没有任何限制。

与先前示例一样,图11的输入数据(x)包括8比特,其中输入数据可以表示为x[7:0](例如,x[7:0]={x[7],x[6],x[5],x[4],x[3],x[2],x[1],x[0]}),输出数据可以表示为y[7:0](例如,y[7:0]={y[7],y[6],y[5],y[4],y[3],y[2],y[1],y[0]})。在图11示例中,分段数(m)是2,其中分段1包括5比特,分段2包括3比特,x_1[4:0]是分段1的输入,x_2[2:0]是分段2的输入,y_1[4:0]是分段1的输出数据,y_2[2:0]是分段2的输出数据。因此,x[7:0]={x[7],x[6],x[5],x[4],x[3],x[2],x[1],x[0]}={x_2[2:0],x_1[4:0]},其中x_1[4:0]={x[4],x[3],x[2],x[1],x[0]},x_2[2:0]={x[7],x[6],x[5]}。类似地,y[7:0]={y[7],y[6],y[5],y[4],y[3],y[2],y[1],y[0]}={y_2[2:0],y_1[4:0]},其中y_1[4:0]={y[4],y[3],y[2],y[1],y[0]},和y_2[2:0]={y[7],y[6],y[5]}。

图8显示的使用对数移位器配置来实施移位器阶段,可以用于图11的可重置分段可缩放移位器。对数移位器的阶段数是k=ceil[log2(n)],其中如上所述,在示例性实施例中,n=8,因此k=log2(8)=3。在图8所示移位器阶段420的左移位部分522中显示对数移位器的3个阶段,其中yl_1[7:0]=左移位部分的阶段1的输出,yl_2[7:0]=左移位部分的阶段2的输出,yl_3[7:0]=左移位部分的阶段3的输出。应当注意,鉴于不需要右移位部分的功能来实施算术左移,图8移位器阶段420的右移位部分521未在图11中使用。

如先前所述,可重置分段可缩放移位器可以提供sl_k[n]作为左移位部分阶段k路径n的控制信号。因此,在图8所示移位器阶段420的左移位部分的3个阶段中,sl_1[7:0]=左移位阶段1的路径的控制信号,sl_2[7:0]=左移位阶段2的路径的控制信号,sl_3[7:0]=左移位阶段2的路径的控制信号。如果路径的控制信号是“0”,数据将沿着相同路径传播到下一个阶段。但是,如果路径的控制信号是“1”,连接到多路复用器的另一路径的数据将沿着该路径传播到下一个阶段。在该示例中,右移位部分控制信号sr_k[n]是不需要的,可以是任意值(即,“不关心”)。

在该分段示例中,sl1=2=3'b010(即,分段1移位值s_1=2,分段1移位方向d_1=左),sl2=1=3'b001(即,分段2移位值s_2=1,分段2移位方向d_2=左)。对左移位部分,分段移位器阶段的控制信号可以表示为sl_1[7:0]=1110_0000(阶段1),sl_2[7:0]=0001_1111(阶段2),以及sl_3[7:0]=0000_0000(阶段3)。可以理解,每个上述控制信号的最右边5比特,为分段1的5比特提供分段数据移位,上述控制信号的最左边3比特,为分段2的3比特提供分段数据移位。如图8的左移位部分522的粗体路径所示,根据左移控制信号(sl_1,sl_2和sl_3)实施数据移位,为分段1提供x[0]到y[2]、x[1]到y[3]和x[2]到y[4]的2比特左移,为分段2提供x[5]到y[6]和x[6]到y[7]的1比特左移。

该示例分段的可重置分段可缩放移位器配置提供算术移位,因此,尽管比特确实移位了(例如,分段1的路径2、路径3和路径4的输出,以及分段2的路径6和路径7的输出,如图8左移位部分522中被圈住阶段3输出所示),插入0作为每个左移操作的最右比特(例如,分段1的路径0和路径1的输出,以及分段2的路径5的输出,如图8右移位部分521中被圈住的阶段3输出所示)。与0相连的数据输出位置可以根据yr_k[n-1:0]来确定,其中yr_k的数据比特被替换为0,不是先前循环移位示例中的左移位部分的输出,用于与左移位部分的输出合并。因此,输出阶段430合并左移位器部分522的结果和0,以提供算术移位结果,例如通过使用如图12所示的多路复用器1204。在分段示例中,合并移位器结果和0可以通过输出选择控制信号s[i]来控制,其中:对于i≥sl1,s[i]=1,i={0,1,...,4},sl1=s_1(分段1);对于i≥sl2+5,s[i]=1,i={5,6,7},sl2=s_2(分段2)。可以理解,在该示例中,由输出阶段430存储和/或输出的y[7:0]数据(即y[7],y[6],y[5],y[4],y[3],y[2],y[1],y[0]),对应于图11的分段1的2比特算术左移和分段2的1比特算术左移。

已经描述了循环和算术移位器的示例,现参考图13描述一个使用可重置分段可缩放移位器架构来实现逻辑移位的示例。特别地,图13显示可配置分段可缩放移位器400被配置为8比特2分段实施,其中分段1提供3比特逻辑右移,分段2提供2比特逻辑右移(例如,移位器大小n=8,分段数m=2,分段1大小n_1=5,分段1移位值s_1=3,分段1移位方向d_1=右,分段1移位类型t_1=逻辑,分段2大小n_2=3,分段2移位值s_2=2,分段2移位方向d_2=右,分段2移位类型t_2=逻辑)。应当理解,尽管图13显示了两分段实施相同类型的移位(例如,逻辑)和相同方向的移位(例如,右)配置,但本发明对这种配置是没有任何限制的。

与先前示例一样,图13示例的输入数据(x)包括8比特,其中输入数据可以表示为x[7:0](例如,x[7:0]={x[7],x[6],x[5],x[4],x[3],x[2],x[1],x[0]}),输出数据可以表示为y[7:0](例如,y[7:0]={y[7],y[6],y[5],y[4],y[3],y[2],y[1],y[0]})。在图13示例中,分段数(m)是2,其中分段1包括5比特,分段2包括3比特,x_1[4:0]是分段1的输入,x_2[2:0]是分段2的输入,y_1[4:0]是分段1的输出数据,y_2[2:0]是分段2的输出数据。因此,x[7:0]={x[7],x[6],x[5],x[4],x[3],x[2],x[1],x[0]}={x_2[2:0],x_1[4:0]},其中x_1[4:0]={x[4],x[3],x[2],x[1],x[0]},x_2[2:0]={x[7],x[6],x[5]}。类似地,y[7:0]={y[7],y[6],y[5],y[4],y[3],y[2],y[1],y[0]}={y_2[2:0],y_1[4:0]},其中y_1[4:0]={y[4],y[3],y[2],y[1],y[0]},和y_2[2:0]={y[7],y[6],y[5]}。

图8显示的使用对数移位器配置来实施移位器阶段的示例,可以用于图13可重置分段可缩放移位器。对数移位器的阶段数是k=ceil[log2(n)],其中如上所述,在示例性实施例中,n=8,因此k=log2(8)=3。在图8所示移位器阶段420的右移位部分521中显示对数移位器的3个阶段,其中yr_1[7:0]=右移位部分的阶段1的输出,yr_2[7:0]=右移位部分的阶段2的输出,yr_3[7:0]=右移位部分的阶段3的输出。应当注意,鉴于不需要左移位部分的功能来实施逻辑右移,图8的移位器阶段420的左移位部分522未在图13示例中使用。

如先前所述,可重置分段可缩放移位器可以提供sr_k[n]作为右移位部分阶段k路径n的控制信号。因此,在图8所示移位器阶段420的右移位部分的3个阶段中,sr_1[7:0]=右移位阶段1的路径的控制信号,sr_2[7:0]=右移位阶段2的路径的控制信号,sr_3[7:0]=右移位阶段3的路径的控制信号。如果路径的控制信号是“0”,数据将沿着相同路径传播到下一阶段。但是,如果路径的控制信号是“1”,连接到多路复用器的另一路径的数据将沿着该路径传播到下一阶段。在该示例中,左移位部分控制信号sl_k[n]是不需要的,可以是任意值(即,“不关心”)。

在该分段示例中,sr1=3=3'b011(即,分段1移位值s_1=3,分段1移位方向d_1=右),sr2=2=3'b010(即,分段2移位值s_2=2,分段2移位方向d_2=右)。对右移位部分,分段移位器阶段的控制信号可以表示为sr_1[7:0]=0001_1111(阶段1),sr_2[7:0]=1111_1111(阶段2),以及sr_3[7:0]=0000_0000(阶段3)。可以理解,每个上述控制信号的最右边5比特,为分段1的5比特提供分段数据移位,上述控制信号的最左边3比特,为分段2的3比特提供分段数据移位。如图8的右移位部分521的粗体路径所示,根据右移控制信号(sr_1,sr_2和sr_3)实施数据移位,为分段1提供x[3]到y[0]和x[4]到y[1]的3比特右移,为分段2提供x[7]到y[5]的2比特右移。

该示例分段的可重置分段可缩放移位器配置提供逻辑移位,因此,尽管比特确实移位了(例如,分段1的路径0和路径1的输出,分段2的路径5的输出,如图8右移位部分521中被圈住阶段3输出所示),插入0作为每个右移操作的最左比特(例如,分段1的路径2、路径3和路径4的输出,分段2的路径6和路径7的输出,如图8左移位部分522中被圈住阶段3输出所示)。与0相连的数据输出位置可以根据yl_k[n-1:0]来确定,其中yl_k数据比特被替换为0,不是先前循环移位示例中的左移位部分的输出,用于与右移位部分的输出合并。因此,输出阶段430合并相应阶段的右移位器部分521的结果和0,来提供逻辑移位结果,例如通过使用如图14所示的多路复用器1405。在该分段实例中,合并移位器结果和0可以由输出选择控制信号s[i]来控制,其中:对于i≥sl1,s[i]=1,i={0,1,...,4},sl1=n_1-s_1(分段1);对于i≥sl2+5,s[i]=1,i={5,6,7},sl2=n_2-s_2(分段2)。可以理解,在该示例中由输出阶段430存储和/或输出的y[7:0]数据(即y[7],y[6],y[5],y[4],y[3],y[2],y[1],y[0])对应于图13的分段1的3比特逻辑右移和分段2的2比特逻辑右移。

现参见图15,显示分段逻辑数据移位的另一示例。特别地,图15显示可重置分段可缩放移位器400被配置为8比特2分段实施,其中分段1提供2比特逻辑左移,分段2提供1比特逻辑左移(例如,移位器大小n=8,分段数m=2,分段1大小n_1=5,分段1移位值s_1=2,分段1移位方向d_1=左,分段1移位类型t_1=逻辑,分段2大小n_2=3,分段2移位值s_2=1,分段2移位方向d_2=左,分段2移位类型t_2=逻辑)。应当理解,尽管图15显示了两个分段实施相同类型的移位(例如,逻辑)和相同方向上的移位(例如,左)配置,但本发明对这种配置没有任何限制。

与先前示例一样,图15示例的输入数据(x)包括8比特,其中输入数据可以表示为x[7:0](例如,x[7:0]={x[7],x[6],x[5],x[4],x[3],x[2],x[1],x[0]}),输出数据可以表示为y[7:0](例如,y[7:0]={y[7],y[6],y[5],y[4],y[3],y[2],y[1],y[0]})。在图15示例中,分段数(m)是2,其中分段1包括5比特,分段2包括3比特,x_1[4:0]是分段1的输入,x_2[2:0]是分段2的输入,y_1[4:0]是分段1的输出数据,y_2[2:0]是分段2的输出数据。因此,x[7:0]={x[7],x[6],x[5],x[4],x[3],x[2],x[1],x[0]}={x_2[2:0],x_1[4:0]},其中x_1[4:0]={x[4],x[3],x[2],x[1],x[0]},x_2[2:0]={x[7],x[6],x[5]}。类似地,y[7:0]={y[7],y[6],y[5],y[4],y[3],y[2],y[1],y[0]}={y_2[2:0],y_1[4:0]},其中y_1[4:0]={y[4],y[3],y[2],y[1],y[0]},y_2[2:0]={y[7],y[6],y[5]}。

图8显示的使用对数移位器配置来实施移位器阶段的示例,可以用于图15的可重置分段可缩放移位器。对数移位器的阶段数是k=ceil[log2(n)],其中如上所述,在示例性实施例中,n=8,因此k=log2(8)=3。在图8所示移位器阶段420的左移位部分522中显示对数移位器的3个阶段,其中yl_1[7:0]=左移位部分的阶段1的输出,yl_2[7:0]=左移位部分的阶段2的输出,yl_3[7:0]=左移位部分的阶段3的输出。应当注意,鉴于不需要右移位部分的功能来实现逻辑左移,图8中移位器阶段420的右移位部分521未在图15示例中使用。

如先前所述,可重置分段可缩放移位器可以提供sl_k[n]作为左移位部分阶段k路径n的控制信号。因此,在图8所示移位器阶段420的左移位部分的3个阶段中,sl_1[7:0]=左移位阶段1的路径的控制信号,sl_2[7:0]=左移位阶段2的路径的控制信号,sl_3[7:0]=左移位阶段3的路径的控制信号。如果路径的控制信号是“0”,数据将沿着相同路径传播到下一阶段。但是,如果路径的控制信号是“1”,连接到多路复用器的另一路径的数据将沿着该路径传播到下一阶段。在该示例中,右移位部分控制信号sr_k[n]是不需要的,可以是任意值(即,“不关心”)。

在该分段示例中,sl1=2=3'b010(即,分段1移位值s_1=2,分段1移位方向d_1=左),sl2=1=3'b001(即,分段2移位值s_2=1,分段2移位方向d_2=左)。对于左移位部分,分段移位器阶段的控制信号可以表示为sl_1[7:0]=1110_0000(阶段1),sl_2[7:0]=0001_1111(阶段2),sl_3[7:0]=0000_0000(阶段3)。可以理解,每个上述控制信号的最右边5比特,为分段1的5比特提供分段数据移位,上述述控制信号的最左边3比特,为分段2的3比特提供分段数据移位。如图8的左移位部分522的粗体路径所示,根据左移控制信号(sl_1,sl_2和sl_3)来实现数据移位,为分段1提供x[0]到y[2]、x[1]到y[3]和x[2]到y[4]的2比特左移,为分段2提供x[5]到y[6]和x[6]到y[7]的1比特左移。

该示例分段的可重置分段可缩放移位器配置提供逻辑移位,因此,尽管比特确实移位了(例如,分段1的路径2、路径3和路径4的输出,分段2的路径6和路径7的输出,如图8的左移位部分522中被圆圈住阶段3输出所示),插入0作为每个左移操作的最右比特(例如,分段1的路径0和路径1的输出,分段2的路径的输出,如图8右移位部分521中被圆圈住阶段3输出所示)。与0相连的数据输出位置可以根据yr_k[n-1:0]来确定,其中yr_k数据比特被替换为0,不是先前循环移位示例中的左移位部分的输出,用于与左移位部分的输出合并。因此,输出阶段430合并左移位器部分522的结果和0,来提供算术移位结果,例如通过使用如图12所示的多路复用器1204。在该分段示例中,合并移位器结果和0可以通过输出选择控制信号s[i]来控制,其中:对于i≥sl1,s[i]=1,i={0,1,...,4},sl1=s_1(分段1);对于i≥sl2+5,s[i]=1,i={5,6,7},sl2=s_2(分段2)。可以理解,在该示例中,由输出阶段430存储和/输出的y[7:0]数据(即y[7],y[6],y[5],y[4],y[3],y[2],y[1],y[0]),对应于图15的分段1的2比特算术左移和分段2的1比特算术左移。

图16显示一个实施例的可重置分段可缩放移位器400的细节,其可被配置为根据上述示例来提供数据移位。特别地,图16的可重置分段可缩放移位器400显示了一个8比特移位器配置,其中输入阶段410被配置为向移位器阶段420的右移位器部分521和左移位器部分522两者提供输入数据,从而便于可重置移位器适合支持各种类型的数据移位(例如,循环移位、算术移位和/或逻辑移位,如以上示例所示)。图16的移位器阶段420包括多路复用器阵列501,其置于3阶段对数移位器配置中,并响应于由控制器421提供的控制信号(例如,sr和/或sl控制信号,如以上示例所示),以便于进行可重置数据移位操作。为了简化图16的可重置分段可缩放移位器400,输出阶段430显示为循环移位实施配置。即,所示实施例的输出阶段430包括多路复用器阵列602,其响应于由控制器421提供的控制信号(例如,如以上示例所示的s[i]输出选择控制信号),以便于合并右移位器部分521和左移位器部分522的结果来提供循环移位结果。

从上述循环移位、算术移位和逻辑移位示例应该容易理解,移位器阶段420的逻辑可以支持每种数据移位类型,其中输出阶段430适于将右移位部分和左移位部分的输出合并(例如,循环移位),将某些输出与符号比特(例如,算术右移)相连,在适当时(例如,基于移位类型和/或移位方向)将某些输出与0(例如,左算术移位和逻辑移位)相连。图17a显示了一个可以用于输出阶段430的可控数据路径元件的配置,以便可重置分段可缩放移位器400能够支持算术移位。例如,图17a的多路复用器电路可用于代替输出阶段430的每个多路复用器602,从而提供一个输出阶段配置支持循环移位、算术移位和逻辑移位(控制移位器阶段420的数据合并,和/或用相应符号比特或0替换特定比特,以适合要实施的移位类型)。因此,控制器421可以提供输出选择控制信号s[i],用于要实施的特定移位类型,如以上示例所示。如图17b-17f所示,可以控制图17a配置的移位器来提供循环移位(图17b)、算术移位(图17c和图17d)和逻辑移位(图17e和图17f)。

从以上示例可以看出,可重置分段可缩放移位器400可重置缩放性,以支持各种比特长度数据的数据移位,并支持不同比特长度的并行数据移位。例如,移位器对于分段数(m)(例如,1≤m≤n)、每个分段的大小(n_m)(例如,n≥n_m≥1)、每个分段的移位值(s)(1≤s≤n)、每个分段的移位方向(d)(例如,d是左或右)、和/或每个分段的移位类型(t)(例如,t是逻辑、算术或循环)可进行重置。在以上讨论的可重置分段可缩放移位器400示例中,分段(segmentation)是为了不同比特长度的数据移位而实施的,其中对于数据移位器阶段的每个路径,提供单独数据移位控制,以对于分段实施不同的数据移位命令,并行控制多个数据移位。根据本发明概念,可重置分段可缩放移位器适应相对较大的数据宽度(例如,对于5gqc-ldpc解码器,n=384)。因此,随着可重置分段可缩放移位器的配置被扩展放大,控制信号结构可能变得相当复杂。所以,实施例可以实施一种较不复杂的移位器阶段配置,但是,该移位器阶段配置仍可重置扩展性,以支持各种比特长度数据的数据移位,并支持不同位长度的并行数据移位。

图18显示了一个分节(sectioned)的移位器阶段配置,其易于扩展以适应大数据宽度。图18所示的移位器阶段420实施了一种分节(sectioned)配置,其中左移位和右移位部分中的每个移位部分(图示中的任何一个)被分成多节(section),其中每节的数据路径共享相同的控制信号。例如,移位器可以被划分为多节相等数据宽度、不同数据宽度或其组合,其中尽管可以单独地控制每节以提供不同的数据移位(例如,方向和/或移位值),但对于相同的数据移位(例如,方向和移位值),一节的所有数据可以被一起控制。例如,这种配置可以在分段数和硬件成本之间提供一个令人满意的折衷平衡。

对于不同比特长度数据移位的分段(segmentation),可以通过为每个分段(segment)配置一组分节(由一节或多节组成)来实施,其中用于一个特定分段的该组分节的聚合数据宽度等于或大于该分段数据宽度。因此,在由一个或多个分节组成的相应组服务(hosted)的每个分段上,对来自输入数据的各种数据宽度的一个或多个消息提供数据移位,其中通过适当地控制每个分段的节,可以并行地对消息提供单独数据移位。

分节数(se)和分节数据宽度(w)优选地与移位器数据宽度(n)相关,使得总数据有被分节(例如,n=se*w)。在图18所示的移位器阶段420中,移位器数据宽度n=384,分节数se=24,每个分节的数据宽度w=16(例如,384=24*16)。m个分段可以由移位器段420的不同分节组服务,其中分段数小于或等于移位器数据宽度(例如,1≤m≤n),分段的总尺寸小于或等于移位器数据宽度(例如,n_1+n_2+...n_m≤n)。

根据本发明实施例,一个分段与相应分节组中第一分节的lsb对齐,该分节组聚合数据宽度超出相应分节比特宽度的任何部分,在该分节组最后一个分节的msb末尾保持未使用。该配置显示在图18中,其中不同数据宽度的m个分段(例如,分段1,分段2,...分段m)由移位器阶段420的相应分节组所服务。

如图18示例所示,消息x_1的比特数n_1小于分节数据宽度w(例如,n_1=10和w=16),因此服务分段1的分节组包括分节1,其中消息x_1的lsb与分节1的lsb位置对齐,分节1的数据宽度大于消息x_1的比特数,超出那部分未被使用(例如,(1*16)-10=6个未使用比特)。使用相同控制信号,控制分节1的每个移位器数据路径。因此,使用单个控制信号来为分段1提供数据移位(例如,与以上示例使用10个单独数据移位路径控制信号相反)。

与示例性消息x_1相比,消息x_2的比特数n_2大于分节数据宽度w(例如,n_2=38和w=16),因此,服务分段2的分节组包括分节2、分节3、和分节4(例如,ceiling.math(38/16)=3节,其中ceiling.math函数是将数字向上舍入为最接近的整数),其中消息x_2的lsb与分节2的lsb位置(该分段的第一节)对齐,分节的聚合数据宽度大于消息x_2的比特数,超出部分在分节4(服务分段的最后一节)保持未被使用(例如,(3*16)-38=10个未使用比特)。使用相同的控制信号,控制分节2的每个移位器数据路径,使用相同的控制信号,控制分节3的每个移位器数据路径,使用相同的控制信号,控制分节4的每个移位器数据路径。因此,使用3个控制信号(例如,一个控制信号用于每个服务分段的分节)为分段2提供数据移位(例如,与以上示例使用38个单独数据移位路径控制信号相反)。

消息x_m的比特数n_m是分节数据宽度w的整数倍(例如,n_m=32,w=16),因此,服务分段m的分节组包括分节se-2和分节se-1(例如,ceiling.math(32/16)=2节),其中消息x_m的lsb与分节se-2的lsb位置(该分段的第一节)对齐,消息x_m的msb与分节se-1(服务该分段的最后一节)的msb位置对齐(例如,(2*16)-32=0个未使用比特)。使用相同的控制信号,控制分节se-2的每个移位器数据路径,使用相同的控制信号,控制分节se-1的每个移位器数据路径。因此,使用2个控制信号(例如,一个控制信号用于每个服务分段的分节)为分段m提供数据移位(例如,与以上示例使用32个单独数据移位路径控制信号相反)。

图19显示一个示例性的移位器阶段,其可以用于图18可重置分段可缩放移位器的分节实施例,使用对数移位器配置来实施。图19所示移位器的数据宽度是16,其中4比特的4个分节被实施(例如,n=16,se=4,w=4)。对数移位器的阶段数是k=ceil[log2(n)],其中在示例性实施例中,n=16,因此k=log2(8)=4。对数移位器的4个阶段显示在图19所示的移位器阶段420的右移位部分1921和左移位部分1922中,其中yr_1[15:0]=右移位部分的阶段1的输出,yr_2[15:0]=右移位部分的阶段2的输出,yr_3[15:0]=右移位部分的阶段3的输出,yr_4[15:0]=右移位部分的阶段4的输出,yl_1[15:0]=左移位部分的阶段1的输出,yl_2[15:0]=左移位部分的阶段2的输出,yl_3[15:0]=左移位部分的阶段3的输出,yl_4[15:0]=左移位部分的阶段4的输出。

在图19所示实施例中,移位器阶段420被配置为一个16比特、4分节、3分段的实施,其中对于一个使用分节1和分节2的7比特消息,分段1提供4比特循环右移,对于一个使用分节3的4比特消息,分段2提供2比特循环右移,对于一个使用分节4的3比特消息,分段3提供1比特循环右移(例如,移位器大小n=16,分节数se=4,分节数据宽度w=4,分段数m=3,分段1大小n_1=7,分段1移位值s_1=4,分段1移位方向d_1=右,分段1移位类型t_1=循环,分段1分节组=[分节1,分节2],分段2大小n_2=4,分段2移位值s_2=2,分段2移位方向d_2=右,分段2移位类型t_2=循环,分段2分节组=[分节3],分段3大小n_3=3,分段3移位值s_3=1,分段3移位方向d_3=右,分段3移位类型t_3=循环,分段3分节组=[分节4])。

应当理解,尽管图19显示了每个分段实施相同类型移位(例如,循环)和相同方向移位(例如,右)的配置,但本发明对这种配置没有限制。例如,可重置分段可缩放移位器可以被配置为提供不同尺寸的分段、分段的不同移位方向,分段的不同移位值、和/或分段的不同移位类型。

图19的输入数据(x)包括16比特,其中输入数据可以表示为x[15:0](例如,x[15:0]={x[15],x[14],...x[0]}),输出数据可以表示为y[15:0](例如,y[15:0]={y[15],y[14],....y[0]})。在图19的示例中,分段数(m)是3,其中分段1包括7比特,分段2包括4比特,分段3包括3比特,x_1[6:0]是分段1的输入,x_2[3:0]是分段2的输入,x_3[2:0]是分段3的输入,y_1[6:0]是分段1的输出数据,y_2[3:0]是分段2的输出数据,y_3[2:0]是分段3的输出数据。服务分段1的分节组是分节1和分节2,服务分段2的分节组是分节3,服务分段3的分节组是分节4。因此,实施分段和分节映射的偏移(例如,offset_m:offset_4,3,2,1,nm:n_4,3,2,1,其中offset_m是每个分段的起始路径i的值),x_1[6:0]={x[6],x[5],x[4],x[3],x[2],x[1],x[0]},x_2[3:0]={x[11],x[10],x[9],x[8]},x_3[2:0]={x[14],x[13],x[12]}。类似地,再次实施分段和分节映射的偏移,y_1[6:0]={y[6],y[5],y[4],y[3],y[2],y[1],y[0]},y_2[3:0]={y[11],y[10],y[9],y[8]},y_3[2:0]={y[14],y[13],y[12]}。

在该分段示例中,sr1=4=4'b0100(即,分段1移位值s_1=4,分段1移位方向d_1=右),sr2=2=4'b0010(即,分段2移位值s_2)=2,分段2移位方向d_2=右),sr3=1=4'b0001(即,分段3移位值s_3=1,分段3移位方向d_3=右)。该分段示例提供循环移位,因此数据左移用来提供数据移位的循环方面。在该示例中,sl1=7-4=3=4'b0011(即,分段1大小n_1=7,分段1移位值s_1=3,分段1移位类型t_1=循环),sl2=4-2=2=4'b0010(即,分段2大小n_2=4,分段2移位值s_2=2,分段2移位类型t_2=循环),sl3=3-1=2=4'b0010(即,分段3大小n_3=3,分段3移位值s_3=1,分段3移位类型t+3=循环)。使用先前示例的单独数据移位器路径控制,对于右移位部分,分段移位器阶段的控制信号可以表示为sr_1[15:0]=1111_0000_0000_0000(阶段1),sr_2[15:0]=0000_1111_0000_0000(阶段2),sr_3[15:0]=0000_0000_1111_1111(阶段3),sr_4[15:0]=0000_0000_0000_0000(阶段4),对于左移位部分,sl_1[15:0]=0000_0000_1111_1111(阶段1),sl_2[15:0]=1111_1111_1111_1111(阶段2),sl_3[15:0]=0000_0000_0000_0000(阶段3),sl_4[15:0]=0000_0000_0000_0000。

但是,该实施例实施分节组,因此,对于右移位部分,控制信号可以简化为srg_1[3:0]=1000(阶段1),srg_2[3:0]=0100(阶段2),srg_3[3:0]=0011(阶段3),srg_4[3:0]=0000(阶段4),对于左移位部分,slg_1[3:0]=0011(阶段1),slg_2[3:0]=1111(阶段2),slg_3[3:0]=0000(阶段3),[3:0]=0000(阶段4)。可以理解,对于由分节1和分节2服务的分段1的7比特,通过每个前述控制信号的最右边2比特提供分段数据移位;对于由分节3服务的分段2的4比特,通过每个前述控制信号的右三比特提供分段数据移位;对于由分节4服务的分段3的3比特,通过每个前述控制信号的最左边比特提供分段数据移位。

输出阶段430合并右移位器部分1921和左移位器部分1922的结果,以提供循环移位结果,其中任何分节的未使用部分将被丢弃。因此,输出阶段430可以包括多路复用器602,其设置在右移位部分1921和左移位部分1922的每个路径的相应输出处,并提供控制信号来选择输出右移位数据或左移位数据,如图20的输出阶段430版本所示,其是图19的移位器阶段420的16数据宽度缩放而来。合并移位器结果可以由输出选择控制信号s[i]控制,其中如果(sl+offset_m)≥sl,则s[i]=1。尽管为简化描述未加以显示,但应当理解,该实施例的输出阶段430可以包括一个对应于图17a的可控数据路径元件的配置,以便可重置分段可缩放移位器400能够支持循环移位、算术移位和逻辑移位。

尽管图18和19显示了可重置分段可缩放移位器对于输入数据的数据宽度或大小的配置(例如,图19的分段1输入x_1,分段2输入x_2,和分段3输入x_3)是不同的,应当理解,根据本发明实施例,所有输入数据的数据宽度或大小可以相同(例如,分段1输入x_1数据宽度=分段2输入x_2数据宽度=分段3输入x_3数据宽度)。根据为所有输入数据的相同数据宽度而配置的一些实施例,移位器阶段的所有分节的每个阶段的控制信号可以是相同的(例如,对于每个输入消息提供相同移位),或移位器阶段的所有分节的每个阶段的控制信号的大小可以是相同的,尽管控制信号本身可能不同(例如,对于一些或所有输入消息,提供不同移位)。

应当理解,尽管图18和19的分节可重置分段可缩放配置的分节包括相同的数据宽度,但实施例可以包括不同数据宽度的分节。例如,图18的分节1到分节se中的每个分节有不同的数据宽度。作为另一个示例,从分节1到分节se中的一些分节有不同的数据宽度,而从分节1到分节se中的其他分节有相同的数据宽度。

从上述示例可以理解,可重置分段可缩放移位器的分节实施例可以合并多个连续分节以形成一个数据移位器,用于容纳大于各个分节的数据宽度。这种可重置分段可缩放移位器配置为输入数据的每个消息提供完全可重置数据宽度和移位命令,用于灵活和有效地利用硬件来并行处理各种比特长度的数据输入。

尽管已经详细描述了本发明及其优点,但应该理解,在不脱离由所附权利要求限定的本发明精神和范围的情况下,可以进行各种改变、替换和变更。此外,本申请范围不旨在限于说明书中描述的过程、机器、制造、物质组成、装置、方法和步骤的特定实施例。本领域普通技术人员从本发明的公开内容将容易理解,根据本发明可以使用目前存在的或稍后开发的、执行与本文所述相应实施例基本相同功能或获得基本相同结果的的方法、机器、制造、物质组合物、装置、方法或步骤。因此,所附权利要求旨在在其范围内包括这样的过程、机器、制造、物质组成、装置、方法或步骤。

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