全加器模块和使用该全加器模块的乘法器装置的制作方法

文档序号:6568790阅读:439来源:国知局
专利名称:全加器模块和使用该全加器模块的乘法器装置的制作方法
技术领域
本发明涉及半导体集成电路的带符号乘法运算,具体地涉及用于诸如现场可编程门阵列(FPGA)之类的可编程硬件的基于全加器的 阵列乘法器。
背景技术
乘法是信号处理中的最通常的运算。设计快速和面积有效的乘 法器是一个相当大的研究课题。现在己经有了用于专用集成电路 (ASIC)的非常紧凑和高速的乘法器,其可以处理带符号数和无符号 数。然而,在现有的诸如现场可编程门阵列(FPGA)之类的可编程 硬件解决方案中高效率地实现乘法仍然是一个挑战。更加具体地,当 公知的乘法算法被映射到FPGA上的可编程逻辑块上时,需要大量的 逻辑块来实现一个n位乘法。这是因为FPGA中的逻辑块是被设计为 通用的,以便他们可以实现任意的随机功能,而不是专门适用于实现 乘法。另外一个挑战是能够在FPGA上直接执行二进制补码乘法(或者 带符号乘法)。传统上,利用Booth记录技术来执行带符号乘法,该 技术是由Booth于1951年在"A Signed Binary Multiplication Technique ,, , Quarterly Journal of Mechanics and Applied Mathematics, Vol IV, part2中提出的。当专用硬件是为此目的构 成时,该技术运转效率很高。然而,公知的是,如果硬件不直接实现 Booth乘法,如果通用可编程块(像FPGA中的)被用于执行Booth 乘法,由于需要执行很多的条件测试、分支和算术移位,就有了面积 开销。在可重配置装置中,执行带符号乘法的传统方式是,首先将带符号数转换为无符号数,例如,通过阵列乘法,执行无符号数乘法, 然后,将结果再次转换为适当的带符号表示(二进制补码)。虽然这 种方法提供了部分的复用性,但是它要求另外的逻辑块来执行转换和 再转换步骤,因此其实现会导致面积和速度的损失。由于阵列乘法器通过一系列阵列方式的加法来实现乘法,他们非常适用于FPGA。由于在FPGA中的大部分的逻辑块支持加法,所以 阵列乘法器的实现非常简单。两种通用类型的阵列乘法器作为进位脉动阵列乘法器(在 "Computer Arithmetic: Principles, Architecture, and Design" , K. Hwang, John Wiley and Sons, New York, 1979中被 描述)禾口 Pezaris阵歹U乘法器(在"A Universal Pezaris Array Multiplier Generator for S醒-Based FPGAs" , J. Stohman & E. Barke, IEEE International Conference on Computer Design, 1997, Pages 489-495中被描述)为人们所知。阵列乘法器的通常的乘法方案包含两个单元第一个实现部分 乘积(被加数),第二个执行被加数求和。在进位脉动乘法器中,进 位信号水平地前进,而在保留进位乘法器中,进位信号呈对角线状前 进。通常,因为保留进位加法器本质上比进位脉动加法器快,因此 Pezaris保留进位阵列乘法器由于其规则的路由模式和速度而更容 易受到偏爱。为了直接执行二进制补码运算,Pezaris保留进位乘法器的求和 单元是基于四个不同的全加器类型(如更进一步的详细描述)。实际上,Pezaris阵列乘法器不涉及改变FPGA的逻辑块结构以 更好支持带符号乘法,而是将Pezaris阵列乘法器映射到现有FPGA 中从而再次导致面积和速度的损失。很多商用FPGA尝试通过在他们的芯片内部提供专用于执行宽乘 法(例如,18位X18位,带符号和无符号)的硬件宏来解决这个问 题。这些硬件宏不能用于执行任何其他类型的操作,而且只在阵列中 一定数目的固定位置处可用。因此,希望在FPGA的逻辑块结构中实 现一种面积有效的硬件单元,其不但可以用于带符号(和无符号)乘法,还可以用于执行加法和减法。 发明内容按照本发明的一个方面,提供了一种包含全加器的全加器模块, 其中全加器包括多个输入和输出端、和发生单元以及进位发生单元, 其中,进位发生单元包括可编程反相器,其被用来响应于施加到一个 输入端的控制信号而有选择地对进位发生单元的一个输入位进行反 相。从而,提供了一种支持带符号乘法的面积有效的逻辑块。该逻 辑块保持它的可编程性质,并可以执行其他所有操作。由于涉及的硬件扩展最小,本发明可以在阵列乘法器上更有效 地实现直接带符号乘法。通过避免将二进制补码数据转换为他们的无符号等价数据、在 无符号域进行乘、并再转换回二进制补码表示形式的需要,本发明可以减少上至35°/。的逻辑块数量。本发明适用于阵列乘法器形式的带符号乘法的实现。它特别适 用于在FPGA逻辑块或脉动阵列上执行带符号乘法。从而,本发明还涉及在一个阵列乘法器中应用多个本发明的全 加器模块。多个全加器模块可以被布置在一个互连阵列中作为Pezaris保 留进位阵列乘法器,并且响应于施加到各个全加器模块的控制信号来 选择由各个全加器模型执行的加法类型。可替换地,他们可以被布置 在一个互连阵列中作为进位脉动阵列乘法器,并且响应于施加到各个 全加器模块的控制信号来选择由各个全加器模块执行的加法类型。


参照下列的图表,现在对本发明的实施例仅以示例的方式进行 描述,其中图l是图示应用在传统阵列乘法器中的四种类型的全加器的表; 图2a是传统全加器的传统进位发生单元的示意图;图2b是按照本发明实施例的进位发生单元的示意图; 图3是按照本发明另一个实施例的全加器模型的示意图; 图4是按照本发明另一个实施例的阵列乘法器的示意图; 图5是按照本发明另一个实施例的阵列乘法器的示意图。
具体实施方式
通过描述本发明的多个实施例,现在对本发明进行更进一步的 解释。当本发明容许多种形式的实施例时,在图中描述和示出了当前 的优化实施例。提供这些实施例,以便该公开是彻底的和完全的,并 向本领域的技术人员完全传达本发明的范围。文中同样的参考号表示 同样的元件。传统全加器在本领域是已知的,并根据三个Boolean输入X、 Y、 和进位输入(Z)产生一个和(S)和一个进位(C)。而且,在传统 全加器中,没有对输入或输出的任何一个迸行转换。可以用等式(1) 来描述传统全加器的和及进位输出C = ^¥^)y + (S Z)Z; (1)传统进位脉动阵列乘法器和Pezaris保留进位阵列乘法器包括 一个全加器阵列,全加器实现四种加法类型即类型0、类型l、类型 2和类型3中的一种。参照图l,示出了一个图示应用在传统阵列乘 法器中的四种类型全加器的表。类型0全加器根据三个Boolean输入X、 Y、和进位输入(Z)产 生一个和(S)输出和一个进位(C)输出。没有一个输入或输出被反 相。从而,类型O全加器等价于传统全加器。类型1全加器也根据三个Boolean输入X、 Y、和Z (进位输入) 产生一个和(S)输出和一个进位(C)输出。然而,Z (进位)输入 以及和输出(S)都被反相了。在类型2全加器中,根据三个Boolean输入X、 Y、和Z(进位 输入)产生一个和(S)输出和一个进位(C)输出。输入X、 Y和进 位(C)输出被反相。类型3全加器也根据三个Boolean输入X、 Y、和Z(进位输入) 产生一个和(S)输出和一个进位(C)输出。所有的输入和输出被反 相。因此,对于类型0和类型3全加器,和(S)及进位(C)输出 的表达式可以被描述为式(2):C = (S Z)r + (,Z)Z; (2) 另外,对于类型1和类型2全加器,和(S)及进位(C)输出 的表达式可以被描述为式(3)c = os z)y+(sez)5; (3)从上述等式中可以看到,类型1和类型2的进位(C)输出和传 统全加器的进位(C)输出不同。参照图2a,示出了传统全加器的整体由20指示的传统进位发生 单元(CGU)的示意图。该CGU包括一个2 : 1多路复用器22,该多 路复用器具有分别连接到第一 Boolean输入(Y)和第二 Boolean输 入(Z)的第一和第二信号端。多路复用器22的选择端连接到一个可 以被式子S④Z描述的信号。在多路复用器22的选择端上的电势是高 电平(1)时,多路复用器22选择第二 Boolean输入(Z),在多路复 用器22的选择端上的电势是低电平(0)时,多路复用器22选择第一 Boolean输入(Y)。多路复用器22所选择的信号作为进位信号(C) 输出。传统CGU20产生由式(1)和式(2)描述的进位信号(C),并 从而可以在类型0和类型3的全加器中被实现。然而,发明者的理解 是,通过对第二 Boolean输入(Z)进行反相,传统CGU还可以被用 于产生类型1和类型2全加器的进位(C)信号。参照图2b,示出了按照本发明一个实施例的整体由24指示的CGU 的示意图。CGU 24包括一个双输入XOR逻辑门26和一个2 : 1多路 复用器28。双输入XOR逻辑门26的一个输入连接到Boolean输入(Z),其另一个输入端连接到控制信号(Ctrl)。当控制信号(Ctrl)的电 势是高电平(1)时,XOR逻辑门26通过输出Boolean输入(Z)的 补码,作为一个可编程反相器。可替换地,可编程反相器可以用任何合适布置的部件,例如具 有这样功能以及它的补码作为输入的多路复用器来实现,并可以被编 程,以通过选择信号来选择输入中的任意一个。多路复用器28有分别连接到第二 Boolean输入(Y)和双输入 XOR逻辑门26的输出的第一信号端和第二信号端。多路复用器28的选择端连接到可以被式子sez描述的信号。多路复用器28在多路复用器22的选择端的电势是高电平(1)时,选择双输入XOR逻辑门26 的输出,在多路复用器22的选择端的电势是低电平(0)时,选择第 二 Boolean输入(Y)。由多路复用器28选择的信号是作为进位信号 (C)输出的。当控制信号(Ctrl)处于低电平(0)时,双输入XOR逻辑门 26只是将Boolean信号(Z)直接传递给多路复用器28的第二信号端。 从而,如上所述,多路复用器28产生如式(1)和式(2)所描述的进 位信号(C)。当控制信号(Ctrl)处于高电平(1)时,双输入XOR逻辑门 26作为可编程反相器,将Boolean信号(Z)的补码输入到多路复用 器28的第二信号端。多路复用器28因此产生如式(3)所描述的进 位信号(C)。从而,CGU24可以用于产生四种类型全加器(类型0、类型l、 类型2、类型3)的进位信号(C),当控制信号(Ctrl)是高电平(1) 时对应于类型l和类型2加法,当它是低电平(0)时对应于类型0和 类型3加法。参照图3,示出了按照本发明的全加器模块的示意图,全加器整 体由30指示。全加器30包括第一到第四输入端32、 34、 36、 38, 第一和第二输出端40、 42,和产生单元(SGU) 44以及CGU 24。SGU 44是应用在传统全加器中的传统SGU。 SGU 44包括第一和 第二双输入端XOR逻辑门46、 48。第一 XOR门46有连接到第一输入端32的一个输入和连接到第二输入端34的另一个输入。第二 XOR 门48的一个输入连接到第一个XOR门46的输出,另一个输入连接到 第三输入端36。第二XOR逻辑门48的输出连接到第一输出端40。从 而,SGU44产生如式(1)所描述的和(S),并将它输出到第一输出 端40。CGU 24如上所述。X0R门26有分别连接到第三输入端36的一 个输入和连接到第四输入端38的另一输入。多路复用器28有分别连 接到第二输入端34和双输入X0R逻辑门26的输入端的第一和第二信 号端。多路复用器28的选择端连接到一个可以被式子Z④:r(J0Z)描 述的信号,多路复用器28的选择端被连接至SGU 44的第一 X0R门 46的输出。由多路复用器28选择的信号连接至第二输出端42。从而, 可以用式子(4)来描述由CGU 24产生的进位信号(C):C = (S @ Z)F + (S Z)(Z O/) (4)如上所述,因此,CGU24可以被用来产生四种全加器类型(类型 0、类型1、类型2、类型3)进位信号(C),当控制信号(Ctrl)是 高电平(1)时对应于类型1和类型2加法,当它是低电平(0)时对 应于类型0和类型3加法。因此,全加器30可以被用于四种类型加法的任何一种(类型0、 类型l、类型2、类型3),按照控制信号(Ctrl)选择的加法类型被施 加于第四输入端。参照图4,示出了按照本发明的阵列乘法器的示意图,阵列乘法 器整体由400指示。可以应用在基于SRAM的FPGA的逻辑块中的阵 列乘法器400包括多个在互连阵列中被修改的按照本发明的全加器, 其被安排来根据输入数据计算乘积项。两个5位二进制补码数, A-a^a^ao和B= Nbsbzt^bo具有式(5)描述的值,其中,34和1 4是 负权重<formula>formula see original document page 10</formula><formula>formula see original document page 10</formula>(5)通过利用阵列乘法器400 ,可以计算他们的乘积,P = P9P8P7P6P5P4P3P2P^0,该阵列乘法器400是全加法器模块的互连阵列,其构成Pezaris保留进位阵列乘法器。如上所述,每一个全加器具有修改的CGU24和控制信号(Ctrl) 输入,使得他们可以根据控制信号(Ctrl)选择加法的类型以执行四 种类型加法中的任何一种(类型0、类型l、类型2、类型3)。施加到全加器模块410的控制信号的电势被安排为低电平(O), 使全加器模块410充当类型0全加器。施加到全加器模块420的控制信号的电势被安排为高电平(l), 使全加器模块420充当类型1全加器。施加到全加器模块430的控制信号的电势被安排为高电平(l), 使全加器模块430充当类型2全加器。施加到全加器模块440的控制信号的电势被安排为低电平(O), 使全加器模块440充当类型3全加器。通过专用的发生器,在加法器初始化期间产生控制信号。由于 当初始化加法器、减法器或无符号乘法器时,对于控制信号的产生, 这个专用的发生器是完全相同的,所以它并不限制灵活性。可替换地,如图5所示,互连阵列可以构成进位脉动阵列乘法 器500。在本领域中已知,正操作数和负操作数都可以在需要时进行适 当的符号扩展,该符号扩展不被本发明影响。例如,当7 (0111)被 -8 ( 1000)乘,结果应当是-56 ( 11001000)。当使用一个8位X8 位乘法器,必须对7和-8进行符号扩展,于是7被表示为00000111, -8被表示为11111000。从得到的16位结果来看,只需要考虑低8 位。阵列乘法器执行带符号乘法,与阵列乘法器的现有技术实现不 同的是,已经利用算法的细节来修改在FPGA逻辑块内部的CGU。合 并了推荐的进位发生单元(CGU)的逻辑块在本质上是同质的。这种 一致性能够简化FPGA的实现。当应用在基于SRAM的FPGA的逻辑块的内部时,查表(是一组存储器单元)可以被用于存储期望功能的真值表,例如,SGU 44的 第一个X0R门46或者已修改的CGU 24的X0R门26。在CGU 24中添加X0R门26使每个CGU略有增大,但这个面积 的增加比在使用分离的逻辑块对带符号乘法的结果进行转换和求反 时所需要的面积增加小的多。研究显示,与无符号乘法和加法相比,本发明实现了大约35% 的逻辑块面积节省。在不损失通用性的情况下,推荐的CGU更有效地执行带符号乘法。总的来说,本发明显示,通过在传统的无符号阵列乘法器的进 位发生单元中增加一个单独的异或门,能够实现直接二进制补码带符 号乘法。这个结果适用于保留进位乘法器和进位脉动乘法器。应当注意的是,上文提及的实施例意在说明而不是限制本发明, 本领域的技术人员在不脱离权利要求范围的情况下可以设计很多替 代实施例。例如,任何适当构造的诸如SRAM块之类的设备可以向全加器模 块提供控制信号。
权利要求
1.一种全加器模块(30),其包括全加器,其包括多个输入和输出端、和发生单元以及进位发生单元,其中,进位发生单元包括一个可编程反相器(26),其被用来响应于施加到一个输入端的控制信号而有选择地对进位发生单元的一个输入位进行反相。
2. 按照权利要求1所述的全加器模块(30),其中,所述的可 编程反相器(26)是X0R逻辑门。
3. 按照权利要求1所述的全加器模块(30),其中,所述的可 编程反相器是多路复用器,所述多路复用器使它的输入信号连接到一 个信号和该信号的补码,并响应于控制信号来输出两个输入信号中的一个
4. 按照之前任何一项权利要求所述的全加器模块(30),其中, 所述的可编程反相器(26)被用于在全加器模块执行类型1或类型2 加法时对进位位进行反相。
5. 按照之前任何一项权利要求所述的全加器模块(30),其中, 控制信号是在全加器初始化期间产生的。
6. 按照权利要求5所述的全加器模块(30),其中,由专用发 生器产生所述的控制信号。
7. —种阵列乘法器,其包括多个按照权利要求1-6中任何一项 所述的全加器模块(30),其中,多个全加器模块作为Pezaris保留进位乘法器(400)被布置在一个互连阵列中;以及响应于施加到各个全加器模块上的控制信号(Ctrl)来选择由 各个全加器模块执行的加法的类型。
8. —种阵列乘法器,其包括多个按照权利要求1-6中任何一项 所述的全加器模块(30),其中,多个全加器模块作为进位脉动阵列乘法器(500)被布置在一个 互连阵列中;以及响应于施加到各个全加器模块上控制信号(Ctrl)来选择由各 个全加器模块执行的加法的类型。
全文摘要
一种全加器模块(30),其包括包含多个输入端和输出端的全加器、和发生单元以及进位发生单元。进位发生单元包括一个可编程反相器,响应于施加到一个输入端的控制信号,该反相器被用来有选择地对进位发生单元的一个输入位进行反相。全加器模块(30)提供了面积有效的逻辑块,该面积有效的逻辑块支持带符号乘法,该逻辑块保持它的可编程性质,可以执行所有其他它被用于执行的操作。
文档编号G06F7/48GK101258464SQ200680032355
公开日2008年9月3日 申请日期2006年9月4日 优先权日2005年9月5日
发明者罗西尼·克里希南 申请人:Nxp股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1