CN111221496A - 一种使用fpga实现浮点数据累加的方法 - Google Patents

一种使用fpga实现浮点数据累加的方法 Download PDF

Info

Publication number
CN111221496A
CN111221496A CN201811417160.0A CN201811417160A CN111221496A CN 111221496 A CN111221496 A CN 111221496A CN 201811417160 A CN201811417160 A CN 201811417160A CN 111221496 A CN111221496 A CN 111221496A
Authority
CN
China
Prior art keywords
fifo
data
accumulation
floating point
adder
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.)
Granted
Application number
CN201811417160.0A
Other languages
English (en)
Other versions
CN111221496B (zh
Inventor
尹珏玮
张辉
李长存
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Huahang Radio Measurement Research Institute
Original Assignee
Beijing Huahang Radio Measurement Research Institute
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Huahang Radio Measurement Research Institute filed Critical Beijing Huahang Radio Measurement Research Institute
Priority to CN201811417160.0A priority Critical patent/CN111221496B/zh
Publication of CN111221496A publication Critical patent/CN111221496A/zh
Application granted granted Critical
Publication of CN111221496B publication Critical patent/CN111221496B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/485Adding; Subtracting
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Computing Systems (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Nonlinear Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Image Processing (AREA)
  • Complex Calculations (AREA)

Abstract

一种使用FPGA实现浮点数据累加的方法,包括以下步骤:S1、浮点数据前期无堵塞流水累加;S2、浮点数据末段累加中间结果累加。本发明基于FPGA器件,提出了一种适用于大数据量场合的浮点数据累加运算结构,该结构资源利用率极少,并且能够解决DSP处理器等软件累加方法无法满足雷达成像系统实时性要求的问题,大大提高了累加运算的速度。

Description

一种使用FPGA实现浮点数据累加的方法
技术领域
本发明涉及合成孔径雷达领域,特别是合成孔径雷达成像处理领域。
背景技术
目前利用合成孔径雷达对海面舰船目标进行成像时,为了提高成像质量,通常需要对已进行SAR处理的大量目标回波数据再次进行ISAR处理。浮点数据累加单元作为信号处理中常用的基本算法单元,广泛应用在SAR、ISAR等运算过程中。传统的累加器是通过将加法器的输出反馈到输入端来实现的,如果采用DSP等处理器编程来实现,将耗费大量的CPU运行时间,这对于实时性要求极高的雷达成像系统是无法接受的,因此浮点数据累加成为了制约雷达信号处理速度的瓶颈之一。
目前雷达成像系统中,数字信号处理主要采用DSP和FPGA两种器件。
若采用DSP来实现浮点数累加,将占用大量的时间,效率较低,无法满足实时性的要求。
若采用FPGA来实现浮点数累加,传统的方法是基于FPGA开发商的浮点数加法器IP核来进行设计的。以Xilinx公司的Floating-point 5.0IP核为例,该IP核存在12级流水延迟。若采用传统的累加器方法,将加法器的输出反馈到输入端,将会导致流水处理的堵塞。若要保证流水处理,缩短数据处理的时间,需调用多个浮点数加法器IP核进行加法的级联处理。该方法虽然减少了信号处理所需时间,但浮点数加法器资源的使用率却增大了几倍。在很多应用场合,这对于FPGA器件来说也是难以接受的。
发明内容
本发明所要解决的技术问题是,提出一种适用于FPGA逻辑电路的、资源消耗少的、高效的浮点数据累加的方法,以满足雷达成像系统对浮点运算实时性要求较高的需求。
一种使用FPGA实现浮点数据累加的方法,其特征是包括以下步骤:
S1、浮点数据前期无堵塞流水累加;
S2、浮点数据末段累加中间结果累加;
所述步骤S1浮点数据前期无堵塞流水累加,包括以下步骤:
浮点数据前期无堵塞流水累加操作时,原始输入数据作为浮点加法中的加数A,加法器输出的中间结果反馈到加法器的另一数据输入端,作为加数B;原始输入数据有效标志作为浮点加法器IP的输入有效标志;对加法器的输出结果用内部时钟进行一拍的寄存,整个加法的流水延迟为13个时钟周期;在无堵塞流水累加阶段,时钟周期为M时,加法器输出端结果为:
flt_add_result=X(M+1-13)+X(M+1-2*13)+…+X(M+1-k*13)
其中k为满足M-k*13≥=0的最大整数值;
设原始输入数据长度为N,且N>=13,则在时钟周期为N-12~N期间的13个累加中间值结果将被写入FIFO,在时钟周期为N时结束无堵塞累加阶段;在第N个时钟周期时,第N-13时刻的累加中间结果经过14个时钟延迟已经送至加法器的另一端,因此无堵塞流水累加一直保持到第N个时钟周期;N<13与N>=13的区别仅在于无堵塞累加阶段末尾时写入FIFO的累加中间值结果的个数不是13,而是N,即第二阶段浮点数据末段累加的数据向量长度n的取值为:
Figure BDA0001879749990000021
所述步骤S2浮点数据末段累加中间结果累加,包括以下步骤:
前期无堵塞累加阶段的最后13个时钟周期将得到n(n≤13)个中间结果,我们记为Z(i),i=1,2,3,…,n,第二阶段即需要对Z(i)进行累加处理;
fifo_wr为FIFO模块写信号,fifo_din、fifo_dout分别为FIFO模块的输入输出数据,fifo_vout为FIFO模块输出数据的有效标志,fifo_vout_flag是FIFO输出数据奇偶计数标志,flt_add_nd为输入到加法器的数据有效标志,flt_add_result为加法器输出,flt_add_rdy是加法器输出结果的有效标志。
末段累加时,当flt_add_rdy为高时,我们将加法器输出写入FIFO,若FIFO非空,我们则对FIFO进行读取操作;当fifo_vout有效且fifo_vout_flag为低时即奇数时,我们将fifo_dout锁存,作为加数A;当fifo_vout有效且fifo_vout_flag为高时即偶数时,我们将fifo_dout锁存,作为加数B,并且置flt_add_nd为高,完成一次加法。
对于初始输入的13个数据,经过上述操作,其中的12个数据将完成6次加法运算,每次加法经过14个时钟周期的延迟输出加法结果,共有6个中间累加结果将再次写入FIFO中;随后对FIFO中的7个数据重复上述操作,则将从FIFO中读出6个数据完成3次加法运算,得到3个中间结果并写入FIFO中;经过前两轮操作后,此时FIFO中存入了4个数据;对这个4数据再次重复两轮上述操作,我们即可得到最终的浮点数据累加结果。
本发明基于FPGA器件,提出了一种适用于大数据量场合的浮点数据累加运算结构,该结构资源利用率极少,并且能够解决DSP处理器等软件累加方法无法满足雷达成像系统实时性要求的问题,大大提高了累加运算的速度。
附图说明
图1是浮点数据累加结构图;
图2是浮点数据累加典型工作时序
图3是末段累加工作时序图
具体实施方式
本发明基于Xilinx公司的Floating-point 5.0IP核,提出一种新的浮点加法累加实现结构,实现了速度与资源之间的平衡。
本发明将累加过程包括以下步骤,从两个层次给出FPGA逻辑电路的实现方法:
S1、浮点数据前期无堵塞流水累加;
S2、浮点数据末段累加中间结果累加。
所述步骤S1浮点数据前期无堵塞流水累加,如图1所示,包括以下步骤:浮点数据前期无堵塞流水累加操作时,原始输入数据作为浮点加法中的加数A,加法器输出的中间结果反馈到加法器的另一数据输入端,作为加数B。原始输入数据有效标志作为浮点加法器IP的输入有效标志。为了提高FPGA时序性能,我们对加法器的输出结果用内部时钟进行了一拍的寄存。故整个加法的流水延迟为13个时钟周期。设第一个数据X(1)进入加法器的时刻为时间起始点,则前期无堵塞流水累加阶段,浮点加法器的两个输入端以及输出端的累加中间运算结果的数据变化如表1所示。
在时钟周期为13时,加法器输出端输出X(1)+0的结果,将X(1)寄存一拍后作为加数B反馈到加法器输入端。则时钟周期为14时进行X(1)+X(14)的运算并在时钟周期为26时输出X(1)+X(14)的结果。依此类推,在无堵塞流水累加阶段,时钟周期为M时,加法器输出端结果为:
flt_add_result=X(M+1-13)+X(M+1-2*13)+…+X(M+1-k*13)
其中k为满足M-k*13≥=0的最大整数值。
设原始输入数据长度为N,且N>=13,则在时钟周期为N-12~N期间的13个累加中间值结果将被写入FIFO,在时钟周期为N时结束无堵塞累加阶段。这里需要说明的是,在第N个时钟周期时,第N-13时刻的累加中间结果经过14个时钟延迟已经送至加法器的另一端,因此无堵塞流水累加一直保持到第N个时钟周期。N<13与N>=13的区别仅在于无堵塞累加阶段末尾时写入FIFO的累加中间值结果的个数不是13,而是N,即第二阶段浮点数据末段累加的数据向量长度n的取值为:
Figure BDA0001879749990000041
以N=100为例,给出无堵塞流水累加阶段的时序图。
表1无堵塞流水累加阶段加法器输入、输出变化表
时钟周期 加数A 加数B 输出端结果
1 X(1) 0 0
2 X(2) 0 0
3 X(3) 0 0
…… …… …… ……
11 X(11) 0 0
12 X(12) 0 0
13 X(13) 0 X(1)+0
14 X(14) X(1) X(2)+0
15 X(15) X(2) X(3)+0
…… …… …… ……
25 X(25) X(12) X(13)+0
26 X(26) X(13) X(1)+X(14)
27 X(27) X(1)+X(14) X(2)+X(15)
28 X(28) X(2)+X(15) X(3)+X(18)
…… …… …… ……
所述步骤S2浮点数据末段累加中间结果累加,包括以下步骤
前期无堵塞累加阶段的最后13个时钟周期将得到n(n≤13)个中间结果,我们记为Z(i),i=1,2,3,…,n,第二阶段即需要对Z(i)进行累加处理。下面以n=13为例,给出典型的操作时序流程图并进行说明。
在图3中,fifo_wr为FIFO模块写信号,fifo_din、fifo_dout分别为FIFO模块的输入输出数据,fifo_vout为FIFO模块输出数据的有效标志,fifo_vout_flag可以看作是FIFO输出数据奇偶计数标志。flt_add_nd为输入到加法器的数据有效标志,flt_add_result为加法器输出,flt_add_rdy是加法器输出结果的有效标志。
末段累加时,当flt_add_rdy为高时,我们将加法器输出写入FIFO,若FIFO非空,我们则对FIFO进行读取操作。当fifo_vout有效且fifo_vout_flag为低时即奇数时,我们将fifo_dout锁存,作为加数A;当fifo_vout有效且fifo_vout_flag为高时即偶数时,我们将fifo_dout锁存,作为加数B,并且置flt_add_nd为高,完成一次加法。对于初始输入的13个数据,经过上述操作,其中的12个数据将完成6次加法运算,每次加法经过14个时钟周期的延迟输出加法结果,共有6个中间累加结果将再次写入FIFO中。随后对FIFO中的7个数据重复上述操作,则将从FIFO中读出6个数据完成3次加法运算,得到3个中间结果并写入FIFO中。经过前两轮操作后,此时FIFO中存入了4个数据。对这个4数据再次重复两轮上述操作,我们即可得到最终的浮点数据累加结果。
当N≥13时,若按照本发明执行累加求和操作,由上述工作时序图可以看出,经过73个时钟周期延迟后便可得到最终的累加结果。对于雷达成像系统等数据量较大的场合,考虑到数据量往往成千上万,因此73个时钟周期的延迟可以忽略不计。因此在数据量较大的场合应用本发明结构执行浮点数累加操作时,几乎可以看做是全流水操作的。
本发明充分统筹利用FPGA内部资源,采用近似流水的方法,仅使用1个加法器和1个深度极小的FIFO便可以实现浮点数据的累加,且在数据量较大的应用场合,几乎可以达到数据的流水输入与输出。本发明既克服了传统软件计算方法实时性差的缺点,又充分节约了FPGA内部加法器资源,达到了速度与资源之间的平衡。
针对基于DSP处理器实现浮点数累加存在的实时性问题以及传统FPGA全流水实现方法的资源使用过高问题,本发明巧妙的设计出合理的累加结构,只使用1个加法器IP核和1个位宽为32bit、深度为16的FIFO便可实现任意长度的浮点数据的累加。且在雷达成像系统等数据量较大的场合应用时,几乎达到了数据的流水输入和输出,实现了速度与资源之间的平衡,具有较高的工程实际意义。

Claims (1)

1.一种使用FPGA实现浮点数据累加的方法,其特征是包括以下步骤:
S1、浮点数据前期无堵塞流水累加;
S2、浮点数据末段累加中间结果累加;
所述步骤S1浮点数据前期无堵塞流水累加,包括以下步骤:
浮点数据前期无堵塞流水累加操作时,原始输入数据作为浮点加法中的加数A,加法器输出的中间结果反馈到加法器的另一数据输入端,作为加数B;原始输入数据有效标志作为浮点加法器IP的输入有效标志;对加法器的输出结果用内部时钟进行一拍的寄存,整个加法的流水延迟为13个时钟周期;在无堵塞流水累加阶段,时钟周期为M时,加法器输出端结果为:
flt_add_result=X(M+1-13)+X(M+1-2*13)+…+X(M+1-k*13)
其中k为满足M-k*13≥=0的最大整数值;
设原始输入数据长度为N,且N>=13,则在时钟周期为N-12~N期间的13个累加中间值结果将被写入FIFO,在时钟周期为N时结束无堵塞累加阶段;在第N个时钟周期时,第N-13时刻的累加中间结果经过14个时钟延迟已经送至加法器的另一端,因此无堵塞流水累加一直保持到第N个时钟周期;N<13与N>=13的区别仅在于无堵塞累加阶段末尾时写入FIFO的累加中间值结果的个数不是13,而是N,即第二阶段浮点数据末段累加的数据向量长度n的取值为:
Figure FDA0001879749980000011
所述步骤S2浮点数据末段累加中间结果累加,包括以下步骤:
前期无堵塞累加阶段的最后13个时钟周期将得到n(n≤13)个中间结果,我们记为Z(i),i=1,2,3,…,n,第二阶段即需要对Z(i)进行累加处理;
fifo_wr为FIFO模块写信号,fifo_din、fifo_dout分别为FIFO模块的输入输出数据,fifo_vout为FIFO模块输出数据的有效标志,fifo_vout_flag是FIFO输出数据奇偶计数标志,flt_add_nd为输入到加法器的数据有效标志,flt_add_result为加法器输出,flt_add_rdy是加法器输出结果的有效标志。
末段累加时,当flt_add_rdy为高时,我们将加法器输出写入FIFO,若FIFO非空,我们则对FIFO进行读取操作;当fifo_vout有效且fifo_vout_flag为低时即奇数时,我们将fifo_dout锁存,作为加数A;当fifo_vout有效且fifo_vout_flag为高时即偶数时,我们将fifo_dout锁存,作为加数B,并且置flt_add_nd为高,完成一次加法。
对于初始输入的13个数据,经过上述操作,其中的12个数据将完成6次加法运算,每次加法经过14个时钟周期的延迟输出加法结果,共有6个中间累加结果将再次写入FIFO中;随后对FIFO中的7个数据重复上述操作,则将从FIFO中读出6个数据完成3次加法运算,得到3个中间结果并写入FIFO中;经过前两轮操作后,此时FIFO中存入了4个数据;对这个4数据再次重复两轮上述操作,我们即可得到最终的浮点数据累加结果。
CN201811417160.0A 2018-11-26 2018-11-26 一种使用fpga实现浮点数据累加的方法 Active CN111221496B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811417160.0A CN111221496B (zh) 2018-11-26 2018-11-26 一种使用fpga实现浮点数据累加的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811417160.0A CN111221496B (zh) 2018-11-26 2018-11-26 一种使用fpga实现浮点数据累加的方法

Publications (2)

Publication Number Publication Date
CN111221496A true CN111221496A (zh) 2020-06-02
CN111221496B CN111221496B (zh) 2023-06-13

Family

ID=70830235

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811417160.0A Active CN111221496B (zh) 2018-11-26 2018-11-26 一种使用fpga实现浮点数据累加的方法

Country Status (1)

Country Link
CN (1) CN111221496B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113283251A (zh) * 2021-06-11 2021-08-20 西安微电子技术研究所 一种基于二维流水线的n邻域累加/或的运算装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080046495A1 (en) * 2006-08-18 2008-02-21 Yun Du Multi-stage floating-point accumulator
CN102033732A (zh) * 2010-12-17 2011-04-27 浙江大学 基于fpga的高速低延迟浮点累加器及其实现方法
CN102629189A (zh) * 2012-03-15 2012-08-08 湖南大学 基于fpga的流水浮点乘累加方法
CN106126189A (zh) * 2014-07-02 2016-11-16 上海兆芯集成电路有限公司 微处理器中的方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080046495A1 (en) * 2006-08-18 2008-02-21 Yun Du Multi-stage floating-point accumulator
CN102033732A (zh) * 2010-12-17 2011-04-27 浙江大学 基于fpga的高速低延迟浮点累加器及其实现方法
CN102629189A (zh) * 2012-03-15 2012-08-08 湖南大学 基于fpga的流水浮点乘累加方法
CN106126189A (zh) * 2014-07-02 2016-11-16 上海兆芯集成电路有限公司 微处理器中的方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113283251A (zh) * 2021-06-11 2021-08-20 西安微电子技术研究所 一种基于二维流水线的n邻域累加/或的运算装置
CN113283251B (zh) * 2021-06-11 2023-05-30 西安微电子技术研究所 一种基于二维流水线的n邻域累加/或的运算装置

Also Published As

Publication number Publication date
CN111221496B (zh) 2023-06-13

Similar Documents

Publication Publication Date Title
WO2018193379A1 (en) Backpressure for accelerated deep learning
US10534576B2 (en) Optimization apparatus and control method thereof
CN105589677A (zh) 一种基于fpga的脉动结构矩阵乘法器及其实现方法
CN109284475B (zh) 一种矩阵卷积计算装置及矩阵卷积计算方法
CN103970720A (zh) 基于大规模粗粒度嵌入式可重构系统及其处理方法
US20170308324A1 (en) Systems, methods and devices for a multistage sequential data process
US20240119114A1 (en) Matrix Multiplier and Matrix Multiplier Control Method
US20210166156A1 (en) Data processing system and data processing method
CN105183425A (zh) 一种具有高精度低复杂度特性的固定位宽乘法器
CN111199017B (zh) 多功能厄密对称矩阵求逆ip核的实现方法
CN111221496B (zh) 一种使用fpga实现浮点数据累加的方法
WO2022262341A1 (zh) 一种数据调度系统、可重构处理器及数据调度方法
KR102023095B1 (ko) 확률적 컴퓨팅 곱셈 알고리즘을 이용한 신경망 가속 방법 및 신경망 가속기
CN100409259C (zh) 可缩放大规模二维卷积电路
Sun et al. A floating-point accumulator for FPGA-based high performance computing applications
CN103544111A (zh) 一种基于实时性处理的混合基fft方法
CN107092462B (zh) 一种基于fpga的64位异步乘法器
CN110187865B (zh) 全流水高吞吐率累加器及其数据处理方法
CN110677138B (zh) 基于无误差概率计算的fir滤波器
CN114528526B (zh) 卷积数据处理方法、装置、卷积运算加速器和存储介质
CN110096672A (zh) 基于fpga的低成本流水线型fft处理器实现方法
WO2018209978A1 (zh) Xiu-累加寄存器、xiu-累加寄存器电路、以及电子设备
CN111124358B (zh) 一种序列累加器的运算方法和设备
Poczekajło et al. Hardware implementation of 3D pipelined Laplace filter based on rotation structures
Raj et al. A paradigm of distributed arithmetic (DA) approaches for digital FIR filter

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
GR01 Patent grant
GR01 Patent grant