CN102629189B - 基于fpga的流水浮点乘累加方法 - Google Patents
基于fpga的流水浮点乘累加方法 Download PDFInfo
- Publication number
- CN102629189B CN102629189B CN201210069005.0A CN201210069005A CN102629189B CN 102629189 B CN102629189 B CN 102629189B CN 201210069005 A CN201210069005 A CN 201210069005A CN 102629189 B CN102629189 B CN 102629189B
- Authority
- CN
- China
- Prior art keywords
- floating
- point
- data
- point adder
- result
- 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.)
- Expired - Fee Related
Links
Landscapes
- Complex Calculations (AREA)
Abstract
一种基于FPGA的流水浮点乘累加方法,其步骤为:(1)输入需要进行乘累加计算的数量M;(2)将需要计算的M对32位二进制浮点数A、B依次输入浮点乘法器进行乘法运算,直至完成所有M对数据的运算;同时,将浮点乘法器的乘积结果与第一浮点加法器自身的加法结果连续输入到第一浮点加法器完成部分累加运算得到累加结果;(3)将所述步骤(2)得到的累加结果中的最后N级流水线的数据输入至第二浮点加法器中进行运算以得到整个乘累加过程的结果。本发明具有原理简单、通用性好、可提高运算速度等优点。
Description
技术领域
本发明主要涉及到嵌入式***的设计领域,特指一种基于FPGA的流水浮点乘累加方法。
背景技术
计算机运算主要分两种:定点运算和浮点运算。其中,定点运算主要是用于算术运算、逻辑运算、地址计算等,比如对定点整数和小数的运算、对逻辑数据的运算;浮点运算与定点运算相比,具有运算速度快、有效精度高、计数范围宽等特点,因此其更适合运用在工程计算与科学计算中,它已成为计算机运算的重要方式。
当前浮点运算多数采用DSP芯片来实现运算功能,这样可以简化算法,精度也变得更高。但是在某些情况下必须采用专门的浮点运算处理器来实现浮点运算,这是由于浮点运算结构比较复杂,在***对速度要求较高的情况下采用DSP芯片来实现浮点运算会增加***的负担并降低***的速度,使得继续采用DSP来实现浮点运算的优势不再明显。然而随着FPGA技术的不断成熟以及它所具有的高速、高集成、低成本、可在线编程等优点使FPGA广泛应用于各科学领域。
乘累加(Multiply Accumulate,MAC)是一个基本的数学运算,大型浮点数乘累加运算在DSP算法中有着举足轻重的地位,广泛的应用于图像处理、统计分析、生物医学等众多领域。近年来,很多学者基于FPGA的特性来研究浮点乘累加的算法,但都是基于目前比较成熟复杂的算法进行优化与改进,虽然此种思路可以细微的优化、提升整个算法在FPGA上的性能,但是并没有从业人员充分的利用知识产权核(Intellectual Property,IP)来设计优化乘累加器。由于IP核是FPGA的开发商根据自身FPGA的工艺与设计进行功能与布线的优化,从某种程度上讲已经达到较佳的性能,而且浮点运算的IP核全部都是基于流水线设计,为在此基础上进行进一步的设计应用提供了很好的基础。因此综合分析、巧妙的运用IP核的特性设计出实现浮点乘累加的方法,可以更好的达到FPGA的速度与面积的优化和算法性能的提升。
发明内容
本发明要解决的技术问题就在于:针对现有技术存在的技术问题,本发明提供一种原理简单、通用性好、可提高运算速度的基于FPGA的流水浮点乘累加方法。
为解决上述技术问题,本发明采用以下技术方案:
一种基于FPGA的流水浮点乘累加方法,其步骤为:
(1)输入需要进行乘累加计算的数量M;
(2)将需要计算的M对32位二进制浮点数A、B依次输入浮点乘法器进行乘法运算,直至完成所有M对数据的运算;同时,将浮点乘法器的乘积结果与第一浮点加法器自身的加法结果连续输入到第一浮点加法器完成部分累加运算得到累加结果;
(3)将所述步骤(2)得到的累加结果中的最后N级流水线的数据输入至第二浮点加法器中进行运算以得到整个乘累加过程的结果。
作为本发明的进一步改进:
所述步骤(2)中的执行流程为:
(2.1)根据浮点乘法计算的流水特性,将外部要计算的数据直接连续输入到浮点乘法器中进行运算,并在乘积输出流水线数据有效的时候使能第一浮点加法器的使能信号;
(2.2)根据浮点加法计算的流水特性,将浮点乘法器的结果作为第一浮点加法器的一个数据,而第一浮点加法器自身的输出和作为另一个数据连续输入,不断完成加法的操作。
所述步骤(3)中第二浮点加法器采用加法树,第二浮点加法器的流水线为7级,它的执行流程为:
(3.1)加法树的第一级:分别将6个数据划分为三组,在第1-3个周期输入第二浮点加法器;由于流水线为7级,因此在第8、9、10个周期的时候分别输出三组结果;
(3.2)加法树的第二级:在第11和12个周期的时候分别将步骤(3.1)中的三个结果和之前剩下的一个数据组成两组连续输入到第二浮点加法器进行运算,分别在第17、18个周期的时候输出两个结果;
(3.3)最后在第19个周期的时候将步骤(3.2)中的两个结果同时输入第二浮点加法器完成加法树的最后一级运算,在第26个周期的时候输出最终的累加结果。
与现有技术相比,本发明的优点在于:
(1)本发明的浮点乘累加方法可以实现任意大小的乘法累加运算,不对数据有任何的约束与局限,能够广泛的应用于任何从简单到复杂的数字信号处理算法中;
(2)本发明的结构是基于流水线进行设计,巧妙的应用浮点乘法器与浮点加法器IP核的流水线特性,使得复杂的乘累加运算在经过前端的乘法与加法运算之后,最后只需要计算加法器N级流水线的数据之和即可,不仅简化了乘累加器的实现方法,同时提升了其在FPGA上的运行速度,可以有效的加快各种复杂的数学运算速度;
(3)本发明具有模块化设计思想,使得本发明的可移植性较强,通用性较好,针对不同平台只需要重新配置IP核即可使用。
附图说明
图1是本发明的整体流程示意图。
图2是用来实现本发明方法的模块结构原理示意图。
图3是本发明中所采用单精度浮点数的存储格式示意图。
图4是具体实施例中浮点乘法器与第一浮点加法器的结构示意图。
图5是具体实施例中浮点乘法器与第一浮点加法器工作的流程示意图。
图6是具体实施例中第一浮点加法器实现累加的原理示意图。
图7是具体实施例中第二浮点加法器实现加法树的流程示意图。
图8是具体实施例中加法树的结构示意图。
具体实施方式
以下将结合说明书附图和具体实施例对本发明做进一步详细说明。
如图1所示,本发明基于FPGA的浮点乘累加器方法,其流程为:
(1)通过外部模块输入需要进行乘累加计算的数量M;整个计算过程将根据M值来驱动浮点乘法器、浮点加法器以及各个计算模块的使能信号;
(2)根据乘法累加器的计算法则以及浮点乘法器与加法器IP核的流水特性,将需要计算的M对32位二进制浮点数A、B依次同时输入浮点乘法器进行乘法运算,每对A、B为一组输入,直至完成所有M对数据的运算;同时,根据控制信号分别将乘积结果与第一浮点加法器自身的加法结果连续输入第一浮点加法器中完成部分累加运算得到累加结果;
(3)将步骤(2)得到的累加结果中最后N级流水线的数据输入第二浮点加法器中进行加法树的运算来实现整个乘累加过程的运算。
如图2所示,为具体实施例中用来实现本发明方法的模块结构原理示意图。其中,通过逻辑单元来控制浮点乘法器、第一浮点加法器、第二浮点加法器的使能信号及数据流向;再通过第一状态机来实现第一浮点加法器往存储模块中的数据结果存储以及通过第二状态机来实现最后第二浮点加法器中加法树的运算控制。正是经过上述各个模块的相互控制与运算,进而得出最终的累加结果输出。图中的En、En’表示模块的使能信号;Control、control'、Control"表示信号按照箭头所指方向控制后面模块;M_Result和A_Result、A_Result'分别表示浮点乘法器、第一浮点加法器、第二浮点加法器的计算结果。
本实施例中,采用的浮点数格式为IEEE754标准格式,其存储格式如图3所示。IEEE754标准是现代处理器中最常用的浮点数表示方法,它不仅规定了浮点数的格式,还规定了摄入模式和处理舍入误差、上溢出、下溢出等异常情况的方法,IEEE754标准规定了单精度浮点数表示为32位,由三部分组成:23位的尾数f,8位偏指数e,1位符号位s。s位中0表示正数,1表示负数;1.f是有效数,1是隐藏位,f是小于1的小数。
浮点数值的计算公式可表示为:
Val=(-1)S*1.f*2(e-b)
其中b为偏置值127。
如图4和图5所示,在本实施例中,上述步骤(2)的具体步骤为:
(2.1)根据浮点乘法计算的流水特性,将外部要计算的数据直接连续输入到浮点乘法器中进行运算,并在乘积输出流水线数据有效的时候使能第一浮点加法器的使能(En)信号;
(2.2)由于浮点加法计算的流水特性,可以将浮点乘法器的结果作为加法的一个数据,第一浮点加法器自身的输出和作为另一个数据连续输入,不断完成加法的操作;将最终只有加法流水线级数N(本实施例为7级)的结果送入第二浮点加法器的加法树中,完成部分乘法的累加。
即,该步骤中是将浮点数据A、B分别输入到浮点乘法器中完成乘法运算,之后将乘积和第一浮点加法器自身的结果分别作为第一浮点加法器的数据进行加法运算。根据时序条件判断是否为加法器流水线级数(即N个加法结果);如果是,则只存储这N个数据来进行随后的加法树运算;如果否,则继续进行加法运算等待直至满足条件。
由于浮点运算的复杂性,在FPGA硬件逻辑中,所有的运算都不可能像定点数一样基于组合逻辑在一个时钟周期内完成,在完成基本数据运算的同时还需要分别完成指数与尾数的操作,包括指数对阶和尾数调整的过程,因此累加运算成为整个MAC的重点也是整个设计的核心。
本实施例中,采用的累加结构如图6所示,如上所述将加法器自身的输出和作为一个加数完成累加的运算。第一浮点加法器的结果初始化为0,假设一个具有N级流水线的加法器从第一个时钟开始进行加法,在第N+1个周期时输出第一次运算的结果,并将其作为第N+1次加法的输入,N+2个周期时输出第二次运算的结果再作为第N+2次加法的输入,……如此循环,若有M(M>N)个数据参与运算,则当M+1个周期时输出的为(M+1-N)次加法的结果,此结果包含了第(M+1-N)、(M+1-2N)、(M+1-3N)、……次相加的所有结果,当(M+N)个周期时输出的为M次加法的结果,此数据包含了第(M-N)、(M-2N)、……次相加的所有结果,……因此只需要将最后从第(M+1)到(M+N)个周期的结果进行相加(共加法流水线周期数N个数),通过最后的第二浮点加法器中加法树运算即完成了前面所有数据的加法运算,实现乘法积的累加运算。本发明正是巧妙的应用了浮点乘法与加法IP核的流水特性,设计出了此方法来完成乘法累加方法的运算。
如图7所示,在本实施例中,第二浮点加法器中加法树运算的具体流程为:根据浮点加法器的流水特性及复杂的时序关系,通过第二状态机从上一个过程存储的数据与本加法树的中间结果中选择参与加法运算的数据A、B,直至完成最后N个数据的加法运算,计算出最终的乘法累加结果并输出。
如图8所示,在本实施例中,将最后7个数实现加法树运算的具体步骤为:
(1)加法树的第一级:分别将6个数据划分为三组在第1-3个周期输入加法器,由于加法器的流水线为7级,因此在第8、9、10个周期的时候分别输出三组结果x,y,z。
(2)加法树的第二级:在第11和12个周期的时候分别将x,g和y,z两组数据输入加法器进行运算,在第17、18个周期的时候输出结果m和n。
(3)最后在第19个周期的时候将m与n同时输入加法器完成加法树的最后一级运算,在第26个周期的时候输出最终的累加结果result。
图8中,第二浮点加法器左侧的a、b、c、d、e、f、x、y、z、g、m、n都表示浮点加法器的按照流水线的输入数据,右侧的x、y、z、m、n表示加法器的输出结果,result为最终累加器的数据结果。
Altera的一个7级流水线加法器占用FPGA796个LE、339个Registers、36个Memory bits的资源,因此综合考虑加法树实现的速度、占用FPGA的面积以及加法器的流水线特性,本发明采用了上述的设计方法,而不是直接使用三个或者四个加法器来并行处理第一级中7个数据的相加运算。
本实施例经Synplify综合最高频率可以达到150.9MHZ,占用1549个LE,1258个Registers,72个Memory bits,分别只占了Cyclone III EP3C25开发板资源的6.3%、4%和1%。此综合报告已可以看出本发明设计基于FPGA的浮点乘法累加器达到了速度与面积的综合优化。
以上仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,应视为本发明的保护范围。
Claims (1)
1.一种基于FPGA的流水浮点乘累加方法,其特征在于,步骤为:
(1)输入需要进行乘累加计算的数量M;
(2)将需要计算的M对32位二进制浮点数A、B依次输入浮点乘法器进行乘法运算,直至完成所有M对数据的运算;同时,将浮点乘法器的乘积结果与第一浮点加法器自身的加法结果连续输入到第一浮点加法器完成部分累加运算得到累加结果;
(3)将所述步骤(2)得到的累加结果中的最后N级流水线的数据输入至第二浮点加法器中进行运算以得到整个乘累加过程的结果;
所述步骤(2)中的执行流程为:
(2.1)根据浮点乘法计算的流水特性,将外部要计算的数据直接连续输入到浮点乘法器中进行运算,并在乘积输出流水线数据有效的时候使能第一浮点加法器的使能信号;
(2.2)根据浮点加法计算的流水特性,将浮点乘法器的结果作为第一浮点加法器的一个数据,而第一浮点加法器自身的输出和作为另一个数据连续输入,不断完成加法的操作;
所述步骤(3)中第二浮点加法器采用加法树,第二浮点加法器的流水线为7级,它的执行流程为:
(3.1)加法树的第一级:分别将6个数据划分为三组,在第1-3个周期输入第二浮点加法器;由于流水线为7级,因此在第8、9、10个周期的时候分别输出三组结果;
(3.2)加法树的第二级:在第11和12个周期的时候分别将步骤(3.1)中的三个结果和之前剩下的一个数据组成两组连续输入到第二浮点加法器进行运算,分别在第17、18个周期的时候输出两个结果;
(3.3)最后在第19个周期的时候将步骤(3.2)中的两个结果同时输入第二浮点加法器完成加法树的最后一级运算,在第26个周期的时候输出最终的累加结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210069005.0A CN102629189B (zh) | 2012-03-15 | 2012-03-15 | 基于fpga的流水浮点乘累加方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210069005.0A CN102629189B (zh) | 2012-03-15 | 2012-03-15 | 基于fpga的流水浮点乘累加方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102629189A CN102629189A (zh) | 2012-08-08 |
CN102629189B true CN102629189B (zh) | 2014-12-10 |
Family
ID=46587450
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210069005.0A Expired - Fee Related CN102629189B (zh) | 2012-03-15 | 2012-03-15 | 基于fpga的流水浮点乘累加方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102629189B (zh) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103699355B (zh) * | 2013-12-30 | 2017-02-08 | 南京大学 | 一种变阶流水串行乘累加器 |
CN103984520A (zh) * | 2014-04-22 | 2014-08-13 | 浙江大学 | 面向无损音频解码算法的自调乘累加装置 |
CN105589677A (zh) * | 2014-11-17 | 2016-05-18 | 沈阳高精数控智能技术股份有限公司 | 一种基于fpga的脉动结构矩阵乘法器及其实现方法 |
US9785405B2 (en) * | 2015-05-29 | 2017-10-10 | Huawei Technologies Co., Ltd. | Increment/decrement apparatus and method |
CN105892988B (zh) * | 2016-04-26 | 2019-03-01 | 广州致远电子股份有限公司 | 一种基于fpga的运算电路、示波器和测量仪器 |
CN110073329B (zh) * | 2016-12-16 | 2021-06-22 | 华为技术有限公司 | 访存设备、计算设备和应用于卷积神经网络运算的设备 |
CN108051794A (zh) * | 2017-12-11 | 2018-05-18 | 湖南时变通讯科技有限公司 | 一种实现mti计算的方法和装置 |
CN108108150B (zh) * | 2017-12-19 | 2021-11-16 | 云知声智能科技股份有限公司 | 乘累加运算方法及装置 |
CN109508024B (zh) * | 2018-11-09 | 2022-07-19 | 中国船舶重工集团公司第七二三研究所 | 一种舰载电子侦察设备的快速高精度姿态补偿方法 |
CN111221496B (zh) * | 2018-11-26 | 2023-06-13 | 北京华航无线电测量研究所 | 一种使用fpga实现浮点数据累加的方法 |
CN109739555B (zh) * | 2019-01-04 | 2023-06-16 | 腾讯科技(深圳)有限公司 | 包括乘累加模块的芯片、终端及控制方法 |
US11288220B2 (en) * | 2019-10-18 | 2022-03-29 | Achronix Semiconductor Corporation | Cascade communications between FPGA tiles |
CN113033798B (zh) * | 2019-12-24 | 2023-11-24 | 北京灵汐科技有限公司 | 一种降低精度损失的装置及方法 |
WO2021212285A1 (zh) * | 2020-04-20 | 2021-10-28 | 深圳市大疆创新科技有限公司 | 浮点累加装置、方法和计算机存储介质 |
CN112051981B (zh) * | 2020-09-15 | 2023-09-01 | 厦门壹普智慧科技有限公司 | 一种数据流水线计算路径结构及单线程数据流水线*** |
CN112734020B (zh) * | 2020-12-28 | 2022-03-25 | 中国电子科技集团公司第十五研究所 | 卷积神经网络的卷积乘累加硬件加速装置、***以及方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2017743A2 (en) * | 2007-07-19 | 2009-01-21 | Itt Manufacturing Enterprises, Inc. | High speed and efficient matrix multiplication hardware module |
CN101794210A (zh) * | 2010-04-07 | 2010-08-04 | 上海交通大学 | 基于fpga的通用矩阵浮点乘法器 |
CN102033732A (zh) * | 2010-12-17 | 2011-04-27 | 浙江大学 | 基于fpga的高速低延迟浮点累加器及其实现方法 |
-
2012
- 2012-03-15 CN CN201210069005.0A patent/CN102629189B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2017743A2 (en) * | 2007-07-19 | 2009-01-21 | Itt Manufacturing Enterprises, Inc. | High speed and efficient matrix multiplication hardware module |
CN101794210A (zh) * | 2010-04-07 | 2010-08-04 | 上海交通大学 | 基于fpga的通用矩阵浮点乘法器 |
CN102033732A (zh) * | 2010-12-17 | 2011-04-27 | 浙江大学 | 基于fpga的高速低延迟浮点累加器及其实现方法 |
Non-Patent Citations (4)
Title |
---|
Ling Zhuo,et al..scalable and modular algorithms for floating-point matrix multiplication on FPGAs.《Parallel and Distributed Processing Symposium,2004》.2004,1-10. * |
scalable and modular algorithms for floating-point matrix multiplication on FPGAs;Ling Zhuo,et al.;《Parallel and Distributed Processing Symposium,2004》;20040430;1-8 * |
李宏钧,等..流水线的FPGA低功耗设计.《计算机***应用》.2010,第19卷(第8期),234-237. * |
流水线的FPGA低功耗设计;李宏钧,等.;《计算机***应用》;20100831;第19卷(第8期);234-237 * |
Also Published As
Publication number | Publication date |
---|---|
CN102629189A (zh) | 2012-08-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102629189B (zh) | 基于fpga的流水浮点乘累加方法 | |
CN104111816B (zh) | Gpdsp中多功能simd结构浮点融合乘加运算装置 | |
CN103176767B (zh) | 一种低功耗高吞吐的浮点数乘累加单元的实现方法 | |
US9753695B2 (en) | Datapath circuit for digital signal processors | |
CN102722352B (zh) | 一种Booth乘法器 | |
CN109146067B (zh) | 一种基于FPGA的Policy卷积神经网络加速器 | |
CN106951211B (zh) | 一种可重构定浮点通用乘法器 | |
CN1928809A (zh) | 用于执行浮点运算的***、设备和方法 | |
EP3447634A1 (en) | Non-linear function computing device and method | |
US8805914B2 (en) | Method and apparatus for performing numerical calculations | |
CN103914276A (zh) | 利用浮点架构的定点除法电路 | |
CN106250098A (zh) | 用于在执行浮点运算时控制舍入的装置及方法 | |
Mehta et al. | Implementation of single precision floating point multiplier using karatsuba algorithm | |
CN103279323A (zh) | 一种加法器 | |
CN1740962A (zh) | 一种快速流水线型除法器 | |
CN103809931A (zh) | 一种专用高速浮点指数运算器的设计 | |
Daud et al. | Hybrid modified booth encoded algorithm-carry save adder fast multiplier | |
CN202281998U (zh) | 一种标量浮点运算加速器 | |
Gollamudi et al. | Design Of High Performance IEEE-754 Single Precision (32 bit) Floating Point Adder Using VHDL | |
CN108255463A (zh) | 一种数字逻辑运算方法、电路和fpga芯片 | |
Hsiao et al. | Design of a low-cost floating-point programmable vertex processor for mobile graphics applications based on hybrid number system | |
CN102929575A (zh) | 一种模乘法器 | |
CN203276276U (zh) | 一种实时数据处理单元及处理器 | |
Harika et al. | Analysis of different multiplication algorithms & FPGA implementation | |
Ravi et al. | Analysis and study of different multipliers to design floating point MAC units for digital signal processing applications |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20141210 Termination date: 20180315 |