CN117667011A - 一种数字信号处理模块中的后加器 - Google Patents
一种数字信号处理模块中的后加器 Download PDFInfo
- Publication number
- CN117667011A CN117667011A CN202311715423.7A CN202311715423A CN117667011A CN 117667011 A CN117667011 A CN 117667011A CN 202311715423 A CN202311715423 A CN 202311715423A CN 117667011 A CN117667011 A CN 117667011A
- Authority
- CN
- China
- Prior art keywords
- output
- data
- adder
- post
- bit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000012545 processing Methods 0.000 title claims abstract description 60
- 238000009825 accumulation Methods 0.000 claims description 7
- 230000006870 function Effects 0.000 abstract description 26
- 238000010586 diagram Methods 0.000 description 12
- 238000000034 method Methods 0.000 description 7
- 230000003111 delayed effect Effects 0.000 description 6
- 230000003068 static effect Effects 0.000 description 6
- 230000009471 action Effects 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 238000013507 mapping Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000000295 complement effect Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 101100384355 Mus musculus Ctnnbip1 gene Proteins 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000004804 winding Methods 0.000 description 1
Landscapes
- Complex Calculations (AREA)
Abstract
本申请实施例提供一种数字信号处理模块中的后加器,后加器包括:运算器,分别与数据源选择器、进位处理单元、比较器单元和输出数据选择器连接;所述运算器被配置为对至少来自进位处理单元,数据源选择器以及所述乘法器的部分和输出执行一个或多个数学或逻辑运算;数据源选择器,与运算器以及比较器单元连接,用于从若干数据源中选择一路输出到运算器;所述进位处理单元,输出前一级运算器的进位端到所述运算器;所述比较器单元,用于确定至少一组输入端口的输入数据是否相等;所述输出数据选择器,用于输出至少一个输出结果。实现了可以支持3输入56位定点有符号加/减法器,56位逻辑运算器,56位比较器,4个14位独立的比较器功能。
Description
技术领域
本发明涉及现场可编程逻辑器件技术领域。尤其涉及一种数字信号处理模块中的后加器。
背景技术
现场可编程逻辑(Field Programmable Gate Array,简称FPGA)器件是一种由可编程逻辑单元,数据存储器RAM块,硬件乘法器块,输入输出IO单元和其他硬核专用集成电路(Appl icat ion Specific Integrated Circuit,ASIC)单元所组成的集成电路器件,具有硬件可编程的重要特性,广泛应用于通信,数据中心,服务器,视频图像,工业控制等领域。
现有的可编程器件的数字信号处理模块中的后加器具有有符号定点数学加减法与逻辑运算功能,与可编程逻辑资源实现的功能等价,满足各行各业对于数字信号处理的需要。为了满足常用FPGA数字信号处理的需求,使ASIC化的后加器具有更好的性能、功耗和收益成本,需要设计新的后加器结构。
发明内容
本申请提出一种数字信号处理模块中的后加器。可以满足上述需求。后加器(200)包括:运算器(300),分别与数据源选择器(400)、进位处理单元(600)、比较器单元(500)和输出数据选择器(700)连接;所述运算器(300)被配置为对至少来自进位处理单元(600),数据源选择器(400)以及所述乘法器的部分和输出执行一个或多个数学或逻辑运算;数据源选择器(400),与运算器(300)以及比较器单元(500)连接,用于从若干数据源中选择一路输出到运算器(300);述进位处理单元(600),输出前一级运算器(300)的进位端输出到所述运算器(300);所述比较器单元(500),用于确定至少一组输入端口的输入数据是否相等;所述输出数据选择器(700),用于输出至少一个输出结果。
在一个实施例中,所述数字信号处理模块(100)还包括控制信号模块,所述控制信号模块耦合到所述后加器模块(200),以用于动态地控制所述后加器模块(200)的操作。
在一个实施例中,所述运算器(300)包括数据选择模块,第一加法器组、第二加法器组和输出模块;所述第一加法器组被配置为对所述数据选择模块的的若干输出进行逻辑运算;所述第二加法器组被配置为将所述逻辑运算的结果作为加数和被加数进行数学运算;所述数据选择模块根据所述逻辑运算或者数学运算,选择相应的数据耦合到所述第一加法器组。
在一个实施例中,所述运算器(300)的第二加法器组还被配置为将所述进位处理单元(600)的输出作为所述被加数的最低位参与所述数学运算。
在一个实施例中,所述数据源选择器(400)包括:移位单元,被配置为对所述乘法器的部分积和前一个级联的后加器模块(200)的数据级联输出端进行移位操作;多路选择器单元,被配置为对所述乘法器的部分积或者数据级联输出端进行动态选择,以输出到所述运算器(300)。
在一个实施例中,所述数据源选择器(400)还包括用户侧数据,所述用户侧数据通过寄存器选择后耦合到所述比较器单元(500)。
在一个实施例中,所述比较器(500)被配置为对所述数据源选择器(400)中通过寄存器选择的用户侧数据以及所述运算器(300)的数学运算结果进行比较;所述比较器(500)被配置为对所述乘法器的部分乘积结果进行输出;所述比较器(500)被配置为输出所述乘法器乘积结果的溢出标志位;所述比较器(500)还被配置为将其输入数据的位宽划分为若干段,分别对其中每一段进行比较。
在一个实施例中,所述进位处理单元(600)还包括来自可动态控制数据端口的输入,所述可动态控制数据端口被配置为当所述比较器(500)输溢出标志位时,实现所述运算器(300)输出算术运算结果的四舍五入;所述进位处理单元还包括以下至少一项:至少两个数据选择器和/或至少一个异或门。
在一个实施例中,所述输出数据选择器(700)输出级联控制信号,以用于相邻的后加器(200)实现级联的加法/减法/累加操作;所述输出数据选择器(700)还被配置为输出所述乘法器的结果/所述运算器(300)算数运算的结果/逻辑运算结果;其中所述乘法器包括2个18*18的有符号定点乘法器以及4个10*10的有符号定点乘法器。
在一个实施例中,所述逻辑运算包括以下至少一项:与门、与非门、或门、或非门、异或门和/或异或非门。
本申请实施例通过灵活后加器功能,满足常用FPGA数字信号处理的需求,使ASIC化的后加器具有更好的性能,功耗和成本收益。本申请实施例可以实现3输入56位加减法器,且结果可以不走普通FPGA的绕线资源进行转线级联,显著提升FPGA数字信号处理的性能,通过56位UFC数据源选择器的灵活动态选择,可以选择上一级的后加器结果,也可以选择自己的输出实现累加或者累减;可以实现2输入56位常用逻辑运算(ALU运算器),可显著改善FPGA中查找表级数多的关键路径延时,提升FPGA逻辑fmax性能(最高频率性能);可以实现2输入56位数据比较是否一致的功能;可以实现4个2输入14位数据比较是否一致功能;可以判断加减法器的结果是否上溢出或者下溢出;可以实现2个18*18乘法器功能的输出或者4个10*10结果的输出;可以实现多个相邻后加器级联成更大位宽的加减法器的功能。数字信号处理模块中的后加器输入有3个数据输入端口,分别为MR_L[55:0],MR_U[55:0],U[55:0];1个数据级联输入端口R_CAS_IN[55:0];1个来自FPGA用户侧可动态控制的数据端口RNDM;2个级联进位端口:前级56位加法器进位端口R_CARRY_CAS_IN和前级扩展进位端口R_ECARRY_CAS_IN;数据结果输出通过R[72:0]端口输出最终后加器运算结果,其中R[72:56]端口只在18*18和10*10独立输出时用到;通过R_CAS_OUT[55:0]输出级联结果给下一级后加器;通过Z01_18[3:0]输出4个10*10的第19位结果或者4个2输入14位比较器结果;通过MATCH,underflow,Imatch,overflow端口输出比较器结果或者4个10*10的第20位结果。满足FPGA数字信号处理的需求,提升FPGA的处理速度,降低FPGA软逻辑的功耗,降低FPGA的资源消耗,降低成本。
附图说明
为了更清楚地说明本申请实施例或一种可能的实现中的技术方案,下面将对实施例或一种可能的实现中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些图获得其他的附图。
图1示出本申请实施例提供的数字信号处理模块的结构示意图;
图2示出本申请实施例提供的后加器200的结构示意图;
图3示出本申请实施例提供的运算器300的结构示意图;
图4示出本申请实施例提供的数据源选择器400的结构示意图;
图5示出本申请实施例提供的输出数据选择器700的结构示意图;
图6示出本申请实施例提供的进位处理单元600的结构示意图;
图7示出本申请实施例提供的比较器500的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。以下实施例仅用于更加清楚地说明本申请的技术方案,而不能以此来限制本申请的保护范围。
需要说明的是,本申请中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。本申请实施例的说明书和权利要求书中的术语“第一”和“第二”等是用于区别不同的对象,而不是用于描述对象的特定顺序。例如,第一映射关系和第二映射关系等是用于区别不同的映射关系,而不是用于描述目标对象的特定顺序。在本申请实施例中,“示例性的”、“举例来说”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”、“举例来说”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。在本申请实施例的描述中,除非另有说明,“多个”的含义是指两个或两个以上。
数字信号处理器是为进行数字信号处理而设计的微处理器。数字信号处理器是同数字信号处理技术一同发展起来的。数字信号处理的应用领域迅速扩大与数字信号处理器的发展密不可分。为了快速地实现数字信号处理运算,数字信号处理器芯片一般都采用特殊的软硬件结构。这些特点使得处理器芯片可以实现快速的数字信号处理运算,并使大部分运算例如乘能够在一个指令周期内完成。由于处理器芯片本身也是处理器,因此同样具有通用微处理器具有的方便灵活的特点。数字信号处理器中的后加器具有非常丰富灵活的有符号定点数学加减法和逻辑运算功能,进一步灵活后加器的功能,满足常用FPGA数字信号处理的需求,并使ASIC化后的后加器具有更好的性能,功耗和成本收益,是本发明的目的。
本发明的一个实施例涉及一种数字信号处理模块的后加器的集成电路。图1示出本申请实施例提供的数字信号处理模块的结构示意图。如图1所示,数字信号处理模块100包括后加器200、乘法器模块、前加器模块和控制总线。所述控制总线耦合到后加器用以动态的控制后加器的操作,后加器200包括:运算器300、数据源选择器400、进位处理单元600、比较器单元500、输出数据选择器700。其中乘法器模块包括2个18*18的有符号定点乘法器,以及4个10*10有符号定点乘法器,其乘法执行的结果输出到运算单元300的输入端,控制信号模块接收控制总线的信号为数字信号处理模块100提供控制信号。
在一个实施例中,后加器200包括:56位UFC数据源选择器,3输入56位ALU运算器,进位处理单元,2输入56位比较器单元,输出数据选择器。
乘法器模块的计算中间结果、进位处理单元600以及数据选择器400的数据输出到运算器300中进行逻辑运算或者算数运算,运算器300的运算结果经过输出数据选择器700输出,运算器300的输出和数据源选择器400的输出还经过比较器单元500后输出比较结果。
图2示出本申请实施例提供的后加器200的结构示意图,图2为图1的示范性实施例,数字信号处理模块100的乘法器模块支持18x18的二进制补码乘法,输入两个二进制的18比特数产生乘法的部分积。最终经由后级器200实现将部分积进行求和运算,最终得到乘法器的运算结果。乘法器,前加器为常规电路,此处不再详细说明。
后加器200包括3个数据输入端,分别为MR_L[55:0]、MR_U[55:0]、U[55:0],一个数据级联输出端R_CAS_IN[55:0],一个来自FPGA用户侧可动态控制的数据端口RNDM,2个级联进位端口R_CARRY_CAS_OUT和R_ECARRY_CAS_OUT,前级56位加法器进位端口R_CARRY_CAS_IN和前级扩展进位端口R_ECARRY_CAS_IN(见图3),数据结果输出通过R[72:0]端口输出最终后加器运算结果,其中R[72:56]端口只在乘法器18*18和10*10独立输出时用到。通过R_CAS_OUT[55:0]输出级联结果给下一级后加器,通过Z01_18[3:0]输出4个10*10乘法器的第19位结果或者4个两输入14位比较器结果,通过MATCH、underflow、Imatch、overflow端口输出比较器结果或者4个10*10乘法器的第20位结果。
数据源选择器400包括有静态寄存器选择的来自FPGA用户侧U数据端口,数据级联输入端口R_CAS_IN数据端口,R数据端口,在动态控制信号FCCTRL[2:0]和UFCCTRL的作用下选择相应的数据输出到运算器300和比较器单元500。
运算器300接收数据源选择器400的输出信号、乘法器组高18*18位经过56位符号扩展的输出结果MR_U和乘法器组低18*18位经过56位符号扩展的输出结果MR_L,以及进位处理单元600的进位信号,在运算器300中进行运算后输出结果到输出数据选择器700和比较器单元500。
输出数据选择器700还包括来自乘法器组高18*18位经过56位符号扩展的输出结果低36位MR_U[35:0]和乘法器组低18*18位经过56位符号扩展的输出结果低36位MR_L[35:0],乘法器组4个10*10乘法器的乘积结果的低18位Z0_L[17:0],ZO_U[17:0],Z1_L[17:0]和Z1_U[17:0]。
在一个实施例中,将高18*18位的乘积结果经过符号位拓展,得到与运算器300的输入端口相同的数据位宽。
以下对本实施例中的后加器的各个组成部分进行详细描述。
图3示出本申请实施例提供的运算器300的结构示意图,如图3所示,本申请实施例对运算器300的几条关键路径进行优化,包括一个一级加法器组和二级加法器组,运算器300可以实现多种功能。以一位为一组,将操作数分开,以56位为例,数据被分为56组,对56组采用一比特全加器进行运算。
运算器300的输入数据为乘法器高18*18位经过符号扩展的输出结果的最高位MR_U[55]、乘法器低18*18位经过符号扩展的输出结果的最高位MR_L[55],MR_U[55:0]和数据源选择器400的UFC输出端,以及前级扩展进位端口R_ECARRY_CAS_IN。
运算器300第一级加法器接收来自前一级多路选择器的3个56比特的操作数,通过SUBCTRL控制信号来执行相应的逻辑或者算数运算,产生56比特的输出结果S[55:0]和C[55:0]。
运算器300的第一输入端A,第二输入端B,第三输入端U,示例的,全加器的数目跟输入端数据的位宽一致,第一输入端,第二输入端,第三输入端的输入数据被拆分为n位,本实施例中n为56,相应的全加器组包含56个全加器,每个全加器计算相应位的输入数据的和,也就是A[i],B[i],C[i],输出S[i],C[i],i为大于等于0小于等于56的整数,经过全加器组后输出被记录在S[55:0]和C[55:0]中。
本实施例中,进位处理单元600的输出端Carry和C[55:0]合并作为二级加法器组的一个加数,C[55:0]添加一个最低位0变为56位,添加位之后的C[55:0]和S[55:0]做加法运算的得到R[55:0]以及第56位R_CARRY。输出的R_S[55:0]为有符号加法输出结果。
运算器300的第一输入端A,第二输入端B,第三输入端U通过56比特多路选择器,通过3比特的SUBCTRL信号控制,可以为第一级加法器组的三输入加/减法器选择数据来源。
Carry是低位来的进位或者借位输入信号,当carry=1时表明低位有进位或者借位,R_S[55:0]是加减运算结果的信号输出端,R_S[55]是运算器300向级联的高位的进位或者借位信号输出端,R_S[55]=0时表示没有进位或借位信号,R_S[55]=1时表明产生了向高位的进位或者借位信号,S[55:0]和C[55:0]是参与加减运算的2个56位二进制数据输入信号,SUBCTRL[2:0]的值为[000]时,多路选择器301,302,303选择数据MR_U、MR_L、UFC数据本身作为第一级加法器组的输入信号。
在一个实施例中,3输入56位后加器可以实现3输入的有符号加法和减法,还可以实现2输入的逻辑运算功能,56位2输入逻辑运算功能包括:与门,与非门,或门,或非门,异或门,异或非门;2个逻辑输入端,任意1个输入端都可以实现56位取反。可显著改善FPGA中LUT(look up table)级数多的关键路径延时,提升FPGA逻辑fmax性能(最高频率性能)。图3中二级加法器是带进位输入输出的57位加法器;R_CARRY_CAS_OUT是级联结果第57位R[55],二级加法器的输出bit[56],R_CARRY_CAS_IN为二级加法器的进位输出。
运算器300的一级加法器组还被配置为执行按位逻辑运算,诸如两输入AND、OR、NOT、NAND、NOR、XOR和XNOR运算。运算器300的一级加法器组的任意一个输入端还被配置为按位取反运算,即被配置为支持56位宽NOT功能。运算器300的功能表如表1.
表1运算器300的功能表
图4示出本申请实施例提供的数据源选择器400的结构示意图,如图4所示,数据源选择器400包括:输入单元、移位单元,多路选择器组单元,输出单元。将输入模式信号FCCTRL和UFCCTRL提供到数据源选择器400用以控制输出信号的数据来源。
输入单元的数据来源为:级联输入端口R_CAS_IN,上一级后加器的输出数据选择器700的R输出端口和有静态寄存器选择的来自FPGA用户侧U数据端口。
移位单元连接到输入单元,用于接收至少一个输入数据,并对输入数据进行移位。
多路选择器组由多个选择器组成,由相应的选通信号FCCTRL[2:0]进行选择,从而完成不同功能之间的切换,也能改变输入到运算器300的数据来源。
R数据端口用于累加计算,R和R_CAS_IN右移17位数据端口用于35*35或69*69的乘法器扩展,R和R_CAS_IN右移34位数据端口用于18*69乘法器扩展。
数据级联输入端口R_CAS_IN接入的寄存器选择器为运算器300提供了寄存单元,计算后的结果可以被寄存到运算器300的第一级加法器的输入端中,这样可以将结果用于逻辑或者算数运算的操作中。
在一个实施例中,3输入ALU后加器的UFC输入端口有9个数据来源,且可通过FCCTRL[2:0]和UCFCTRL端口进行动态选择或切换,9个数据源分别为:有静态寄存器选择的来自FPGA用户侧U数据端口,常数0,3输入ALU后加器输出结果的R数据端口,R数据端口右移17位,R数据端口右移34位,前一个级联3输入ALU后加器输出结果的R_CAS_IN数据端口,R_CAS_IN寄存器打一拍数据端口,R_CAS_IN数据端口右移17位,R_CAS_IN数据端口右移34位;另外右侧2输入56位比较器单元的U_buf输入端口是直接来自有静态寄存器选择的FPGA用户侧U数据端口。通过56位UFC数据源选择器的灵活动态选择,可以选择上一级的后加器结果,也可以选择自己的输出实现累加或者累减
数据源选择器400包括多路复用器401,402,403,404,405,406,407,408,409,寄存器411,412,移位单元431,432,433,434,去往多路复用器401-408的控制选择输入由数字信号处理模块100中的控制端口寄存器单元提供,此类寄存器单元是根据配置位流来配置的。因此,控制端口寄存器的编程状态决定多路复用器409的选定输出,在操作期间为静态的,也就是说在不复位FPGA的情况下多路复用器409不能改变状态。与多路复用器409相反,多路复用器401-408为可动态操作的,也就是说,在FPGA不复位的情况下使其控制选择在此FPGA期间改变状态。示例性的,此控制选择由FCCTRL[0]和FCCTRL[1]提供,其中[0]用以指示FCCTRL总线的位位置0。此类可动态操作的组件在用户设计的操作期间改变,可以随时钟信号的每一周期而改变。
将FCCTRL[0]作为动态控制选择信号提供给多路复用器401-404用以门控提供由A1寄存器411,R_CAS_IN信号,R_CAS_IN右移17位信号,R_CAS_IN右移34位的信号,R信号,R信号右移34位的信号,R信号右移17位的信号或者R信号。
将FCCTRL[1]作为动态控制选择信号提供给多路复用器405-406,用以门控提供由多路选择器401和402的任一者的,以及由多路选择器403和404的任一者的输出。
将FCCTRL[2]作为动态控制选择信号提供给多路复用器407,用以门控提供由多路选择器405和406任一者的输出。
R_CAS_IN信号可以从多路复用器401-402输出,R信号可以从多路复用器403-404输出,来自多路复用器401和402的输出被提供作为对多路复用器405的数据输入。来自多路复用器403和404的输出被提供作为对多路复用器406的数据输入。多路复用器401和402的输出被提供作为对多路复用器405的数据输入,多路复用器403和404的输出被提供作为对多路复用器406的数据输入,多路复用器405和406的输入被提供作为对多路复用器407的输入。
U信号可从多路复用器409输出。控制选择信号Cfg_ufcmux作为选择控制信号提供给多路复用器409,用以门控提供由U信号或者由寄存器412延迟的U信号。
将UFCCTRL作为动态控制选择信号提供给多路复用器408,用以门控提供由多路复用器407和409的输入。
假设用户已经将多路复用器402、405设置为选择其底部输入作为输出,且多路复用器407、409选择其顶部输入作为输出,则多路复用器输出R_CAS_IN信号经由UFC端口输出。UFC端口输出进入ALU运算器300参与逻辑或者算数运算。
图5示出本申请实施例提供的输出数据选择器700的结构示意图,如图5所示,输出数据选择器700接收来自运算器300和乘法器模块的数据,在动态选择控制信号的作用下选择相应的数据进行输出。输出数据选择器700包括一个4选一多路选择器710,用于对来自运算器300的输出数据进行选择,分别为常数0、一级加法器组输出的和S[55:0],进位C[55:0],二级加法器组的加法/减法运算输出R_S[55:0],在控制信号ALUCRTL[1:0]的控制下选择上述任意一路信号输出。多路选择器710的输出连接多路选择器711,多路选择器711的接收多路选择器710的输出信号以及常数0,在控制信号Match_clr的控制下输出,输出的信号经过多路选择器712,在动态控制信号ALUCRTL[2]的作用下输出多路选择器711输出数据的非或者数据本身。
输出数据选择器700还包括多路选择器713,用于选择输出10*10乘法器的低18位结果Z1_U[17:0]、Z0_U[17:0]、Z1_L[17:0]、Z0_L[17:0]拼接的数据以及高18*18乘法器经过56位符号扩展的输出结果低36位MR_U[35:0]和低18*18乘法器经过56位符号扩展的输出结果低36位MR_L[35:0]拼接的数据,在动态控制信号Cfg_poa_rout[2]的作用下,选择任意一路信号输出到多路选择器714,多路选择器714输出的信号一路经过寄存器721分别输出到多路选择器715和多路选择器716的信号输入端,另一路直接输出到多路选择器715和多路选择器716的信号输入端。动态选择控制信号Cfg_poa_rout[0]和Cfg_poa_rout[1]分别控制多路选择器715和多路选择器716动态的输出,经过多路选择715输出的为R,可以作为级联信号输入下一级的数据源选择器400的R端口,通过预留了级联的端口R,这样就可以通过级联数字信号处理模块100完成更多的操作。后加器200还可以接收提供给寄存器716的Cfg_poa_rout[1]控制信号。Cfg_poa_rout[1]可以控制将哪个输入作为下一级数字信号处理模块100的进位级联输入信号输出。
输出数据选择器700的输出还包括从多路选择器716输出的R_CAS_OUT信号,如图2所示,输出数据选择器700的输出包括上一级级联进位信号R_CARRY_CAS_OUT作为输入的R_CARRY_CAS_IN和上一级级联的扩展进位信号R_ECARRY_CAS_OUT作为输入的R_ECARRY_CAS_IN。
在一个实施例中,数据选择器可以输出各种数字信号处理器的功能结果,这些功能包括:2个18*18有符号定点乘法器的结果,4个10*10有符号定点乘法器的结果,3输入56位有符号加法器或减法器结果R_S[55:0],2输入逻辑门输出结果S[55:0]和C[55:0],这5个输出结果可以支持输出有无寄存器的静态配置和最多56位结果输出级联功能。
图6示出本申请实施例提供的进位处理单元600的结构示意图,如图6所示,进位处理单元600包括一个四选一数据选择器,一个二选一数据选择器,一个二输入异或门,四选一数据选择器的输入端为高18*18乘法器经过56位符号扩展的输出结果第56位MR_U[35:0]和低18*18乘法器经过56位符号扩展的输出结果第56位MR_L[35:0],常数0,运算器300算术运算结果的最高位R_S[55]。
在一个实施例中,运算器300的数据源在动态选择控制信号作用下选择MR_U[55]和MR_L[55]时,经过二级加法器组的运算,输出高18*18乘法器和低18*18乘法器结果和的累加结果,该累加结果的最高位R_S[55]作为进位处理单元600的其中一个数据输入端。
将CCTRL[2:1]作为动态选择信号提供给数据选择器601,用以门控提供由运算器300中算术运算结果的最高位R_S[55]经过寄存器中621的延迟,常数0,其中乘法器组中高18*18位经过56位符号扩展的输出结果的最高位MR_U[55],低18*18乘法器经过56位符号扩展的输出结果的最高位MR_L[55],高18*18乘法器和低18*18乘法器结果和的累加结果的最高位R_S[55]。
进位处理单元600还包括一个二选一数据选择器602,用户侧可控制端口RNDM或前一级后加器级联进位信号R_CARRY_CAS_IN可从数据选择器602输出。来自数据选择器602的输出被用作异或门的输入。将CCTRL[0]作为动态选择信号提供给数据选择器602,用以门控提供由用户侧可控制端口RNDM、前一级后加器级联进位信号R_CARRY_CAS_IN。
在一个实施例中,用户侧可控制端口RNDM有两个作用,一个是用于后加器200结果溢出时的处理,当用户侧可控制端口RNDM为0时,后加器可以实现到0方向的四舍五入,RNDM为1时,3输入56位后加器可以实现到无穷大方向的四舍五入,另一个作用是实现后加器200有符号补码加减法,当RNDM为0时,是有符号加法,当RNDM为1时,是有符号减法。
进位处理单元600还包括一个二输入异或门603,用于实现后加器200输入数据端口最高位与前几进位或者来自RNDM的信号的异或逻辑。
在一个实施例中,进位处理单元由1个4选1数据选择,1个2选1数据选择器,1个2输入异或门组成。4选1数据选择器的4个输入端可以通过CCTRL[2:1]进行动态选择,4个输入端分别为:高18*18位经过56位符号扩展的输出结果最高位MR_U[55],低18*18位经过56位符号扩展的输出结果最高位MR_L[55],高18*18和低18*18结果和的累加结果最高位R_S[55],常数0;2选1数据选择器的2个输入端可以通过CCTRL[0]进行动态选择,2个输入端分别为:前一个级联3输入ALU后加器输出结果的数据最高位R_CAS_IN[55],来自FPGA用户侧可动态控制的数据端口RNDM;RNDM端口有2个作用,一个作用是用于后加器结果溢出时的处理,当RNDM为0时,3输入56位后加器可以实现到0方向的四舍五入,让RNDM为1时,3输入56位后加器可以实现到无穷大方向的四舍五入,另一个作用是实现后加器实现有符号补码加减法,当RNDM为0时,是有符号加法,当RNDM为1时,是有符号减法;2输入异或门实现后加器输入数据端口最高位与前几进位或者来自RNDM的信号的异或逻辑。
图7示出本申请实施例提供的比较器500的结构示意图,如图7所示,R_pre输入比较器500被提供到AND门521的下部输入,U_buf输入比较器500被提供到AND门522的下部输入,以及AND门523的上部输入,AND门521的上部输入、AND门522的上部输入以及AND门523的下部输入经耦合以接收Cfg_cldbit[55:0],在本实施例中,Cfg_cldbit[55:0]为55位位宽,低4位全为0。AND门521的输出被提供作为比较器531到534的一个输入端,AND门522的输出被提供作为比较器531到534的另一个输入端。
比较器531到534分别处理两个输入端数据的[55:42]位,[41:28]位,[27:14]位,[13:0]位,也就是说,可以分别比较R_pre[13:0]是否等于U_buf[13:0],R_pre[27:14]是否等于U_buf[27:14],R_pre[41:28]是否等于U_buf[41:28],R_pre[55:42]是否等于U_buf[55:42],并最终通过Z01_18[3:0]分别输出比较结果。
比较器531到534的输出分别被记录在MATCH_pre[3],MATCH_pre[2],MATCH_pre[1]和MATCH_pre[0],也就是MATCH_pre[3:0]中,多路复用器621,多路复用器622,多路复用器623分别处于动态操作的目的受Cfg_poa_rout[4],FRCTRL[1]和Cfg_poa_rout[0]控制,当Cfg_poa_rout[4]=0,通过Z01_18[3:0]输出端口输出4个10*10乘法器的第19位结果的乘积结果Z0_L[18],Z1_L[18],Z0_U[18],Z1_U[18]。当Cfg_poa_rout[4]=1,通过Z01_18[3:0]输出端口输出比较器531到534的比较结果。在Cfg_poa_rout[0]=0时,输出经过寄存器721延迟的MATCH_pre[3:0]或者4个10*10乘法器第19位结果的乘积结果Z0_L[18],Z1_L[18],Z0_U[18],Z1_U[18]。最终比较结果由Z01_18[3:0]输出。
将Cfg_match作为选择控制信号提供给多路复用器721,用以门控提供由寄存器624和寄存器626延迟或由寄存器624延迟的Z01_18[3:0],在Cfg_poa_rout[2]的动态控制下,选择4个10*10乘法器乘积结果的第20位Z0_L[19],Z1_L[19],Z0_U[19],Z1_U[19]或者由寄存器624和寄存器626延迟或由寄存器624延迟的Z01_18[3:0]。
比较器535的两个输入端被提供为AND门521和AND门523的输出,也就是说,比较器535的输出为R_pre和U_buf的比较结果,该比较结果最终通过iMATCH端口输出。比较器535的输出经过寄存器625后分别输入AND门524,多路选择器721,寄存器627,AND门525。将Cfg_match作为选择控制信号提供给多路选择器722,用以门控提供由寄存器625和寄存器627的延迟或者寄存器625延迟的比较器535的输出。在Cfg_poa_rout[2]和FRCTRL[1]的动态控制下,选择输出10*10的第20位结果的乘积结果Z1_L[19]或者比较器535的输出为R_pre和U_buf的比较结果。
在一个实施例中,2输入56位比较器单元可以实现输入56位端口R_pre与U_buf是否相等56位比较器功能,并最终通过MATCH端口输出比较结果;或者4个14位独立比较器功能:R_pre[13:0]是否等于U_buf[13:0],R_pre[27:14]是否等于U_buf[27:14],R_pre[41:28]是否等于U_buf[41:28],R_pre[55:42]是否等于U_buf[55:42],并最终通过Z01_18[3:0]分别输出比较结果;或者56位2输入比较器不相等的功能,并最终通过iMATCH端口输出比较结果;或者通过underflow输出下溢出标志,通过overflow输出上溢出标志;或者当Cfg_poa_rout[2]=1,通过MATCH,underflow,iMATCH,overflow输出端口输出4个10*10的第20位结果的乘积结果Z0_L[19],Z1_L[19],Z0_U[19],Z1_U[19],当Cfg_poa_rout[4]=0,通过Z01_18[3:0]输出端口输出4个10*10的第19位结果的乘积结果Z0_L[18],Z1_L[18],Z0_U[18],Z1_U[18]。
在本实施例中,设置相应的动态选择控制器Cfg_poa_rout[2]的值,此处Cfg_poa_rout[2]=1,可以控制通过MATCH,underflow,iMATCH,overflow输出端口输出4个10*10的第20位结果的乘积结果Z0_L[19],Z1_L[19],Z0_U[19],Z1_U[19]。
设置相应的动态选择控制器FRCTRL[1]的值,此处FRCTRL[1]=1,通过underflow输出下溢出标志,通过overflow输出上溢出标志。
示例的,表2为本申请出现的数据的英文简写说明。
表2:数据的英文简写说明
/>
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (10)
1.一种数字信号处理模块中的后加器,位于现场可编程器件中,所述数字信号处理模块(100)包括若干乘法器,其特征在于,所述后加器(200)包括:
运算器(300),分别与数据源选择器(400)、进位处理单元(600)、比较器单元(500)和输出数据选择器(700)连接;所述运算器(300)被配置为对至少来自进位处理单元(600),数据源选择器(400)以及所述乘法器的部分和输出执行一个或多个数学或逻辑运算;
数据源选择器(400),与运算器(300)以及比较器单元(500)连接,用于从若干数据源中选择一路输出到运算器(300);
所述进位处理单元(600),输出前一级运算器(300)的进位端输出到所述运算器(300);
所述比较器单元(500),用于确定至少一组输入端口的输入数据是否相等;
所述输出数据选择器(700),用于输出至少一个输出结果。
2.根据权利要求1所述的后加器,其特征在于,所述数字信号处理模块(100)还包括控制信号模块,所述控制信号模块耦合到所述后加器模块(200),以用于动态地控制所述后加器模块(200)的操作。
3.根据权利要求1所述的后加器,其特征在于,所述运算器(300)包括数据选择模块,第一加法器组、第二加法器组和输出模块;
所述第一加法器组被配置为对所述数据选择模块的的若干输出进行逻辑运算;
所述第二加法器组被配置为将所述逻辑运算的结果作为加数和被加数进行数学运算;
所述数据选择模块根据所述逻辑运算或者数学运算,选择相应的数据耦合到所述第一加法器组。
4.根据权利要求3所述的后加器,其特征在于,所述运算器(300)的第二加法器组还被配置为将所述进位处理单元(600)的输出作为所述被加数的最低位参与所述数学运算。
5.根据权利要求1所述的后加器,其特征在于,所述数据源选择器(400)包括:
移位单元,被配置为对所述乘法器的部分积和前一个级联的后加器模块(200)的数据级联输出端进行移位操作;
多路选择器单元,被配置为对所述乘法器的部分积或者数据级联输出端进行动态选择,以输出到所述运算器(300)。
6.根据权利要求1所述的后加器,其特征在于,所述数据源选择器(400)还包括用户侧数据,所述用户侧数据通过寄存器选择后耦合到所述比较器单元(500)。
7.根据权利要求1所述的后加器,其特征在于,所述比较器(500)被配置为对所述数据源选择器(400)中通过寄存器选择的用户侧数据以及所述运算器(300)的数学运算结果进行比较;
所述比较器(500)被配置为对所述乘法器的部分乘积结果进行输出;
所述比较器(500)被配置为输出所述乘法器乘积结果的溢出标志位;
所述比较器(500)还被配置为将其输入数据的位宽划分为若干段,分别对其中每一段进行比较。
8.根据权利要求1所述的后加器,其特征在于,所述进位处理单元(600)还包括来自可动态控制数据端口的输入,所述可动态控制数据端口被配置为当所述比较器(500)输溢出标志位时,实现所述运算器(300)输出算术运算结果的四舍五入;
所述进位处理单元还包括以下至少一项:至少两个数据选择器和/或至少一个异或门。
9.根据权利要求1所述的后加器,其特征在于,所述输出数据选择器(700)输出级联控制信号,以用于相邻的后加器(200)实现级联的加法/减法/累加操作;
所述输出数据选择器(700)还被配置为输出所述乘法器的结果/所述运算器(300)算数运算的结果/逻辑运算结果;其中所述乘法器包括2个18*18的有符号定点乘法器以及4个10*10的有符号定点乘法器。
10.根据权利要求1或3所述的后加器,其特征在于,所述逻辑运算包括以下至少一项:与门、与非门、或门、或非门、异或门和/或异或非门。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311715423.7A CN117667011A (zh) | 2023-12-13 | 2023-12-13 | 一种数字信号处理模块中的后加器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311715423.7A CN117667011A (zh) | 2023-12-13 | 2023-12-13 | 一种数字信号处理模块中的后加器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117667011A true CN117667011A (zh) | 2024-03-08 |
Family
ID=90078726
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311715423.7A Pending CN117667011A (zh) | 2023-12-13 | 2023-12-13 | 一种数字信号处理模块中的后加器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117667011A (zh) |
-
2023
- 2023-12-13 CN CN202311715423.7A patent/CN117667011A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5844830A (en) | Executing computer instrucrions by circuits having different latencies | |
US6230179B1 (en) | Finite field multiplier with intrinsic modular reduction | |
US7849119B2 (en) | Digital signal processing circuit having a pattern detector circuit | |
US7844653B2 (en) | Digital signal processing circuit having a pre-adder circuit | |
US5508950A (en) | Circuit and method for detecting if a sum of two multibit numbers equals a third multibit constant number prior to availability of the sum | |
US7865542B2 (en) | Digital signal processing block having a wide multiplexer | |
US9098332B1 (en) | Specialized processing block with fixed- and floating-point structures | |
US7080111B2 (en) | Floating point multiply accumulator | |
US6411980B2 (en) | Data split parallel shifter and parallel adder/subtractor | |
US20060206557A1 (en) | Arithmetic logic unit circuit | |
US20060230093A1 (en) | Digital signal processing circuit having a pattern detector circuit for convergent rounding | |
US6601077B1 (en) | DSP unit for multi-level global accumulation | |
US6366943B1 (en) | Adder circuit with the ability to detect zero when rounding | |
US6609143B1 (en) | Method and apparatus for arithmetic operation | |
JP2010086547A (ja) | 乗算器/アキュムレータ・ユニット | |
US5892698A (en) | 2's complement floating-point multiply accumulate unit | |
US7373369B2 (en) | Advanced execution of extended floating-point add operations in a narrow dataflow | |
US5010511A (en) | Digit-serial linear combining apparatus useful in dividers | |
US5764550A (en) | Arithmetic logic unit with improved critical path performance | |
KR100627993B1 (ko) | 3입력 분할 가산기 | |
CN117667011A (zh) | 一种数字信号处理模块中的后加器 | |
US6157939A (en) | Methods and apparatus for generating multiplicative inverse product | |
KR102286101B1 (ko) | 데이터 처리장치 및 내로우잉 앤 라운딩 산술연산을 행하는 방법 | |
US6725360B1 (en) | Selectively processing different size data in multiplier and ALU paths in parallel | |
US6182105B1 (en) | Multiple-operand addition with intermediate saturation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |