CN114089949A - 一种可直接支持多操作数加法运算的数字信号处理器 - Google Patents
一种可直接支持多操作数加法运算的数字信号处理器 Download PDFInfo
- Publication number
- CN114089949A CN114089949A CN202111373579.2A CN202111373579A CN114089949A CN 114089949 A CN114089949 A CN 114089949A CN 202111373579 A CN202111373579 A CN 202111373579A CN 114089949 A CN114089949 A CN 114089949A
- Authority
- CN
- China
- Prior art keywords
- data
- output
- gate
- compressor
- input
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/50—Adding; Subtracting
- G06F7/505—Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination
- G06F7/509—Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination for multiple operands, e.g. digital integrators
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
- G06F7/523—Multiplying only
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Optimization (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Complex Calculations (AREA)
Abstract
本发明公开了一种可直接支持多操作数加法运算的数字信号处理器,包括:输入寄存器组,定制乘法器,第一通用乘法器,第二通用乘法器,第三通用乘法器,第一加法器,第二加法器,加法输出寄存器,加法/累加器,链式加法器,输出寄存器。本发明通过定制DSP架构中的乘法器实现结构,定制乘法器可以配置成乘法模式或者支持八操作数加法模式,从而使得DSP可以直接支持多操作数加法运算。
Description
技术领域
本发明属于数字集成电路技术领域,具体涉及一种可直接支持多操作数加法运算的数字信号处理器。
背景技术
随着半导体工艺和微电子技术的发展,电路***对信息与信号的处理技术越来越先进,可以传输更快速率的信号和实现更复杂的算法。同时数字信号处理也已经独立发展成为一项非常重要和成熟的技术,并在许多应用领域替代了传统的模拟信号处理,如音视频处理、数字图像处理、声纳和雷达、生物医学信号分析、精确制导武器等领域,深刻影响着当代社会的发展。但面对较大的计算密集型任务时会使得电路运算的成本急剧增加,数字信号处理单元应运而生。此单元内具有专门的运算部件,可以显著的提升数字信号处理算法实现的性能。数字信号处理单元作为当今实现数字信号算法的核心部件,已成为计算机、通信等重要领域的基础器件。
现场可编程门阵列(Field Programmable Gate Array,FPGA)是一种可编程使用的信号处理器件,用户可根据设计需求通过改变配置信息实现对其功能的重定义,它是在PAL、PLA、CPLD等可编程器件的基础上进一步发展的产物,作为一种半定制可编程逻辑器件即解决了专用集成电路(ASIC)灵活性弱的缺点,又克服了原有可编程器件门电路数目有限的问题。近些年,市场对FPGA的需求既强调FPGA结构的灵活性、通用性又要求其具有处理复杂算法的能力。算法覆盖数字信号处理、深度学习神经网络及大数据加速计算等,其中数字信号处理涉及越来越复杂的算法,涵盖数字通信、语音视频处理、生物医学信号处理、声纳雷达处理等。算法实现属于计算密集型任务,此类算法往往需要进行大量的乘加运算,利用FPGA本身的逻辑资源和结构的并行性可以达到实现算法的目的。但由于FPGA是半定制电路,在实现复杂算法时需要综合工具对代码进行转换优化和映射到查找表,往往映射过程并不能很好的实现资源的利用,导致资源的严重浪费,同时对算法实现的性能也无法保证。DSP硬核作为FPGA器件中重要的运算处理模块,能够实现各种简单或复杂的算数与逻辑运算。可以显著提升FPGA的计算性能,极大地拓宽了FPGA应用领域。
目前国内外市场上FPGA厂商推出的FPGA产品中均嵌入了DSP硬核。不同FPGA中嵌入的DSP结构不同,但都可以支持众多基本算数运算,如乘法运算、乘加运算、乘累加运算等。然而目前没有DSP硬核可以直接支持多操作数加法运算。FPGA只能采用片上逻辑资源实现多操作数相加运算,但是此方法实现多操作数相加不仅消耗过多的逻辑资源同时也会影响加法运算性能。
发明内容
本发明所要解决的技术问题在于针对上述现有技术中的不足,提供一种可直接支持多操作数加法运算的数字信号处理器,其通过定制DSP架构中的乘法器实现结构,定制乘法器可以配置成乘法模式或者支持八操作数加法模式,从而使得DSP可以直接支持多操作数加法运算。
为解决上述技术问题,本发明采用的技术方案是:一种可直接支持多操作数加法运算的数字信号处理器,包括:
输入寄存器组,用于对输入数据进行处理;
定制乘法器,输入端与输入寄存器组的输出端连接,用于实现乘法运算或多操作数加法运算;
第一通用乘法器,输入端与输入寄存器组的输出端连接,用于实现乘法运算;
第二通用乘法器,输入端与输入寄存器组的输出端连接,用于实现乘法运算;
第三通用乘法器,输入端与输入寄存器组的输出端连接,用于实现乘法运算;
第一加法器,输入端与第一通用乘法器的输出端和定制乘法器的输出端连接,用于实现加法运算;
第二加法器,输入端与第二通用乘法器的输出端和第三通用乘法器的输出端连接,用于实现加法运算;
加法输出寄存器,输入端与第一加法器的输出端和第二加法器的输出端连接,用于对输出数据进行处理;
加法/累加器,输入端与加法输出寄存器的输出端连接,用于对加法输出寄存器输出的数据进行累加;
链式加法器,输入端与加法/累加器的输出端连接,用于实现链式加法;
输出寄存器,输入端与链式加法器的输出端连接,用于对输出数据进行处理。
上述的一种可直接支持多操作数加法运算的数字信号处理器,所述输入寄存器组包括依次连接的第一多路选择器、延时寄存器和第二多路选择器。
上述的一种可直接支持多操作数加法运算的数字信号处理器,所述第一多路选择器和第二多路选择器均为2选1多路选择器。
上述的一种可直接支持多操作数加法运算的数字信号处理器,所述定制乘法器包括:
数据预处理模块:用于对输入寄存器组输出的数据进行预处理;
改进型Booth编码模块:用于对输入寄存器组输出的数据进行Booth编码,产生部分积;
数据后处理模块:与改进型Booth编码模块的输出端连接,用于对改进型Booth编码模块输出的数据进行后处理;
数据选择器:与数据预处理模块的输出端和数据后处理模块的输出端连接,用于对数据预处理模块的输出结果和数据后处理模块的输出结果进行选择;
压缩树约简单元:与数据选择器的输出端连接,用于对数据选择器输出的部分积阵列进行压缩处理,得到最终结果。
上述的一种可直接支持多操作数加法运算的数字信号处理器,所述改进型Booth编码模块包括中间结果生成模块和最终结果生成模块,所述中间结果生成模块包括并列设置的异或门U1、同或门U2、同或门U3和与非门U4,以及与与非门U4的输出端连接的与门U5;所述最终结果生成模块包括并列设置的同或门U6和同或门U7,并列设置的与门U8、与门U9和与门U10,以及与与门U8、与门U9和与门U10的输出端均连接的或非门U11;所述同或门U6的输出端与与门U8的输入端连接,所述同或门U7的输出端与与门U10的输入端连接。
上述的一种可直接支持多操作数加法运算的数字信号处理器,所述数据后处理模块包括用于对各个部分积的符号位进行优化处理的第一数据后处理单元和用于实现8输入加法运算的第二数据后处理单元;
所述第一数据后处理单元对各个部分积的符号位进行优化处理采用的计算公式为:
其中,S代表二进制数0或1,S的下标数字0~8代表权重,也就数二进制数S的位置;n为数字2的指数;
将公式(F1)进行简化得到:
其中,i为权重,也就数二进制数S的位置;
所述第二数据后处理单元对每行低位数据进行补零操作。
上述的一种可直接支持多操作数加法运算的数字信号处理器,所述数据预处理模块对输入寄存器组输出的数据进行预处理时,将输入寄存器组输出的数据进行符号位拓展,得到与所述数据后处理模块输出数据相同的数据位宽。
上述的一种可直接支持多操作数加法运算的数字信号处理器,所述压缩树约简单元对数据选择器输出的部分积阵列进行压缩处理时,采用五级压缩的方式,其中,第一级压缩和第二级压缩均采用3-2压缩器、4-2压缩器和5-2压缩器相组合的方式进行压缩;第三级压缩采用3-2压缩器的方式进行压缩,第四级压缩是第三级压缩的结果,第五级压缩为补零处理。
上述的一种可直接支持多操作数加法运算的数字信号处理器,所述3-2压缩器的计算公式为:
X1+X2+X3=sum+2*(carry) (F3)
其中,X1、X2和X3为3-2压缩器接收的3个数据,X1、X2和X3的权重相同;sum为3-2压缩器计算得到的求和值,sum的权重与X1、X2和X3的权重相同;carry为3-2压缩器计算得到的进位,carry的权重比sum的权重高一位;
所述4-2压缩器的计算公式为:
cin+X1+X2+X3+X4=sum+2*(cout+carry) (F4)
其中,cin、X1、X2、X3和X4为4-2压缩器接收的5个数据,cin、X1、X2、X3和X4的权重相同,cin为进位数;sum为4-2压缩器计算得到的求和值,sum的权重与cin、X1、X2、X3和X4的权重相同;cout和carry均为4-2压缩器计算得到的进位,cout和carry的权重均比sum的权重高一位;
所述5-2压缩器的计算公式为:
c1_in+c1_in+X1+X2+X3+X4+X5=sum+2*(c1_out+c2_out+carry) (F5)
其中,c1_in、c1_in、X1、X2、X3、X4和X5为5-2压缩器接收的7个数据,c1_in、c1_in、X1、X2、X3、X4和X5的权重相同,c1_in和c1_in均为进位数;sum为5-2压缩器计算得到的求和值,sum的权重与c1_in、c1_in、X1、X2、X3、X4和X5的权重相同;c1_out、c2_out和carry均为5-2压缩器计算得到的进位,c1_out、c2_out和carry的权重均比sum的权重高一位。
本发明与现有技术相比具有以下优点:
1、DSP模块中只需要实现定制一个乘法器,便可实现多输入加法运算的功能。
2、定制乘法器结构使得DSP充分利用模块8个输入端口,可直接支持最多八个操作数加法运算,通过避免了采用FPGA逻辑资源实现加法造成的资源浪费,也提升了加法运算的性能。
3、定制乘法器中同样可以选择性的***流水线,可以提升乘法器的性能。
4、定制乘法器结构采用不同的压缩器进行针对性的优化,减少乘法器了占用的面积。
5、定制乘法器中,Booth编码电路采用异或门和同或门生成中间结果X1,X2P和ZP,保证了其具有相同的电路延时。防止由于编码数发生变化时,中间结果变化不同步,导致部分积的值发生连续性变化,从而达到了降低功耗的目的。
6、对于多输入加法运算,DSP可以支持8个18bits有符号加法。由于DSP中累加器的存在,可以寄存输出结果,DSP一拍最多可以支持输出8个操作数相加运算结果,2拍最多可以支持输出16个操作数运算的结果。达到资源复用的目的,同时加法器的性能仍高于采用FPGA逻辑实现的性能。
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
附图说明
图1为本发明可直接支持多操作数加法运算的数字信号处理器的架构示意图;
图2为本发明输入寄存器组S101的结构示意图;
图3为本发明定制乘法器S102的结构示意图;
图4为本发明改进型Booth编码模块S202的结构示意图;
图5为本发明第一数据后处理单元处理过程的示意图;
图6为本发明数据预处理模块S201对输入寄存器组S101输出的数据进行预处理的示意图;
图7为本发明压缩树约简单元S205对数据选择器S204输出的部分积阵列进行压缩处理的示意图;
图8为本发明压缩器S500的结构示意图。
具体实施方式
如图1所示,本发明的可直接支持多操作数加法运算的数字信号处理器,包括:
输入寄存器组S101,用于对输入数据进行处理;
定制乘法器S102,输入端与输入寄存器组S101的输出端连接,用于实现乘法运算或多操作数加法运算;
第一通用乘法器S103a,输入端与输入寄存器组S101的输出端连接,用于实现乘法运算;
第二通用乘法器S103b,输入端与输入寄存器组S101的输出端连接,用于实现乘法运算;
第三通用乘法器S103c,输入端与输入寄存器组S101的输出端连接,用于实现乘法运算;
第一加法器S104a,输入端与第一通用乘法器S103a的输出端和定制乘法器S102的输出端连接,用于实现加法运算;
第二加法器S104b,输入端与第二通用乘法器S103b的输出端和第三通用乘法器S103c的输出端连接,用于实现加法运算;
加法输出寄存器S105,输入端与第一加法器S104a的输出端和第二加法器S104b的输出端连接,用于对输出数据进行处理;
加法/累加器S106,输入端与加法输出寄存器S105的输出端连接,用于对加法输出寄存器S105输出的数据进行累加;
链式加法器S107,输入端与加法/累加器S106的输出端连接,用于实现链式加法;
输出寄存器S108,输入端与链式加法器S107的输出端连接,用于对输出数据进行处理。
一种支持多操作数加法运算的DSP架构S100,如图1所示,是一款完整的DSP架构,可以实现基本算数运算,乘法、乘加、乘累加、链式加法以及移位寄存器链等功能。
本实施例中,所述输入寄存器组S101包括依次连接的第一多路选择器、延时寄存器和第二多路选择器。
本实施例中,所述第一多路选择器和第二多路选择器均为2选1多路选择器。
如图2所示为输入寄存器组S101的结构示意图。输入寄存器组S101通过第一多路选择器进行配置,能够实现输入数据寄存以及形成移位寄存器链,移位寄存器链长度为5级。通过***延时寄存器,便于DSP模块处理FIR数字滤波器等应用。再通过第二多路选择器选择是否寄存,再将结果送出去,保证数据到达定制乘法器S102、第一通用乘法器S103a、第二通用乘法器S103b和第三通用乘法器S103c的同步性。
本实施例中,所述定制乘法器S102包括:
数据预处理模块S201:用于对输入寄存器组S101输出的数据进行预处理;
改进型Booth编码模块S202:用于对输入寄存器组S101输出的数据进行Booth编码,产生部分积;经过Booth编码可减少部分积个数,提高乘法器的性能;
数据后处理模块S203:与改进型Booth编码模块S202的输出端连接,用于对改进型Booth编码模块S202输出的数据进行后处理;
数据选择器S204:与数据预处理模块S201的输出端和数据后处理模块S203的输出端连接,用于对数据预处理模块S201的输出结果和数据后处理模块S203的输出结果进行选择;
压缩树约简单元S205:与数据选择器S204的输出端连接,用于对数据选择器S204输出的部分积阵列进行压缩处理,得到最终结果。
具体实施时,定制乘法器S102(S200),如图3所示,定制乘法器这里也称为乘法/加法模块(Multiplier or Adder Block,MAB)。常规乘法器实现步骤有Booth编码、压缩部分积、部分积求和。但是常规的乘法器只能实现两个数相乘操作。设计的定制乘法器可以支持最多8个操作数加法运算。
本实施例中,所述改进型Booth编码模块S202包括中间结果生成模块和最终结果生成模块,所述中间结果生成模块包括并列设置的异或门U1、同或门U2、同或门U3和与非门U4,以及与与非门U4的输出端连接的与门U5;所述最终结果生成模块包括并列设置的同或门U6和同或门U7,并列设置的与门U8、与门U9和与门U10,以及与与门U8、与门U9和与门U10的输出端均连接的或非门U11;所述同或门U6的输出端与与门U8的输入端连接,所述同或门U7的输出端与与门U10的输入端连接。
具体实施时,所述改进型Booth编码模块S202的电路结构如图4所示,异或门U1、同或门U2和与非门U4的输入均为y2i和y2i-1,同或门U3的输入为y2i+1和y2i;其中,y为待编码的乘数,y2i+1,y2i,y2i-1为连续的三个二进制比特数(标号表示二进制数的权重,也就是每个比特数的位置);与门U5的输入为y2i+1和非门U4的输出,y2i+1对应中间结果NEG,异或门U1的输出为中间结果X1,同或门U2的输出为中间结果X2P,同或门U3的输出为中间结果ZP,与门U5的输出为中间结果ADD。所述改进型Booth编码模块S202通过中间结果生成模块生成中间结果X1,X2P和ZP,保证了其具有相同的电路延时;此外防止了由于编码数发生变化时,中间结果变化不同步,导致部分积的值发生连续性变化,从而达到了降低功耗的目的。Booth编码表如表1所示:
表1改进型Booth编码表
y2i+1 | y2i | y2i-1 | NEG | X1 | X2P | ZP | ADD |
0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 |
0 | 0 | 1 | 0 | 1 | 0 | 1 | 0 |
0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 |
0 | 1 | 1 | 0 | 0 | 1 | 0 | 0 |
1 | 0 | 0 | 1 | 0 | 1 | 0 | 1 |
1 | 0 | 1 | 1 | 1 | 0 | 0 | 1 |
1 | 1 | 0 | 1 | 1 | 0 | 1 | 1 |
1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 |
最终结果生成模块中,同或门U6的输入为xj和NEG,同或门U7的输入为xj-1和NEG,与门U8的输入为X1和同或门U6的输出,与门U9的输入为ZP和X2P,与门U10的输入为X2P和同或门U7的输出,或非门U11的输入为与门U8的输出、与门U9的输出和与门U10的输出,或非门U11的输出为PPj。
本实施例中,所述改进型Booth编码模块S202生成的部分积为MP[8:0][18:0]。
本实施例中,所述数据后处理模块S203包括用于对各个部分积的符号位进行优化处理的第一数据后处理单元和用于实现8输入加法运算的第二数据后处理单元;
所述第一数据后处理单元对各个部分积的符号位进行优化处理采用的计算公式为:
其中,S代表二进制数0或1,S的下标数字0~8代表权重,也就数二进制数S的位置;n为数字2的指数;
将公式(F1)进行简化得到:
其中,i为权重,也就数二进制数S的位置;
所述第二数据后处理单元对每行低位数据进行补零操作。
具体实施时,如图5所示,所述第一数据后处理单元处理过程为从S203a到S203b,处理过程在于简化运算,节省资源。乘法器部分积运算时,最高位要符号位补齐,但是这个操作需要额外消耗电路资源,对各个部分积的符号位进行优化处理,提前求和进行公式优化,如公式(F1)所示,计算得到公式(F2),因此后面计算时不需要再进行符号位拓展,只需要将每个部分积的最高位进行取反,增加新的一行,原来9个部分积,现在部分积有10个。新增的一行高18位为101010101010101011,后18位是产生部分积时的ADD信号,有ADD信号的位用ADD值补位,无ADD信号的位则补0。所述第二数据后处理单元处理过程为从S203b到S203c,对每行低位数据进行补零操作,目的是便于后面的压缩操作同时为了实现8输入加法运算,S203c为新的部分积阵列。
数据后处理模块S203实现对数据的后处理,处理之后的结果为BP[0]有19位、BP[1]有21位、BP[2]有23位、BP[3]有25位、BP[4]有27位、BP[5]有29位、BP[6]有31位、BP[7]有33位、BP[8]有35位、BP[9]有36位。
本实施例中,所述数据预处理模块S201对输入寄存器组S101输出的数据进行预处理时,将输入寄存器组S101输出的数据进行符号位拓展,得到与所述数据后处理模块S203输出数据相同的数据位宽。
具体实施时,如图6所示,数据预处理模块S201对输入数据ADDOPE[7:0][17:0]进行符号位拓展,得到与S203c相同的数据位宽。
本实施例中,所述压缩树约简单元S205对数据选择器S204输出的部分积阵列进行压缩处理时,采用五级压缩的方式(如图7中的S401、S402、S403、S404和S405),其中,第一级压缩S401和第二级压缩S402均采用3-2压缩器S500a、4-2压缩器S500b和5-2压缩器S500c相组合的方式进行压缩;第三级压缩S403采用3-2压缩器S500a的方式进行压缩,第四级压缩S404是第三级压缩的结果(为第五级压缩S405补零处理做铺垫),第五级压缩S405为补零处理。
具体每一级实现的结构如图7所示。
本实施例中,所述3-2压缩器S500a的计算公式为:
X1+X2+X3=sum+2*(carry) (F3)
其中,X1、X2和X3为3-2压缩器S500a接收的3个数据,X1、X2和X3的权重相同;sum为3-2压缩器S500a计算得到的求和值,sum的权重与X1、X2和X3的权重相同;carry为3-2压缩器S500a计算得到的进位,carry的权重比sum的权重高一位;
所述4-2压缩器S500b的计算公式为:
cin+X1+X2+X3+X4=sum+2*(cout+carry) (F4)
其中,cin、X1、X2、X3和X4为4-2压缩器S500b接收的5个数据,cin、X1、X2、X3和X4的权重相同,cin为进位数;sum为4-2压缩器S500b计算得到的求和值,sum的权重与cin、X1、X2、X3和X4的权重相同;cout和carry均为4-2压缩器S500b计算得到的进位,cout和carry的权重均比sum的权重高一位;
所述5-2压缩器S500c的计算公式为:
c1_in+c1_in+X1+X2+X3+X4+X5=sum+2*(c1_out+c2_out+carry) (F5)
其中,c1_in、c1_in、X1、X2、X3、X4和X5为5-2压缩器S500c接收的7个数据,c1_in、c1_in、X1、X2、X3、X4和X5的权重相同,c1_in和c1_in均为进位数;sum为5-2压缩器S500c计算得到的求和值,sum的权重与c1_in、c1_in、X1、X2、X3、X4和X5的权重相同;c1_out、c2_out和carry均为5-2压缩器S500c计算得到的进位,c1_out、c2_out和carry的权重均比sum的权重高一位。
压缩器S500,如图8所示,包含3-2压缩器S500a,4-2压缩器S500b,5-2压缩器S500c。
最终定制乘法器输出结果可为乘法器结果或多操作数加法运算结果。设计方案中也考虑定制乘法器性能情况,可在乘法器实现过程中加入寄存器。当然也可在S401、S402、S403、S404每一步骤后均***寄存器。理论上是可行的,但是出于乘法器结构电路面积考虑,追求更高的性价比,最好的选择是***一级流水线,对步骤S401的结果进行寄存。选择对S401的结果***流水线的另一个重要原因,在设计压缩阵列时尽可能将整个电路路径平均一分为二,将主要压缩单元放在第一级实现,所以在***流水线时可以尽量提高性能。但是这里综合考虑DSP的整体性能,实现一个全组合逻辑的定制乘法器已经满足DSP对乘法器性能的需求。对于流水线乘法器的设计思路,可在以后的设计中用到。
S405后的操作实际上是以36位加法器的形式实现的,由于设计是组合电路,选用加法器的核心是追求加法器的速度,在对比过各种加法器的性能后,选择采用Koggle_Stone树形加法器实现最终求和。由于Koggle_Stone加法器便于实现2的N次方位宽的加法,因此设计的加法器是32位宽的KS加法器和4位宽的超前进位加法器的结合形式。
第一通用乘法器S103a、第二通用乘法器S103b、第三通用乘法器S103c结构相同,它们只需要实现乘法运算即可,因此其结构与定制乘法器结构不同,这里的通用乘法器结构不在讨论范围,但是考虑到乘法器实现占用的面积,性能以及功耗,这里还是选择通用乘法器结构为Booth编码,Wallance压缩树和最后求和实现。
通用加法器S104a和S104b实现加法操作,两个加法器结构相同。它们是用来对乘法器的结果进行相加操作,从而让DSP可以支持二乘加运算。加法/累加器S106用来实现二级加法或者进行累加操作,从而让DSP可以支持三乘加,四乘加或者乘累加运算。链式加法器S107支持DSP块之间的链式加法操作。本发明中所有加法器的实现结构可以包括常用的Koggle_Stone、Sklansky、Knowles树形加法器,但仍可包含其他类型的加法器。
加法输出寄存器S105是对来自两组加法运算的结果进行寄存,用来提高DSP实现的频率。输出寄存器S108是对DSP模块输出结果进行最后寄存。因为DSP模块中***这些流水线寄存器,才使得DSP的性能得到提高,但是代价是增大DSP占用的面积。
本发明针对数字电路设计领域,FPGA中的DSP硬核结构。本发明目的在于实现一种可以直接支持多操作数加法运算的DSP结构。DSP架构设计S100内部详细的结构参考图1,在对DSP架构进行设计后,考虑对乘法器实现结构进行定制,其可以支持八个操作数加法运算。DSP为全定制结构,本结构用于嵌入到FPGA中,提升FPGA进行算数运算的性能。
具体的实施过程如下,根据DSP的模式可以分为独立乘法、双乘加、四乘加、乘法累加。选择不同的模式时由软件进行电路配置。因为多输入加法需要占据全部输入数据端口,因此设计支持的多输入加法存在于独立乘法和乘法累加模式下。
独立乘法模式下,首先输入数据经过输入寄存器组S101进行处理,处理结果送入定制乘法器和通用乘法器。若为简单乘法模式,此时定制乘法器配置成乘法功能,后面直接将结果输出,可以支持2个18bits有符号乘法,3个12bits有符号乘法或者4个9bits有符号乘法。若支持多输入加法模式,则将定制乘法器配置成多输入加法模式。定制乘法器S102输入来自输入寄存器组的输出数据,8个18bits的有符号数据,MAB输出结果是八个操作数加法运算的结果。最后将结果直接输出或者寄存输出即可。
双乘加模式下,首先输入数据经过输入寄存器组S101进行处理,处理结果送入第一通用乘法器S103a和定制乘法器S102。将上面两个乘法器运算结果送入通用加法器S104a得出结果。将下面第二通用乘法器S103b和第三通用乘法器S103c运算结果送入通用加法器S104b得出结果。然后将两个结果直接输出或者寄存输出即可。
四乘加模式下,是将四个乘法器的结果相加输出。第一通用乘法器S103a输出结果和定制乘法器S102输出结果,由通用加法器S104a相加计算得到输出。第二通用乘法器S103b输出结果和第三通用乘法器S103c输出结果,由通用加法器S104b相加计算得到输出,最后将两个加法器的结果送给加法/累加器S106计算。计算的结果可以选择是否继续进行链式加法操作。最后将结果直接输出或者寄存输出。
乘法累加模式下,可以实现单个乘法器乘法累加、两个乘法器乘法累加、三个乘法器乘法累加、四个乘法器乘法累加以及多输入加法累加。前四个功能下,定制乘法器S102均配置成乘法器,第五个功能下,定制乘法器S102配置成多输入加法模式,在时钟驱动下每拍增加8个18bits有符号数相加运算结果。加法/累加器S106的结果也可以选择是否继续进行链式加法操作。最后将结果直接输出或者寄存输出。
本领域内的技术人员应明白,本申请的实施例可提供为方法、***、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
前述对本发明的具体示例性实施方案的描述是为了说明和例证的目的。这些描述并非想将本发明限定为所公开的精确形式,并且很显然,根据上述教导,可以进行很多改变和变化。对示例性实施例进行选择和描述的目的在于解释本发明的特定原理及其实际应用,从而使得本领域的技术人员能够实现并利用本发明的各种不同的示例性实施方案以及各种不同的选择和改变。本发明的范围意在由权利要求书及其等同形式所限定。
Claims (9)
1.一种可直接支持多操作数加法运算的数字信号处理器,其特征在于,包括:
输入寄存器组(S101),用于对输入数据进行处理;
定制乘法器(S102),输入端与输入寄存器组(S101)的输出端连接,用于实现乘法运算或多操作数加法运算;
第一通用乘法器(S103a),输入端与输入寄存器组(S101)的输出端连接,用于实现乘法运算;
第二通用乘法器(S103b),输入端与输入寄存器组(S101)的输出端连接,用于实现乘法运算;
第三通用乘法器(S103c),输入端与输入寄存器组(S101)的输出端连接,用于实现乘法运算;
第一加法器(S104a),输入端与第一通用乘法器(S103a)的输出端和定制乘法器(S102)的输出端连接,用于实现加法运算;
第二加法器(S104b),输入端与第二通用乘法器(S103b)的输出端和第三通用乘法器(S103c)的输出端连接,用于实现加法运算;
加法输出寄存器(S105),输入端与第一加法器(S104a)的输出端和第二加法器(S104b)的输出端连接,用于对输出数据进行处理;
加法/累加器(S106),输入端与加法输出寄存器(S105)的输出端连接,用于对加法输出寄存器(S105)输出的数据进行累加;
链式加法器(S107),输入端与加法/累加器(S106)的输出端连接,用于实现链式加法;
输出寄存器(S108),输入端与链式加法器(S107)的输出端连接,用于对输出数据进行处理。
2.按照权利要求1所述的一种可直接支持多操作数加法运算的数字信号处理器,其特征在于:所述输入寄存器组(S101)包括依次连接的第一多路选择器、延时寄存器和第二多路选择器。
3.按照权利要求2所述的一种可直接支持多操作数加法运算的数字信号处理器,其特征在于:所述第一多路选择器和第二多路选择器均为2选1多路选择器。
4.按照权利要求1所述的一种可直接支持多操作数加法运算的数字信号处理器,其特征在于:所述定制乘法器(S102)包括:
数据预处理模块(S201):用于对输入寄存器组(S101)输出的数据进行预处理;
改进型Booth编码模块(S202):用于对输入寄存器组(S101)输出的数据进行Booth编码,产生部分积;
数据后处理模块(S203):与改进型Booth编码模块(S202)的输出端连接,用于对改进型Booth编码模块(S202)输出的数据进行后处理;
数据选择器(S204):与数据预处理模块(S201)的输出端和数据后处理模块(S203)的输出端连接,用于对数据预处理模块(S201)的输出结果和数据后处理模块(S203)的输出结果进行选择;
压缩树约简单元(S205):与数据选择器(S204)的输出端连接,用于对数据选择器(S204)输出的部分积阵列进行压缩处理,得到最终结果。
5.按照权利要求4所述的一种可直接支持多操作数加法运算的数字信号处理器,其特征在于:所述改进型Booth编码模块(S202)包括中间结果生成模块和最终结果生成模块,所述中间结果生成模块包括并列设置的异或门U1、同或门U2、同或门U3和与非门U4,以及与与非门U4的输出端连接的与门U5;所述最终结果生成模块包括并列设置的同或门U6和同或门U7,并列设置的与门U8、与门U9和与门U10,以及与与门U8、与门U9和与门U10的输出端均连接的或非门U11;所述同或门U6的输出端与与门U8的输入端连接,所述同或门U7的输出端与与门U10的输入端连接。
7.按照权利要求6所述的一种可直接支持多操作数加法运算的数字信号处理器,其特征在于:所述数据预处理模块(S201)对输入寄存器组(S101)输出的数据进行预处理时,将输入寄存器组(S101)输出的数据进行符号位拓展,得到与所述数据后处理模块(S203)输出数据相同的数据位宽。
8.按照权利要求4所述的一种可直接支持多操作数加法运算的数字信号处理器,其特征在于:所述压缩树约简单元(S205)对数据选择器(S204)输出的部分积阵列进行压缩处理时,采用五级压缩的方式,其中,第一级压缩和第二级压缩均采用3-2压缩器、4-2压缩器和5-2压缩器相组合的方式进行压缩;第三级压缩采用3-2压缩器的方式进行压缩,第四级压缩是第三级压缩的结果,第五级压缩为补零处理。
9.按照权利要求8所述的一种可直接支持多操作数加法运算的数字信号处理器,其特征在于:所述3-2压缩器(S500a)的计算公式为:
X1+X2+X3=sum+2*(carry) (F3)
其中,X1、X2和X3为3-2压缩器(S500a)接收的3个数据,X1、X2和X3的权重相同;sum为3-2压缩器(S500a)计算得到的求和值,sum的权重与X1、X2和X3的权重相同;carry为3-2压缩器(S500a)计算得到的进位,carry的权重比sum的权重高一位;
所述4-2压缩器(S500b)的计算公式为:
cin+X1+X2+X3+X4=sum+2*(cout+carry) (F4)
其中,cin、X1、X2、X3和X4为4-2压缩器(S500b)接收的5个数据,cin、X1、X2、X3和X4的权重相同,cin为进位数;sum为4-2压缩器(S500b)计算得到的求和值,sum的权重与cin、X1、X2、X3和X4的权重相同;cout和carry均为4-2压缩器(S500b)计算得到的进位,cout和carry的权重均比sum的权重高一位;
所述5-2压缩器(S500c)的计算公式为:
c1_in+c1_in+X1+X2+X3+X4+X5=sum+2*(c1_out+c2_out+carry) (F5)
其中,c1_in、c1_in、X1、X2、X3、X4和X5为5-2压缩器(S500c)接收的7个数据,c1_in、c1_in、X1、X2、X3、X4和X5的权重相同,c1_in和c1_in均为进位数;sum为5-2压缩器(S500c)计算得到的求和值,sum的权重与c1_in、c1_in、X1、X2、X3、X4和X5的权重相同;c1_out、c2_out和carry均为5-2压缩器(S500c)计算得到的进位,c1_out、c2_out和carry的权重均比sum的权重高一位。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111373579.2A CN114089949A (zh) | 2021-11-19 | 2021-11-19 | 一种可直接支持多操作数加法运算的数字信号处理器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111373579.2A CN114089949A (zh) | 2021-11-19 | 2021-11-19 | 一种可直接支持多操作数加法运算的数字信号处理器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114089949A true CN114089949A (zh) | 2022-02-25 |
Family
ID=80302419
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111373579.2A Pending CN114089949A (zh) | 2021-11-19 | 2021-11-19 | 一种可直接支持多操作数加法运算的数字信号处理器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114089949A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116205244A (zh) * | 2023-05-06 | 2023-06-02 | 中科亿海微电子科技(苏州)有限公司 | 一种数字信号处理结构 |
-
2021
- 2021-11-19 CN CN202111373579.2A patent/CN114089949A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116205244A (zh) * | 2023-05-06 | 2023-06-02 | 中科亿海微电子科技(苏州)有限公司 | 一种数字信号处理结构 |
CN116205244B (zh) * | 2023-05-06 | 2023-08-11 | 中科亿海微电子科技(苏州)有限公司 | 一种数字信号处理结构 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Samimi et al. | Res-DNN: A residue number system-based DNN accelerator unit | |
US20210349692A1 (en) | Multiplier and multiplication method | |
US6601077B1 (en) | DSP unit for multi-level global accumulation | |
CN112540743B (zh) | 面向可重构处理器的有无符号乘累加器及方法 | |
CN115344237B (zh) | 结合Karatsuba和蒙哥马利模乘的数据处理方法 | |
EP1576493A1 (en) | Method and a system for performing calculation operations and a device | |
CN109753268B (zh) | 多粒度并行运算乘法器 | |
CN101625634A (zh) | 一种可重构的乘法器 | |
KR20190074938A (ko) | 인공 신경망을 위한 디지털 뉴런, 인공 뉴런 및 이를 포함하는 추론 엔진 | |
CN100465877C (zh) | 高速***式乘累加器mac装置 | |
CN110688086A (zh) | 一种可重构的整型-浮点加法器 | |
CN114089949A (zh) | 一种可直接支持多操作数加法运算的数字信号处理器 | |
CN116450217A (zh) | 一种多功能定点乘法和乘累加运算装置及方法 | |
CN112558920B (zh) | 有/无符号乘累加装置及方法 | |
CN116205244B (zh) | 一种数字信号处理结构 | |
CN116661734B (zh) | 支持多输入多格式的低精度乘加运算器 | |
CN113608718A (zh) | 一种实现素数域大整数模乘计算加速的方法 | |
CN112241251A (zh) | 用于处理浮点数的设备和方法 | |
CN112241252A (zh) | 用于处理浮点数的设备和方法 | |
CN110659014B (zh) | 乘法器及神经网络计算平台 | |
CN114237550B (zh) | 一种基于Wallace树的多输入移位求和累加器 | |
Kumar et al. | VLSI architecture of pipelined booth wallace MAC unit | |
US20040199558A1 (en) | DSP execution unit for efficient alternate modes of operation | |
JP2765516B2 (ja) | 積和演算器 | |
CN115857873B (zh) | 乘法器、乘法计算方法、处理***及存储介质 |
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 |