基于除数(2的制作方法

文档序号:6574571阅读:164来源:国知局
专利名称:基于除数(2的制作方法
技术领域
本发明总的来说涉及定点算术实现的领域,尤其涉及用于运算与除数(2n-1)相对应的求模操作的系统和方法。
背景技术
在此所使用的表达式“x mod r”(其中,x是整数,r是正整数)被定义为在集合{x-krk∈Z}中小于r的非负整数y,其中Z表示整数集。例如,8 mod 5等于3。作为另一个例子,101 mod 10等于1。当x为正时,“x mod r”可以被解释为x被r除所得的余数。
现代应用存在许多其中要计算A mod(2n-1)的情形,其中A是m位的二进制字,其中的m和n为正整数。例如,在按照CDMA2000 High Rate PacketData Air Interface Specification(CDMA2000高速率分组数据空中接口规范),3GPP2 C.S0024-A,ver2.0,July 2005执行数据交织或解交织时,需要计算Amod(2n-1)。
当m小于n时,A mod(2n-1)简单地是A本身。因此,在m<n的情形,A mod(2n-1)的计算微不足道。
当m大于或等于n时,则A mod(2n-1)的计算相当困难。
Reto Zimmermann公开了一种在X的长度为(n+1)位的情形,即m=n+1的情形中的X mod(2n-1)的计算的方法。参看标题为“Efficient VLSIimplementation of modulo(2n±1)addition and multiplication”(published in theProceedings of 14thIEEE Symposium on Computer Arithmetic 1999)的论文。然而,Zimmermann的方法没有推广到当m是其他值的情形。
因此,存在当m大于或等于n的情形下计算A mod(2n-1)的电路、系统和方法的需求。

发明内容
在一组实施例中,用于计算A mod(2n-1)(其中的A是m位的数量,其中的m是大于或等于2的整数,其中的n是小于或等于m的正整数)的系统可以包括多个加法器电路。每个加法器电路可以被配置为操作两个n位的操作数,以便产生n位的输出。多个加法器电路可以被耦合以形成树结构。数量A被划分为多个部分,其中每个部分包括高达数量A的n个连续位。每个部分可以被精确地提供给加法器电路中的一个,以便确定该加法器电路的两个n位操作数中的一个。
每个加法器电路可以包括第一n位加法器,其被配置来对两个n位操作数操作,以便产生中间的n位结果;以及第二n位加法器,其被配置对该中间的n位结果以及来自第一n位加法器的进位(carryout)信号操作,以产生n位输出。
在另一组实施例中,用于计算A mod(2n-1)(其中的A是m位的数量,其中的m是大于或等于2的整数,其中的n是小于或等于m的正整数)的系统可以包括加法器电路。每个加法器电路可以被配置为对两个n位输入操作,以便产生n位的输出。所述加法器电路的输出可以被耦合到两个输入中的第一个。
所述加法器电路可以包括第一n位加法器,其被配置来对两个n位操作数操作,以便产生中间的n位结果;以及第二n位加法器,其被配置对该中间的n位结果以及来自第一n位加法器的进位(carryout)信号操作,以产生n位输出。
数量A的多个部分可以分别按顺序在多个(时钟信号的)周期中被提供给两个输入中的第二个。每个部分可以包括高达数量A的n个连续位。
在另一组实施例中,用于计算A mod(2n-1)(其中的A是m位的数量,其中的m是大于或等于2的整数,其中的n是小于或等于m的正整数)的方法,可以包含(a)接收m位的数量A;(b)提取数量A的一部分,其中该部分包括高达数量A的n个连续位;(c)将该部分添加到寄存器的值中;(d)如果该寄存器的值大于2n-1,则将寄存器的值加1,其中对所述添加1的加法执行模2n运算;(e)重复(b)、(c)和(d),直到数量A被取尽;以及(f)如果该寄存器的值等于2n-1,则将所述寄存器值设置为等于0。
在另一组实施例值,用于计算A mod(2n-1)(其中的A是m位的数量,其中的m是大于或等于2的整数,其中的n是小于或等于m的正整数)的方法,可以包含在一系列级中执行若干加法操作。每个级可以包括以并行方式执行该若干加法操作的对应子集。每个级的加法操作的子集接收对应的输入数据并且产生对应的输出数据。除了第一级外,每个级的输入数据可以包括所述级的前一级的输出数据的至少一部分。所述第一级的输入数据可以包括数量A的多个部分。每个部分可以包括数量A的至多n个连续位。该若干加法操作的每个可以包括执行第一n位加法和第二n位加法,其中第二n位加法对由第一n位加法产生的中间结果和进位操作。
所述方法还可以包括依赖于对来自最后级的输出数据和值(2n-1)的比较,选择来自最后级的输出数据或值0,其中所选择的值等于A mod(2n-1)。
在此所公开的各种方法实施例(或其任何组合或其部分)中的任何一种可以用程序指令实现。所述程序指令可以被存储在任何各种不同的存储器介质中(或上)。存储器介质的例子包括各种类型的磁介质(例如,磁带、磁盘、磁片和磁膜);各种类型的光学介质(例如,CD-ROM);各种类型的半导体RAM和ROM;基于电荷或其他物理量的存储体的各种介质等。
而且,包括存储器和处理器的系统的各种实施例被考虑,其中所述存储器被配置来存储程序指令,并且所述处理器被配置来从所述存储器读取并执行程序指令。在各种实施例中,程序指令对在此描述的方法实施例(或其组合或其部分)的对应的实施例编码。


下面的详细描述参照了附图,现在对附图进行简要说明。
图1A图示了一种加法器电路,其采用反馈,以便在若干时钟周期中计算A mod(2n-1)的值。
图1B图示了一种系统的一个实施例,该系统配置来提取m位数量A的部分,并且对各部分操作以便在若干时钟周期中计算A mod(2n-1)。
图1C是配置了提取数量A的连续部分的电路的一个实施例。
图2A图示了在m=35和n=4的情形中配置来计算A mod(2n-1)的加法器树的一个实施例。
图2B图示了在m=35和n=4的情形中配置来计算A mod(2n-1)的加法器树的另一个实施例。
图3A图示了在m=35和n=4的情形中配置来计算A mod(2n-1)的加法器树的另一个实施例。
图3B图示了在m=31和n=4的情形中配置来计算A mod(2n-1)的加法器树的一个实施例。
图3C图示了在m=21和n=8的情形中配置来计算A mod(2n-1)的加法器树的一个实施例。
图3D图示了在m=11和n=6的情形中配置来计算A mod(2n-1)的加法器树的一个实施例。
图4图示了在m=15和n=3的情形中配置来计算A mod(2n-1)的加法器树的一个实施例。
图5图示了被配置来对两个n位操作数X和Y实现计算(X+Y)mod(2n-1)的加法器电路Vn的一个实施例。
图6图示了包括两个n位加法器的电路Gn的一个实施例。
图7图示了在n=4的情形采用电路Gn的复制的加法器树的一个实施例。
图8图示了用于计算A mod(2n-1)的系统的一个实施例,所述系统包括加法器树结构和映射电路。
图9图示了用于在若干计算周期使用反馈计算A mod(2n-1)的系统的一个实施例。
图10A图示了用于以顺序方式计算A mod(2n-1)的方法(例如,计算机实施方法)的一个实施例。
图10B图示了用于在多级中计算A mod(2n-1)的方法的一个实施例,每级包括若干并联相加操作。
图10C图示了用于作为交织操作或解交织操作部分的从存储器访问数据码元的方法的一个实施例。
图11图示了用于对m位数量A计算A mod(2n-1)的计算机系统的一个实施例。
尽管在此通过几个实施例的举例和图解性的附图描述了本发明,但是本领域技术人员将意识到,本发明不局限于在此描述的实施例或附图。应该理解,附图以及对其详细的描述不旨在将发明局限于所公开的具体形式,相反,本发明涵盖了落入由权利要求定义的本发明的精神和范围内的所有修改、等价内容和替换。在此使用的标题仅仅是出于组织的目的,而不意味着对说明书或权利要求书的限制。正如在本整个说明书中使用的那样,词“可以”是在许可的意义上(即,“具有潜在可能”的意义上),而不是在强制的意义上(即,在“必须”的意义上)使用。而且,短语“A包括B”被用来意味着“A包括B,但是不局限于B”。
具体实施例方式
假设A<m>表示m位的二进制字,其中m是大于或等于2的整数。
假设n是小于或等于m的正整数。
假设k=m/n,其中x表示x的向下舍入,即小于或等于x的最大整数。换言之,k是用n去除m然后向下舍入为最接近整数的结果。
观察到m位字A<m>可以表示为k个连续的n位部分和具有(m-kn)位的终止部分的连接(concatenation)A<m>=Ak<m-kn>Ak-1<n>Ak-2<n>...A1<n>A0<n>. (1)一般来说,符号X<r>意味着表示r位的二进制字X。
二进制字A的值可以利用下面的部分的值的项表示A=Ak2kn+Ak-12(k-1)n+Ak-22(k-2)n+...+A12n+A0.(2)2nmod(2n-1)=1是一基本的数学事实。而且,2jnmod(2n-1)=1其中j是任何的非负整数。
因此,可推出A mod(2n-1)=(Ak+Ak-1+Ak-2+...+A1+A0)mod(2n-1)。 (3)因此,假定加法器电路Vn10对两个n位数量X和Y执行X+Y mod(2n-1)运算,以产生n位的输出Z,A对(2n-1)求模的运算可以按图1A所提示的那样以连续的形式实现。数量A0、A1、...、Ak-1、Ak可以在时钟信号CLK的连续周期,被提供给加法器电路Vn10的X输入端。加法器电路Vn10的输出端Z可以被反馈到输入端Y,使得加法器电路Vn10实施迭代运算Zj=Aj+Zj-1mod(2n-1) (4)对于j=0、1、2、...k。来自最后的周期的输出Zk表示A mod(2n-1)。因为加法操作(基于任何求模运算)是可交换和可结合的,因此提供给加法器电路Vn10的数量A0、A1、A2、...、Ak-1、Ak呈现的次序,就最终的输出而言并没有关系。
在一些实施例中,部分提取电路SEC 50可以被提供来从二进制字A提取数量A0、A1、A2、...、Ak-1、Ak。并且在连续的时钟周期,如图1B建议的那样,将目前的数量A0、A1、A2、...、Ak-1、Ak提供给所述加法器电路Vn。
如图1C所示的部分提取电路SEC 50,可以包括多路复用器51、m位寄存器52、移位单元53和控制单元54。在第一个时钟周期,多路复用器51可以最初选择m位二进制字A,并且将该二进制字A传递给m位寄存器52。寄存器52接收并存储二进制字A。寄存器52的m位输出被提供给移位单元53。寄存器输出的最小有效n位可以被解释为部分提取单元SEC 50的输出。移位单元53接收寄存器52的m位输出,并且将该寄存器52的输出向右移n位,以便产生所移位的值。在第二个时钟周期,控制单元54指令多路复用器51从移位单元53选择移位后的值。因此,存储在寄存器52的被移位的值,又由移位单元53再度移位。在第三时钟周期,控制单元54指令多路复用器51选择双倍移位的值。在第一个时钟周期之后的每个时钟周期,控制单元54可以指令多路复用器51选择移位单元53的输出。因此,在连续的时钟周期,部分A0、A1、A2、...、Ak-1、Ak的连续部分将出现在部分提取单元SEC 50的输出端。控制单元54可以接收时钟信号CLK,并且控制多路复用器51的选择动作、寄存器52的存储动作和移位单元53的移位动作。例如,控制单元54可以包括指令寄存器52在时钟CLK的上升沿捕获数据,并且包括指令移位单元53来在时钟CLK的下降沿执行移位动作。控制单元54可以响应于对初始信号INIT的确认,在要处理的下一个二进制字A的预先处理中,可以对其自身再初始化。
如果m是n的倍数,则值(m-kn)等于0,因此,数量Ak是空的(vacuous)。因此,在这种情况下,仅仅数量A0、A1、A2、...、Ak-1需要被提供给所述加法器电路Vn,并且在k个计算周期可以完成A mod(2n-1)的计算。
在一组实施例中,例如在一个时钟周期,可以由从加法器电路Vn的复制形成的加法器树,以实施A modulo(2n-1)的计算。图2A图示了对于m=35和n=4的情形配置的加法器树100的一个实施例。加法器树100具有4级,其包括对加法器电路V4的8个复制。在第一级,加法器电路101、102、103和104每个接收4位的数量A0、A1、A2、...、A7的对应对。这些加法器电路的4位输出被馈送给第二级的加法器电路105和106。具体来说,加法器电路101和102馈送加法器电路105,而加法器电路103和104馈送加法器电路106。加法器电路105和106的4位输出馈送第三级的加法器电路107。第四级的加法器电路108接收加法器电路107的4位输出,并且还接收3位的数量A8,其是仅仅在第一级中没有消耗的数量。加法器电路108的4位输出表示A mod(24-1)即A mod 15的结果。
一般来说,输入到加法器树的输入数c由下式给出 其中, 表示x的向上取整。而且,在加法器树中的级别(level)的数nL由下面的表达式给出d=log2c 换言之,加法器树深度nL等于m/n的向上取整的整数,再进行以2为底的对数的向上取整。例如,在图2A所图示的情形中,m=35而n=4,因此,c=9,d=3.17和nL=4。
一般来说,只要输入数c不是偶数,作为输入提供给加法器树100的c数量中的其中一个将不在第一级被消耗。该数量在此被称作为“第一级余数”。在图2A的加法器树100中,数量A8是第一级余数。
没必要将第一级余数的消耗推迟到最后级。例如,图2B图示了加法器树200的实施例,其中第一级余数(数量A8)由第三级中的加法器电路207消耗。在最先的两个级,加法器树200具有类似于加法器树100的结构的结构。数量A8和加法器电路106的输出被馈送到加法器电路207。加法器电路105和207的输出被馈送到加法器电路208。
而且,没必要最后级数量(在上面例子中的A8)是第一级余数。一般来说,数量A0、A1、A2、...、Ac-1中的任何一个都可以是第一级余数。例如,图3A图示了其中数量A0是第一级余数的加法器树300的实施例。在第一级中,加法器电路301、302、303和304中每个都接收数量A1、A2、A3、...、A8的相应对。第二级的加法器电路305由数量A0和来自第一级的加法器电路301的输出提供。加法器电路305和306的输出被提供给加法器电路307。加法器电路302和307的输出被馈送到加法器电路308。
而且,当c是偶数时,没必要存在第一级余数,即所有数量可以在第一级消耗。例如,图3B图示了对于m=31和n=4的情形配置的加法器树350的实施例。因为c=ceiling(m/n)=8,因此数量A1、A2、A3、...、A8的每一个都可以在第一级中消耗。加法器电路351、352、353和354中的每个接收数量A0、A1、A2、A3、...、A7中的每个接收数量A0、A1、A2、...、A7中的相应对。加法器电路355接收加法器电路351和352的输出。加法器电路356接收加法器电路353和354的输出。加法器电路357接收加法器电路355和356的输出。
在一些实施例中,加法器树可以包括仅仅两个加法器电路Vn的复制。例如,图3C图示了对于m=21和n=8的情形配置的加法器树360的实施例。加法器树360包括加法器电路361和362。加法器电路361接收8位的数量A0和A1。加法器电路362接收加法器电路361的8位输出,并且还接收5位的数量A2。
在一些实施例中,加法器树可以包括只有一个加法器电路Vn的复制。例如,图3D图示了对于m=11和n=6的情形配置的具有仅仅一个加法器电路370的加法器树的实施例。加法器树370接收数量A0和A1。
在m是n的倍数的情形,由于(m-kn)等于0,所以数量Ak是空的。因此,表达式(1)和(3)简化为A<m>=Ak-1<n>Ak-2<n>...A1<n>A0<n>, (5)Amod(2n-1)=(Ak-1+Ak-2+...+A1+A0)mod(2n-1),(6)即,空数量Ak被简单地省略了。例如,图4图示了对于m=15和n=3的情形配置的加法器树400的实施例。加法器电路401接收数量A0和A1。加法器电路402接收数量A3和A4。加法器电路接收加法器电路401的输出和数量A2。加法器电路404接收加法器电路402和403的的输出。
在m是n的倍数的情形中与表达式(3)或表达式(6)一致的各种加法器树的实施例借助于在此给出的各种例子对读者将是明显的。
正如上面所定义的那样,加法器电路Vn对操作数X和Y实施计算(X+Y)mod(2n-1),以产生n位输出Z。加法器电路Vn可以由图5所示的那样实现。加法器电路Vn可以包括两个n位的加法器501和502。每个n位的加法器被配置为利用作为溢出操作的缠绕(wrap),对两个n位操作数操作从而产生n位输出。n位操作数X和Y被提供给加法器501。加法器501的输出W<n>可以被提供给加法器502。而且,来自加法器501的进位位可以被提供给加法器502。来自加法器502的输出R<n>被提供给电路503,以便选择性地将状态(2n-1)映射为0,并且用于忽略输出R的所有其他状态。因此,加法器电路Vn报告结果(X+Y)mod(2n-1)。电路503可以包括比较单元504和多路复用器505。比较单元504可以确定输出R是否等于2n-1,并且如果是,则确证(assert)控制信号CNTL。控制信号CNTL可以被耦合到多路复用器505的选择输入。如果控制信号被确证,则多路复用器505选择被束缚为0的“1”输入。如果控制信号未被确证,则多路复用器505选择耦合到加法器502的输出R的“0”输入。因此,电路503忽略除了状态R=2n-1外的输出R的所有状态;此除外的状态被映射为0。(电路503在此可以被称作为除外状态的映射电路或简称作为映射电路)。多路复用器505的输出Z是加法器电路Vn的输出。
因此,加法器电路Vn按照如下关系产生输出ZW<n>=(X+Y)mod2n(7)R<n>=WifX+Y<2nW+1ifX+Y≥2n---(8)]]>=(W+carryout)mod2n---(9)]]> 在一些实施例中,用于计算A mod(2n-1)的系统可以如图6所示使用加法器电路Gn的复制配置。类似于加法器电路Vn,加法器电路Gn包括两个n位的加法器601和602。然而,与加法器电路Vn相对照,加法器电路Gn不包括诸如电路503之类的除外状态映射电路。加法器601接收n位操作数X和Y,并产生n位输出W。来自加法器60 1的输出W和进位信号被提供给加法器602。加法器602产生输出Z。因此,加法器电路Gn按照如下关系产生输出ZW<n>=(X+Y)mod2n(11)Z<n>=WifX+Y<2n(W+1)ifX+Y≥2n---(12)]]>=(W+carryout)mod2n---(13)]]>图7图示了包括加法器树700的用于计算A mod(2n-1)的系统690的一个实施例。加法器树700利用加法器Gn的复制代替加法器电路Vn的复制配置。加法器树700为对于m=35和n=4的情形的配置。加法器电路701、702、703和704中的每个接收数量A0、A1、A2、...、A7的相应对。向加法器电路705提供加法器电路701和702的输出。向加法器电路706提供加法器电路703和704的输出。向加法器电路707提供加法器电路706的输出和数量A8。向加法器电路708提供加法器电路705和707的输出。
注意到,系统690包括耦合到加法器树700的输出(即加法器电路708的输出)的除外状态映射电路709,以便完成A mod(2n-1)的计算。映射电路709包括控制电路710和多路复用器711。加法器电路输出Z被提供给控制电路710和多路复用器711。控制电路710确定输出Z是否等于(24-1),并相应地驱动控制信号CNTL。因此,当Z=24-1时,多路复用器711选择值0,否则选择值Z。多路复用器711的输出是系统690的输出并且等于Amod(15)。
读者将观察到,加法器树700的结构类似于图2B所描述的加法器树200的结构。为了理解加法器树700,读者可以期望用加法器电路G4代替加法器树200的加法器电路V4。然而,为了实现A mod(2n-1)的计算,系统690包括耦合到加法器树700的输出的映射电路709。回想起加法器电路V4和加法器电路G4之间的差别是映射电路的存在。因此,系统690在输出执行一次映射功能,反之,加法器树200在每个加法器电路执行映射功能。因为,系统690不复制映射电路,所以,它比加法器树200占用较少的硅区域并且消耗较少的功率。
读者应该注意到,结合图2A-B,3A-D和4描述的类型(即具有由加法器电路Vn的复制组成的加法器树T)的任何系统实施例可以通过结构上类似的加法器树T’和耦合到加法器树T’的输出的映射电路替代地实现,其中加法器树T’具有在加法器电路复制之间相同的连接结构,但是采用了加法器电路Gn的复制而不是加法器电路Vn的复制。
在一些实施例中,计算机系统可以被配置来用软件实现A mod(2n-1)的计算。例如,计算机程序可以包括实施由下面的伪代码推荐的操作的指令X=0;For(I=0,I<ceil(m/n),I++){P=min(n*(I+1)-1,(m-1));Section=A[p:n*I];X=Section+X;
If(X>2n-1)X=(X+1)mod(2n)}If(X==(2n-1)X=0。
符号“ceil(x)”表示对操作数x操作的向上取整函数。符号“A[v:u]”表示从数量A对(v-u+1)的连续位(即以A的第u位位置开始并且以第v位位置结束的位)的提取。第0位位置指示A的最小有效位。变量X的最终值表示Amod(2n-1)。
在一组实施例中,用于计算A mod(2n-1)(其中的A是m位数量,其中的m是大于或等于2的整数,其中的n是小于或等于m的正整数)的系统可以包括如图8所推荐的多个加法器电路AC的801。每个加法器电路AC可以被配置为操作两个n位的操作数,以便产生n位的输出。多个加法器电路可以被耦合以形成树结构。数量A被划分为多个部分,其中每个部分包括高达数量A的n个连续位。每个部分被精确地提供给加法器电路中的一个,以便确定该加法器电路的两个n位操作数中的一个。然而,要注意到,这并不意味着加法器电路中的每个必定精确地接收一个部分。例如,在图7的实施例中,观察到加法器电路701接收两个部分,加法器电路707精确地接收一个部分,而加法器电路708接收0部分。
每个加法器电路AC可以包括第一n位加法器601和第二n位加法器602,例如,正如图6所推荐的那样。第一n位加法器可以被配置来对两个n位操作数操作,以便产生中间的n位结果W。第二n位加法器可以被配置对该中间的n位结果W以及来自第一n位加法器的进位(carryout)信号操作,以产生n位输出Z。
可以用各种各样的方法使用与树结构相对应的加法器电路802的输出。例如,加法器电路802的输出可以被用来执行数据交织或解交织。(参看下面结合图10A给出的有关交织/解交织的更详细的描述。)作为另一个例子,加法器电路802的输出可以被用来执行数据的加密或解密。
在一些实施例中,所述系统还可以包括映射电路805。映射电路805可以被耦合以接收从树结构801的加法器电路802的输出。映射电路805可以被配置来对加法器电路802的输出操作,以便将状态(2n-1)映射为0,并且忽略加法器电路输出的所有其他状态。因此,映射电路805的输出可以等于值A mod(2n-1)。
值A mod(2n-1)可以用于多个方面。正如上面所推荐的,值A mod(2n-1)可以用来执行数据交织或解交织。或者,值A mod(2n-1)可以用来执行数据加密或解密。
数据从所述部分输入通过树结构流向根加法器电路802。
映射电路805的各种实施例被考虑。在一个实施例中,映射电路可以包括比较单元和多路复用器,例如,如同图7的电路709所推荐的那样。比较单元701可以被配置来确定加法器电路802的输出是否等于2n-1,并且响应于确定加法器电路输出等于2n-1,确证控制信号CNTL。多路复用器711可以被配置来基于控制信号在值0和加法器电路输出之间选择。
如果m是n的倍数,则它对长度为n位的每个部分可能有利。如果m不是n的倍数,则可以期望它将数量A划分为长度n的=floor(m/n)部分和长度(m-kn)的一个部分。例如,包含A的最高有效位的部分可以是长度(m-kn)的部分。
在一些实施例中,将划分数量A所得的多个部分的数目等于c=ceiling(m/n)。在树结构中加法器电路的数等于c。
在一些实施例中,树结构具有等于m/n的向上取整的以2为底的对数的向上取整的多个级别。
在一些实施例中,n是在范围[2,32]中的正整数。
在一些实施例中,n是2的幂。例如,n可以等于2、4、8、16、32等。
在一组实施例中,用于计算A mod(2n-1)(其中的A是m位数量,其中的m是大于或等于2的整数,其中的n是小于或等于m的正整数)的系统可以包括例如如图9所推荐的加法器电路。加法器电路900可以被配置为操作两个n位输入(X和Y)并且产生n位的输出(Z)。加法器电路的输出Z可以被耦合到两个输入的第一个输入(Y)。
加法器电路900可以包括第一n位加法器和第二n位加法器,例如正如图5或图6所推荐的那样。第一n位加法器可以被配置来对两个n位操作数(X和Y)操作,以便产生中间的n位结果W。第二n位加法器可以被配置对该中间的n位结果W以及来自第一n位加法器的进位(carryout)信号操作,以产生n位输出Z。
数量A的多个部分可以分别按顺序在多个时钟信号的周期中被提供给加法器电路900的两个输入中的第二个输入(x)。每个部分可以包括高达数量A的n个连续位。
在一些实施例中,将划分数量A所得的多个部分的数目等于c=ceiling(m/n)。因此,求模操作可以要求c个周期完成。
在一个替代的实施例中,两个部分可以在第一个周期被提供给加法器电路900,即一个部分给X输入,一个部分给Y输入。在后继的周期中,在为从输出Z反馈而保留Y输入的同时,将各部分提供给X输入。在该替代的实施例中,求模操作可以在(c-1)周期中完成。
在多个周期的最后一个之后的加法器电路900的输出可以被用于多个方面。例如,加法器电路输出可以被用来执行数据交织或解交织。或者,加法器电路输出可以被用作数据加密操作或解密操作的一部分。
在一些实施例中,所述系统还可以包括提取电路,其被配置来接收m位数量A,以便提取数量A的多个部分,并且在连续的时钟周期分别提供多个部分给第二输入(Y)。提取电路的各种实施例可以被考虑到。在一个实施例中,提取电路可以包括多路复用器、寄存器和移位单元,例如,在图1C中所推荐的那样。多路复用器51可以被配置来在第一输入端口U和第二输入端口V之间选择,其中第一输入端口U被耦合来接收m位数量A,其中第二输入端口V被耦合来接收移位单元53的输出。寄存器52可以耦合到多路复用器的输出。移位单元可以被耦合到寄存器的输出。寄存器输出的最低n个有效位可以作为输出提供给加法器电路900。
数量A可以用各种方法被划分成部分,每个部分具有至多n个位。例如,如果m是n的倍数,则它对长度为n位的每个部分可能有利。如果m不是n的倍数,则可以期望它将数量A划分为长度n的k=floor(m/n)部分和长度(m-kn)的一个部分。
在一些实施例中,所述系统还包括映射电路,其被配置来接收加法器电路900的n位输出,以对加法器电路输出操作,从而将状态2n-1映射为0,并且忽略加法器电路输出的所有其他状态。参看例如图7的映射电路709。在多个周期的最后一个之后的映射电路的输出等于A mod(2n-1)。正如上面推荐的那样,值A mod(2n-1)可以被用于多个方面。例如,值A mod(2n-1)可以用来执行数据交织或解交织。或者,值A mod(2n-1)可以用来执行数据加密或解密。
在替代的实施例中,加法器电路900本身可以包括映射电路,例如,如同图5的加法器电路Vn中的映射电路503中所图示的那样。映射电路可以被配置来接收由第二n位加法器产生的n位结果R,对该n位结果操作,以便获得n位输出Z。操作n位结果的过程可以包括将状态2n-1映射为0,并且忽略结果R的所有其他状态。因此,对于该组替代实施例,加法器电路900的输出等于A mod(2n-1)。
在一组实施例中,如图10A所图示的那样,用于计算A mod(2n-1)(其中的A是m位的数量,m是大于或等于2的整数,n是小于或等于m的正整数)的方法,可以包含如下的动作。
在1010,可以接收m位的数量A(或者由计算产生)。
在1012,可以提取数量A的一部分,其中该部分包括高达数量A的n个连续位;在1014,可以将该部分添加到寄存器的值中,其中寄存器的长度大于n位。
在1016,响应于确定寄存器值大于2n-1,可以增加寄存器的值,其中加法操作执行模2n运算;在1018,可以确定是否数量A的所有m位已经被消耗。如果否,则方法返回到1012,用于对数量A下一个部分的另一个循环(包括1012、1014和1016)的重复。因此,动作1012、1014和1016可以被重复直到数量A被取尽。
如果测试确定数量A的所有m位已经被消耗,则方法继续进行1020。
在1020,如果寄存器值等于2n-1,则寄存器值可以被设置得等于0。在1020后,寄存器值等于A mod(2n-1)。
值A mod(2n-1)可以被用于多个方面。在一个实施例中,值A mod(2n-1)可以被用于计算读地址。该读地址可以作为交织(或解交织)操作的一部分被用于从存储器介质(例如,数据缓冲器)读取数据。例如,为了交织N个数据码元的块,数据码元可以按顺序写入输入缓冲器,并且随后按交织顺序从输入缓冲器读出。在一个实施例中,用于交织顺序的读地址可以按照下面的算法计算For(A=0,A<N,A++)RdAddr=f(A),其中,f是在集合{0,1,2...,(N-2),(N-1)}上的双向单射(bijection,即一一对应的函数)。f(A)的计算可以包括A mod(2n-1)的计算。(参看,例如下列标准的部分3.1.3.1.8.1.1“Physical Layer Standard for cdma2000 Spread SpectrumSystems”,3GPP2 C.S0002-D,Versionl.0,February 13,2004。)交织的数据块可以通过信道传输。接着接收机可以从该信道接收交织的数据块(可能被噪声破坏),并且对接收的数据执行解交织操作。解交织操作可以类似地包括对于不同的A的值的重复的Amod(2n-1)的计算。
因此,可以对m位值的序列{Ak}中的每个值执行在图10A的方法实施例中显示的操作,以便产生用于数据交织(或解交织)操作的读取地址。
在另一个实施例中,值A mod(2n-1)可以被用于对数据块的数据加密(或解密)操作的部分。用于使用值A mod(2n-1)执行加密(或解密)的方法在加密领域是已知的。发射机可以通过信道(或在存储介质上存储加密的数据)发送加密的数据块。接收机接着可以从所述信道(或从存储介质)接收加密的、可能被噪声破坏的数据块,并且在所接收的块上执行解密操作。所述解密操作可以类似地包括A mod(2n-1)的计算。注意,在加密操作中使用的A的值(或多个值)不一定与在解密操作中所使用的A的值(或多个值)相同。
数量A可以用各种方法被划分为多个部分,每个部分具有至多n位。例如,如果m是n的倍数,则它对于长度n位的每个部分有利。如果m不是n的倍数,则可期望的是将数量A划分为长度n的k=floor(m/n)个部分和长度(m-kn)的一个部分。
在一些实施例中,n是在范围[2,32]中的正整数。
在一些实施例中,n是2的幂。例如,n可以等于2、4、8、16、32、64、128等。
在各个实施例中,响应于存储在存储器中的程序指令的执行,可以由处理器执行该方法。在一个实施例中,处理器和存储器可以被并入移动电话中。
在另一组实施例中,如图10B所示,用于计算A mod(2n-1)(其中的A是m位的数量,m是大于或等于2的整数,n是小于或等于m的正整数)的方法,可以包含如下的动作。
正如在1050所示,在一序列的级中可以执行若干加法操作。每个级可以包括以并联方式执行所述若干加法操作的对应子集。每个级的加法操作的子集可以接收对应的输入数据,并且产生相对应的输出数据。除了第一级外,每个级的输入数据,可以包括各级的前一级的输出数据的至少一部分。(对于可以如何从一个或多个前面的级提供给定级的输入数据的各种例子,请参看图2A-B、3A-C、4和7。)第一级的输入数据可以包括数量A的多个部分。每个部分可以包括数量A的至多n个连续位。(如果一部分是n位长,则该部分可以直接作为输入操作数提供给第一级加法操作中的一个。如果一部分小于n位长度,则该部分可以填充0以形成输入操作数。)所述数目的加法操作的每个加法操作可以包括执行第一n位加法和第二n位加法。第一n位加法对(该加法操作所属的那一级的)输入数据的两个部分操作。第二n位加法对由第一n位加法产生的进位和中间结果操作。
正如在1055所图示的那样,依赖于来自所述最后级的输出数据与值(2n-1)的比较选择来自所述各级的最后级的输出数据或值0。
在一些实施例中,所述最后级包括仅仅一个加法操作,因此该最后级的输出数据包括该一个加法操作的输出操作数。
在一些实施例中,例如,如图10C所示,所述方法可以包括在执行动作1050和1055之后的加法动作。
在1057,读取地址可以利用所选择的值产生。
在1059,数据码元可以利用读取地址从数据缓冲器读取(即访问)。
而且,在一个实施例中,m位数量A可以通过各值的范围变化,并且动作1050至1059可以对于(在该值的范围中的)m位数量A的每个值执行,以便对存储在数据缓冲器中的数据码元执行交织操作(或解交织操作)。
在替换的实施例中,动作1050和1055可以作为对数据块的加密操作或解密操作执行。
图11是表示计算机系统1082的一组实施例的框图。计算机系统1082可以包括耦合到主机总线1162的至少一个中央处理单元CPU 1160(即处理器)。该CPU 1160可以是各种类型中的任何一个,包括但不限于x86处理器、PowerPC处理器、来自RISC处理器的SPARC系列的CPU,以及其它。存储器介质,典型地包括半导体RAM,并且在此称作为主存储器1166,其可以利用存储器控制器1164耦合到主机总线1162。主存储器1166可以存储可操作来执行在此所述的各种方法实施例的任何一个或全部或任何的部分。主存储器还可以存储操作系统以及用于计算机系统的操作的其他软件。
主机总线1162可以通过总线控制器1168或总线桥逻辑耦合到扩展或输入/输出总线1170。在一些实施例中,扩展总线1170可以包括用于诸如视频卡1180、硬盘驱动器1182、存储器件1190(如CD-ROM驱动器、磁带驱动器、软盘等)和网络接口1122的各种器件的插槽。视频卡1180可以耦合到诸如监视器、投影仪或头戴显示器之类的显示器件。网络接口1122(例如,以太网器件)可以被用来通过网络与其它计算机通信。
计算机系统1082还可以包括一个或多个I/O设备,如鼠标、键盘、一个或多个麦克风以及一个或多个扬声器、触摸敏感垫等。
目标在于用作服务器计算机的计算机系统1082的实施例可以比目标在于用作客户机计算机的实施例更丰富地赋予处理器能力(例如,具有多个处理器)、存储器容量和网络接入带宽。客户机计算机可以包括鼠标、键盘、扬声器和视频卡(或图形加速器),而服务器计算机不一定包括这些项目。
上面描述了各种实施例,用来以使用单个加法器电路的顺序方式或使用加法器树的并联方式计算A mod(2n-1)。本发明考虑了这些实施例的组合,其中值A mod(2n-1)部分地用顺序方式计算,部分地以并联方式计算。例如,如果数量A的部分的数目c大于输入一加法器树的数目nI,则该c个部分可以按组划分,例如至多(nI-1)大小的组。所述组可以在连续周期被提供给加法器树。加法器树的输出可以被耦合到nI个加法器树输入中的一个。剩余的nI-1个输入可以被配置来接收每个组的(nI-1)个部分。
各种逻辑实现的任何一个可以被用在如上所述的实施例的加法器电路和/或所述树结构中。
在此所公开的各种方法实施例的任何一个(或其任何的组合或其部分)可以利用程序指令实现。程序指令可以被存储在各种存储器介质的任何一个中(上)。存储器介质是为信息的存储配置的介质。存储器介质的例子包括各种类型的磁介质(例如,磁带或磁盘);各种类型的光学介质(例如,CD-ROM);各种类型的半导体RAM和ROM;基于电荷或其他物理量的存储的各种介质等。
而且,考虑了包括存储器和处理器的各种实施例,其中所述存储器被配置来存储程序指令,而处理器被配置来读取和执行来自该存储器的程序指令。在各种实施例中,程序指令对在此描述的方法实施例(或其组合,或其部分)的相对应的方法编码。
各种实施例还可以包括在计算机可访问的介质上接收、发送或存储按照前述的描述可实现的程序指令和/或数据。总的来说,计算机可访问介质可以包括存储介质或存储器介质,如磁或光学介质,例如,盘或CD-ROM、易失性或非易失性介质,如RAM(例如,SDRAM、DDR SDRAM、RDRAM、SRAM等)、ROM等以及传输介质或通过诸如网络和/或无线链路的通信介质传输的信号,如电、电磁或数字信号。
在附图中所图示以及在此描述的各种方法表示了各方法的示范性实施例。各方法可以用软件、硬件或其结合实现。各方法动作的顺序可以变化,并且可以添加、重新排序、组合、省略、修改各动作等。
受益于本公开的本领域技术人员明白,可以进行各种修改和变化。它意味着本发明涵盖所有这样的修改和变化,相应地,在说明而不是限制的意义上考虑上面的描述。
权利要求
1.一种用于计算Amod(2n-1)的系统,其中的A是m位的数量,其中的m是大于或等于2的整数,其中的n是小于或等于m的正整数,所述系统包括多个加法器电路,其中,每个加法器电路被配置来操作两个n位的操作数,以便产生n位的输出,其中多个加法器电路被耦合以形成树结构,其中数量A被划分为多个部分,其中每个部分包括高达数量A的n个连续位,其中每个部分被精确地提供给加法器电路中的一个,以便确定该加法器电路的两个n位操作数中的一个,其中每个加法器电路包括第一n位加法器,其被配置来对两个n位操作数操作,以便产生中间的n位结果;以及第二n位加法器,其被配置对该中间的n位结果以及来自第一n位加法器的进位信号操作,以产生n位输出。
2.如权利要求1所述的系统,还包括映射电路,其被配置来从加法器电路中的第一个接收输出,其中所述第一加法器电路对应于树结构的根,其中所述映射电路被配置来对第一加法器输出操作,以将状态(2n-1)映射为0,并且忽略第一加法器输出的所有其他状态。
3.如权利要求2所述的系统,其中所述映射电路包括比较单元和多路复用器,其中比较单元被配置来确定所述第一加法器输出是否等于2n-1,并且响应于确定所述第一加法器输出等于2n-1,而确证一控制信号,其中所述多路复用器被配置来基于所述控制信号在所述值0和所述第一加法器输出之间选择。
4.如权利要求1所述的系统,其中(a)m是n的倍数,并且每个部分长度为n位;或(b)m不是n的倍数,除了一个部分之外的每个部分长度为n位,而该除外的部分具有等于(m-zn)的长度,其中z是正整数。
5.如权利要求1所述的系统,其中所述树结构具有等于m/n的向上取整的以2为底的向上取整的级别的数目。
6.一种用于计算Amod(2n-1)的系统,其中的A是m位的数量,其中的m是大于或等于2的整数,其中的n是小于或等于m的正整数,所述系统包括加法器电路,其中所述加法器电路被配置来操作两个n位的操作数,以便产生n位输出,其中所述加法器电路的输出被耦合到两个输入的第一个,其中所述加法器电路包括第一n位加法器,其被配置来对两个n位操作数操作,以便产生中间的n位结果;以及第二n位加法器,其被配置对该中间的n位结果以及来自第一n位加法器的进位信号操作,以产生n位输出;其中该数量A的多个部分在时钟信号的各自的多个周期被提供给两个输入的第二个,其中每个部分包括高达数量A的连续n位。
7.如权利要求6所述的系统,还包括提取电路,其被配置来接收m位数量A,以提取数量A的多个部分,并且在连续的时钟周期分别提供该多个部分给加法器电路的第二个输入。
8.如权利要求7所述的系统,其中所述提取电路包括多路复用器、寄存器和移位单元,其中所述多路复用器被配置来在第一输入端口和第二输入端口之间选择,其中第一输入端口被耦合来接收m位数量A,其中所述第二输入端口被耦合来接收移位单元的输出,其中所述寄存器被耦合到该多路复用器的输出,其中该移位单元被耦合到该寄存器的输出。
9.如权利要求6所述的系统,其中(a)m是n的倍数,并且每个部分长度为n位;或(b)m不是n的倍数,除了一个部分之外的每个部分长度为n位,而该除外的部分具有等于(m-zn)的长度,其中z是正整数。
10.如权利要求6所述的系统,其中所述多个部分的数目c等于m/n的向上取整。
11.如权利要求10所述的系统,其中所述系统被配置来在所述c个周期完成Amod(2n-1)计算。
12.如权利要求6所述的系统,还包括映射电路,其被配置来从加法器电路接收n位输出,以对该加法器输出操作,从而将状态(2n-1)映射为0,并且忽略所述加法器输出的所有其他状态。
13.如权利要求6所述的系统,其中所述加法器电路还包括映射电路,其被配置来接收由第二n位加法器产生的n位结果,以对该n位结果操作,从而获得n位输出,其中所述操作包括将状态(2n-1)映射为0,并且忽略所述加法器输出的所有其他状态。其中所述数量A的多个部分在时钟信号的各自的多个周期被提供给两个输入的第二个,其中每个部分包括高达数量A的n个连续位。
14.一种用于计算Amod(2n-1)的方法,其中的A是m位的数量,其中的m是大于或等于2的整数,其中的n是小于或等于m的正整数,所述方法包括(a)接收m位的数量A;(b)提取数量A的一部分,其中该部分包括高达数量A的n个连续位;(c)将该部分添加到寄存器的值中;(d)如果该寄存器的值大于2n-1,则将寄存器的值加1,其中对所述添加1的加法执行模2n运算;(e)重复(b)、(c)和(d),直到数量A被取尽;以及(f)如果该寄存器的值等于2n-1,则将所述寄存器值设置为等于0。
15.如权利要求14所述的方法,还包括(g)利用寄存器值产生读取地址;以及(h)利用读取地址从数据缓冲器读取数据码元。
16.如权利要求15所述的方法,还包括通过值的范围,变化m位数量A;以及对于m位数量A的每个值,执行(a)至(h),以便对存储在数据缓冲器中的数据码元执行交织操作或解交织操作。
17.如权利要求14所述的方法,其中将(a)至(f)作为有关数据块的加密操作或解密操作的一部分来执行。
18.如权利要求14所述的方法,其中m是n的倍数,其中在(b)中提取的部分的长度为n位。
19.一种用于计算Amod(2n-1)的方法,其中的A是m位的数量,其中的m是大于或等于2的整数,其中的n是小于或等于m的正整数,所述方法包括(a)在一系列级中执行多个加法操作,其中每个级可以包括以并行方式执行所述若干加法操作的对应子集,其中每个级的加法操作的子集接收对应的输入数据并且产生对应的输出数据,其中除了第一级外,每个级的输入数据包括所述级的前一级的输出数据的至少一部分,其中所述第一级的输入数据包括数量A的多个部分,其中每个部分包括数量A的至多n个连续位,其中该若干加法操作的每个包括执行第一n位加法和第二n位加法,其中第二n位加法对由第一n位加法产生的中间结果和进位操作;(b)依赖于对来自最后级的输出数据和值(2n-1)的比较,选择来自最后级的输出数据或值0,其中所选择的值等于A mod(2n-1)。
20.如权利要求19所述的方法,其中所述级中不是第一级的一个级的输入数据,包括数量A的附加部分,其中所述附加部分不包括在所述多个部分中。
21.如权利要求19所述的方法,还包括将数量A的多个部分分布到所述第一级的附加操作的子集。
22.如权利要求19所述的方法,还包括(c)利用所选择的值产生读取地址;以及(d)利用读取地址从数据缓冲器读取数据码元。
23.如权利要求22所述的方法,还包括通过值的范围,变化m位数量A;以及对于m位数量A的每个值,执行(a)至(d),以便对存储在数据缓冲器中的数据码元执行交织操作或解交织操作。
24.如权利要求19所述的方法,其中将(a)至(b)作为有关数据块的加密操作或解密操作的一部分来执行。
全文摘要
一种用于计算A mod(文档编号G06F7/72GK101021777SQ200710087870
公开日2007年8月22日 申请日期2007年3月21日 优先权日2006年7月7日
发明者沈强 申请人:开曼群岛威睿电通股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1