CN113283251B - 一种基于二维流水线的n邻域累加/或的运算装置 - Google Patents

一种基于二维流水线的n邻域累加/或的运算装置 Download PDF

Info

Publication number
CN113283251B
CN113283251B CN202110656400.8A CN202110656400A CN113283251B CN 113283251 B CN113283251 B CN 113283251B CN 202110656400 A CN202110656400 A CN 202110656400A CN 113283251 B CN113283251 B CN 113283251B
Authority
CN
China
Prior art keywords
accumulation
data
line
module
calculation
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.)
Active
Application number
CN202110656400.8A
Other languages
English (en)
Other versions
CN113283251A (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.)
Xian Microelectronics Technology Institute
Original Assignee
Xian Microelectronics Technology 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 Xian Microelectronics Technology Institute filed Critical Xian Microelectronics Technology Institute
Priority to CN202110656400.8A priority Critical patent/CN113283251B/zh
Publication of CN113283251A publication Critical patent/CN113283251A/zh
Application granted granted Critical
Publication of CN113283251B publication Critical patent/CN113283251B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06GANALOGUE COMPUTERS
    • G06G7/00Devices in which the computing operation is performed by varying electric or magnetic quantities
    • G06G7/12Arrangements for performing computing operations, e.g. operational amplifiers
    • G06G7/14Arrangements for performing computing operations, e.g. operational amplifiers for addition or subtraction 
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • 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)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Image Processing (AREA)

Abstract

本发明公开了一种基于二维流水线的N邻域累加/或的运算装置,属于数字电路领域。一种基于二维流水线的N邻域累加/或的运算装置,包括行累加和模块及累加和流水线;所述行累加和模块用于对输入数据进行累加操作,依次对每行图像M个相邻数据的累加计算,对于每行数据,产生(X‑M+1)个行累加结果;所述累加和流水线用于多行数据之间的累加;本发明可在行、列两个维度对邻域内像素进行流水的或/累加计算,有效降低资源开销,提升计算效率,计算规模可配置以适应不同邻域。本发明提出的N邻域或/累加的运算装置,结构简单,配置灵活,可有效降低资源开销,提高计算效率。

Description

一种基于二维流水线的N邻域累加/或的运算装置
技术领域
本发明属于数字电路领域,尤其是一种基于二维流水线的N邻域累加/或的运算装置。
背景技术
在图像算法中,N邻域是指一个像素点和与这个像素点相邻N个点的像素点的集合,在许多图像解算算法中,都包括对某一像素点邻域内像素点进行加法运算/或运算的操作,如在去均值归一化互相关算法中,包含了对参考图内每一个像素点N邻域(N为模板图的大小)内所有像素进行累加和/平方累加的操作,在星点检测算法中,包含了对图像内每一个像素点N邻域内所有像素二值化后进行或的操作。一般来说,处理这种操作有两种方法:串行计算:即先将数据缓存起来,然后依次将数据从存储器内取出,送至计算单元进行计算,这样做的好处是节省计算资源,但计算效率较低。并行计算:即将需要处理的数据同时取出,在一个时钟周期内完成全部数据的计算。这样做计算效率高,但比较消耗计算资源。
大部分场景中,为保证计算速度,对这类N邻域内像素点的计算一般采用并行计算的方式,比如要对一个像素与其3×3邻域内所有像素进行累加操作,则要在一个时钟周期内对9个像素进行累加。要对一个像素与其5×5邻域内所有像素进行累加操作,则要在一个时钟周期内对25个像素进行累加。可以发现,当邻域越大,计算的规模就越大,要完成一个像素N邻域内所有像素点的计算,需要进行N次操作。这样的计算存在几个方面的问题,首先,在邻域较大时,直接计算结果需要大量的计算单元,这对硬件的资源和时序都带来了挑战;其次,在许多应用场景中,邻域N的值是可变的,假设邻域N在3×3至5×5内变化,那么当在进行3×3邻域计算时,为5×5邻域计算准备的大部分计算资源都是浪费的。
发明内容
本发明的目的在于克服邻域内像素点计算存在的计算资源浪费的缺点,提供一种基于二维流水线的N邻域累加/或的运算装置。
为达到上述目的,本发明采用以下技术方案予以实现:
一种基于二维流水线的N邻域累加的运算装置,包括行累加和模块及累加和流水线;
所述行累加和模块用于对输入数据进行累加操作,依次对每行图像M个相邻数据的累加计算,对于每行数据,产生(X-M+1)个行累加结果;
所述累加和流水线用于多行数据之间的累加;
其中,X为图像的行数;M为临域的行数。
进一步的,所述行累加模块由一个加法器、一个减法器和可缓存一行数据的FIFO组成;
加法器与减法器完成一次加法或者减法运算均需要一个时钟周期的时间;
FIFO缓存深度在1~X内可调,最多可缓存X个数据,FIFO缓存深度设为邻域的宽度M;FIFO的输入为行累加模块的数据输入Datain,FIFO的输出为M个周期前的Datain,当没有有效数据输出时,FIFO输出全0;
减法器的两个输入端口分别为行累加模块输入Datain和FIFO的输出,减法器的输出结果为Datain减FIFO输出的结果,所述结果是有符号数;当输入的数据个数小于等于M时,FIFO输出为0,减法器输出的值等于Datain;当输入的数据个数大于M时,FIFO的输出为M个周期前的Datain,减法器输出的值等于Datain减M个周期前的Datain;
加法器的两个输入端口分别是减法器的输出和自身的输出,加法器的输出结果由减法器计算的结果与加法器上一次计算结果相加得到。
进一步的,行累加模块的工作流程为:
数据从1~X行依次输入到行累加模块,当输入行累加模块的数据个数小于等于M时,减法器不参与计算,加法器将输入数据依次累加,在输入第M个数据时,得到1~M个数据的累加和,即行累加模块的第1个输出结果;
当输入行累加模块的数据个数大于M且小于等于X时,减法器开始工作,与加法器共同完成行累加和的计算,在输入第M+1个数据时,将上一个周期计算完成的1~M个数据的累加和结果,加上第M+1个数据,减去第1个数据,得到第2~M+1个数据的累加和,即行累加模块的第2个输出结果;
在输入第M+2个数据时,将上一个周期计算完成的2~M+1个数据的累加和结果,加上第M+2个数据,减去第2个数据,得到第3~M+2个数据的累加和;
以此类推,在第X个数据输入后,得到该行数据全部的行累加结果。
进一步的,所述累加和流水线由两个行累加模块、一个加法器和一个减法器组成;
AinA和AinB,分别作为行累加模块A与行累加模块B的输入。
进一步的,所述累加和流水线的工作流程为:
在启动计算后,数据按第1行~第Y行的顺序通过AinA端口进入行累加模块A进行计算;当AinA端口输入的行数小于等于N时,行累加模块B不参与计算,输出全0;当输入的行数大于N时,行累加模块B启动,数据按第1行~Y-N+1行的顺序通过AinB端口进入行累加模块B进行计算;
AinA加载一行数据的过程称为一次循环,累加和流水线需要完成M次循环才能完成全部的计算;
所述减法器用于在每次循环之后,将行累加模块A的计算结果Aout与行累加模块B的计算结果Bout,按Aout-Bout的方式按列依次进行减法运算;
所述加法器的操作数分别来自于减法器的输出与加法器结果缓存FIFO,所述FIFO存放的是加法器上一次循环运算的结果,加法器每次循环计算完成的结果写回这个FIFO中去;
从第N次循环开始,加法器输出的结果即为累加和流水线的最终计算结果,所述计算结果除了会放入加法器结果缓存FIFO中,还向外输出。
进一步的,所述累加和流水线由累加和流水线控制器SUMRC_CTRL、行累加和计算模块SUMRC_MARK2_A、行累加和计算模块SUMRC_MARK2_B、加法器、减法器和对应的缓存FIFO组成;
累加和流水线控制器SUMRC_CTRL用于按顺序从图像的最低行到最高行读取并传输图像数据;
行累加和计算模块SUMRC_MARK2_A用于计算图像1~Y行的行累加和,输出的结果在FIFO_A内进行缓存,行累加和计算模块SUMRC_MARK2_A每计算完一行便输出一行;
行累加和计算模块SUMRC_MARK2_B用于计算图像1~Y-N+1行的行累加和,输出的结果在FIFO_B内进行缓存;
所述加法器用于计算累加和的最终结果,当SUMRC_MARK2_A模块当前计算行数小于等于N时,所述加法器的输入是SUMRC_MARK2_A模块的输出;当SUMRC_MARK2_A模块当前计算行数大于N时,所述加法器的输入是SUMRC_MARK2_A和SUMRC_MARK2_B模块输出结果按列对应相减的值;在SUMRC_MARK2_A运算完第一行后,加法器将其输入直接存入加法器缓存FIFO_C中;之后的每次计算,加法器都将数据从FIFO_C中取出,按列与输入数据相加,再存回FIFO_C;
当SUMRC_MARK2_A模块计算行数大于等于N时,加法器的计算结果为最终计算结果,所述最终计算结果存入FIFO_C,还通过dout端口对外输出。
进一步的,当行累加和计算模块SUMRC_MARK2_A计算的行数小于等于N时,行累加和计算模块SUMRC_MARK2_B不启动,输出全0;
当行累加和计算模块SUMRC_MARK2_A模块计算的行数大于N时,累加和流水线控制器SUMRC_CTRL将参考图按行排列从参考图第一行依次从参考图存储器中读出,传输到SUMRC_MARK2_B模块中,SUMRC_MARK2_B每计算完一行便输出一行。
进一步的,累加和流水线的结果在输出前会存入FIFO_D;
FIFO_D是一个FIFO阵列,可以储存4行累加和流水线的计算结果;
当FIFO阵列存满4行结果时,累加和流水线暂停计算;
当FIFO_D有数据且外部存储器接收数据时,累加和流水线控制器从FIFO_D读取数据并通过累加和流水线的数据输出端口dout对外输出。
一种用于1bit数据的邻域内或的运算装置,在本发明的累加和流水线的输出端设置一个比较器;
当累加和流水线的计算结果等于0,所述比较器输出0;当累加和流水线的计算结果大于0,所述输出1。
一种用于多位数据的邻域内或的运算装置,基于本发明的1bit数据的邻域内或的运算装置进行改进,将加法器、减法器和比较器扩展为加法器阵列、减法器和比较器阵列;
每一个加法器、减法器和比较器对应数据的1位。
与现有技术相比,本发明具有以下有益效果:
本发明的基于二维流水线的N邻域累加/或的运算装置,可在行、列两个维度对邻域内像素进行流水的或/累加计算,有效降低资源开销,提升计算效率,计算规模可配置以适应不同邻域。本发明提出的N邻域或/累加的运算装置,结构简单,配置灵活,可有效降低资源开销,提高计算效率,本发明有效降低了资源开销,避免了因或运算组合逻辑过多而导致的时序紧张问题。
附图说明
图1为行累加模块的结构图;
图2为行累加模块计算时序图;
图3为累加和流水线的结构图;
图4为累加和流水线的输入时序图;
图5为累加和流水线的输出时序图;
图6为1位数据的邻域内或运算电路结构图;
图7为多位数据的邻域内或运算电路结构图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
下面结合图对本发明做进一步详细描述:
本发明提出一种基于二维流水线的N邻域累加的运算装置,该流水线将累加和的计算分为行方向与列方向两个部分,先在行方向由行累加模块完成行方向数据累加和的计算,再由列累加模块完成全部的计算。
假设图像大小为X×Y,临域大小为M×N,则图像临域内像素累加和的计算结果为大小为(X-M+1)×(Y-N+1)的矩阵。
在行方向,数据依次被加载至行累加和模块中,行累加和模块会根据配置的值对输入数据进行累加操作,行累加模块需要依次完成每行图像M个相邻数据的累加计算,对于每行数据,行累加模块会产生(X-M+1)个行累加结果。
行累加模块由一个加法器、一个减法器和可缓存一行数据的FIFO组成,加法器与减法器完成一次加法/减法运算均需要一个时钟周期的时间。数据从1~X依次输入进行累加模块,当输入行累加模块的数据个数小于等于M时,减法器不参与计算。加法器将输入数据依次累加。在输入第M个数据时,得到1~M个数据的累加和,即行累加模块的第1个输出结果。当输入行累加模块的数据个数大于M且小于等于X时,减法器开始工作,与加法器共同完成行累加和的计算,在输入第M+1个数据时,行累加和模块会将上一个周期计算完成的1~M个数据的累加和结果,加上第M+1个数据,减去第1个数据,得到第2~M+1个数据的累加和,即行累加模块的第2个输出结果。在输入第M+2个数据时,行累加模块会将上一个周期计算完成的2~M+1个数据的累加和结果,加上第M+2个数据,减去第2个数据,得到第3~M+2个数据的累加和。以此类推,在第X个数据输入进行累加模块后,即可得到该行数据全部的行累加结果。
行累加模块的结构如图1所示,由一个加法器、一个减法器和一个FIFO组成,FIFO缓存深度在1~X内可调,最多可缓存一行(X个)数据,在行累加模块里FIFO缓存深度被设为邻域的宽度M。FIFO的输入为行累加模块的数据输入Datain,FIFO的输出为M个周期前的Datain,当没有有效数据输出时,FIFO输出全0。减法器的两个输入端口分别为行累加模块输入Datain和FIFO的输出,减法器的输出结果为Datain减FIFO输出的结果,该结果是有符号数。当输入的数据个数小于等于M时,FIFO输出为0,因此减法器输出的值等于Datain。当输入的数据个数大于M时,FIFO的输出为M个周期前的Datain,减法器输出的值等于Datain减M个周期前的Datain。加法器的两个输入端口分别是减法器的输出和自身的输出。加法器的输出结果由减法器计算的结果与加法器上一次计算结果相加得到。
行累加模块的计算时序图如图2所示,假设X=7,M=5,在T0~T6时刻的数据输入分别为D0~D6,fifo在T0~T4时刻输出的结果是0,在T5时刻输出D0,在T6时刻输出D1。减法器在T1~T5时刻输出D0~D4,在T6时刻输出D5-D0的值,在T7时刻输出D6-D1的值。加法器在T6时刻输出D0~D4累加的结果,即行累加模块的第一个有效输出,在T8时刻输出D2~D6累加的结果,即行累加模块的最后一个有效输出。
在列方向,本发明通过构建累加和流水线的方式实现多行数据之间的累加,累加和流水线由两个行累加模块、一个加法器和一个减法器组成。累加和流水线有两个数据输入端口:AinA和AinB,分别作为行累加模块A与行累加模块B的输入。在启动计算后,数据按第1行~第Y行的顺序通过AinA端口进入行累加模块A进行计算。当AinA端口输入的行数小于等于N时,行累加模块B不参与计算,输出全0,当输入的行数大于N时,行累加模块B启动,数据按第1行~Y-N+1行的顺序通过AinB端口进入行累加模块B进行计算。在这里将AinA加载一行数据的过程称为一次循环,累加和流水线需要完成M次循环才能完成全部的计算。
累加和流水线中的减法器用于在每次循环之后,将行累加模块A的计算结果Aout与行累加模块B的计算结果Bout,按Aout-Bout的方式按列依次进行减法运算。
累加和流水线加法器的操作数分别来自于减法器的输出与加法器结果缓存FIFO,该FIFO存放的是加法器上一次循环运算的结果。加法器每次循环计算完成的结果也会写回这个FIFO中去。
从累加和流水线的第N次循环开始,加法器输出的结果即为累加和流水线的最终计算结果,该计算结果除了会放入加法器结果缓存FIFO中,还会向外输出。
累加和流水线的结构如图3所示。由累加和流水线控制器SUMRC_CTRL、行累加和计算模块SUMRC_MARK2_A、行累加和计算模块SUMRC_MARK2_B、加法器、减法器和对应的缓存FIFO组成。
SUMRC_MARK2_A用于计算图像1~Y行的行累加和。累加和流水线控制器SUMRC_CTRL将图像按顺序从图像的最低行到最高行依次从图像存储器中读取,传输到SUMRC_MARK2_A模块中。SUMRC_MARK2_A每计算完一行便输出一行。输出的结果在FIFO_A内进行缓存。
SUMRC_MARK2_B用于计算图像1~Y-N+1行的行累加和。当SUMRC_MARK2_A模块计算的行数小于等于N时,该模块不启动,输出全0。当SUMRC_MARK2_A模块计算的行数大于N时,累加和流水线控制器SUMRC_CTRL将参考图按行排列从参考图第一行依次从参考图存储器中读出,传输到SUMRC_MARK2_B模块中。SUMRC_MARK2_B每计算完一行便输出一行。输出的结果在FIFO_B内进行缓存。
加法器用于计算累加和的最终结果。在SUMRC_MARK2_A模块当前计算行数小于等于N时,它的输入是SUMRC_MARK2_A模块的输出。在SUMRC_MARK2_A模块当前计算行数大于N时在它的输入是SUMRC_MARK2_A和SUMRC_MARK2_B模块输出结果按列对应相减的值。
在SUMRC_MARK2_A运算完第一行后,加法器将其输入直接存入加法器缓存FIFO_C中。之后的每次计算,加法器都将数据从FIFO_C中取出,按列与输入数据相加,再存回FIFO_C。
当SUMRC_MARK2_A模块计算行数大于等于N时,加法器的计算结果即为最终计算结果,该结果除了会存入FIFO_C,还会通过dout端口对外输出。累加和流水线的结果输出前会存入FIFO_D。FIFO_D是一个FIFO阵列,可以储存4行累加和流水线的计算结果。当FIFO阵列存满4行结果时,累加和流水线会暂停计算。当FIFO_D有数据,且外部存储器可以接收数据时,累加和流水线控制器会从FIFO_D读取数据并通过累加和流水线的数据输出端口dout对外输出。
累加和流水线控制器SUMRC_CTRL用于与数据总线进行数据交互并对累加和流水线进行控制,累加和流水线的输入时序如图4所示,该时序图列举了X=8,N=2时,输入数据有效的前4个循环累加和流水线的输入时序。其信号定义如下所示。
PipeEN:累加和模块的使能信号,在启动累加和流水计算时将PipeEN置1。
AinIni_A/AinIni_B:单行计算启动信号,在每行参考图传输前置‘1’,维持一个时钟周期。分别对应行累加模块A和行累加模块B。
AinEn_A/AinEn_B:为数据有效信号,AinEn为高时表示当前数据有效,分别对应行累加模块A和行累加模块B。
Ain_A/Ain_B:图像数据,分别对应行累加模块A和行累加模块B。
AinId_A/AinId_B:参考图行数标识,标识当前数据是第几行参考图数据,分别对应行累加模块A和行累加模块B。
累加和流水线的输出时序如图5所示,该时序图列举了输出结果每行8个结果时(X-M+1=8),输出数据有效的前4个循环累加和流水线的输出时序。其信号定义如下所示。
RdEN:FIFO读有效信号,由累加和流水线控制器产生,置1时从FIFO_D中读取数据。
Dout:FIFO_D读数据,RdEN有效的下一个时钟周期有效。
基于上述累加和流水线,本发明提出一种用于1bit数据的邻域内或运算电路结构,由于1位数据或运算的特性是操作数有一个为1,则运算结果为1;操作数全部为0,运算结果为0。因此若邻域内所有数据(1bit)累加结果大于0,则这些数据的或运算结果为1;若邻域内所有像素点累加结果等于0,则这些像素点的或运算结果为0。基于这个特点,就可使用累加和流水线来实现1bit数据的邻域内或运算,只需在累加和流水线进行结果输出时增加一个比较器,当累加和流水线的计算结果等于0,输出0;当累加和流水线的计算结果大于0,输出1。这样就实现了1位数据的邻域内或运算。1位数据的邻域内或运算电路结构图如图6所示,与累加和流水线的区别在于增加了一个比较器,在FIFO_D输出结果时对结果进行比较,当结果等于0,则输出0,结果大于0,则输出1。
基于上述1位数据的邻域内或运算电路结构,本发明提出一种用于多位数据的邻域内或运算电路结构,由于多位数据的或运算是按位计算的,因此可以对每一位进行单独的计算,基于这个特点,只需在1位数据的邻域内或运算电路的基础上,增加加法器,减法器,比较器的个数,并将fifo的位宽增大,即可实现多位数据的邻域内或运算。多位数据的邻域内或运算电路结构图如图7所示,与1位数据邻域内或运算电路相比,将加法器/减法器/比较器扩展为加法器阵列/减法器/比较器阵列,每一个加法器/减法器/比较器对应数据的1位。这样就实现了多位数据的邻域内或运算。
实施例
本发明已应用于CE4中继星相机控制器中,用于实现星点检测算法中5×5邻域或的计算,星点检测算法通过对比相机所拍前后两张照片像素点的灰度变化,实现了对月球背面陨石撞击事件的自动检测与采样。采用本发明,使星点检测算法的解算时间小于相机拍照的间隔,实现了对月背陨石撞击事件的无间断检测。
本发明已应用至某新型巡航导弹解算计算机中,用于实现去均值归一化互相关算法中参考图累加和/平方累加和的计算。相比与其上一代产品DSP计算参考图累加和/平方累加和,再在FPGA内完成后续计算的方法,新型巡航导弹解算计算机使用单FPGA便可完成全部的计算,有效提升了计算性能。
本发明的基于二维流水线的N邻域累加/或的运算装置,可在行、列两个维度对邻域内像素进行流水的或/累加计算,有效降低资源开销,提升计算效率,计算规模可配置以适应不同邻域,本发明提出的N邻域或/累加的运算装置,结构简单,配置灵活,可有效降低资源开销,提高计算效率。
以计算邻域累加和为例,假设图像大小为X×X,临域大小为M×M,则图像M×M临域内像素累加和的计算结果是大小为(X-M+1)×(X-M+1)的矩阵。在加法器为2输入,计算速度为一个时钟周期一个结果的前提下,如果用传统方法直接计算,至少需要M×M-1个加法器和M+1个深度为X的FIFO,才能满足一拍一个结果的计算效率,而使用本发明使用的方法,只需6个加法器(其中3个做减法器使用)和3个深度为X的FIFO即可实现。在M×M>6,即M>3时,本发明使用的方法的资源开销就已经小于常规方法的开销,且M越大,资源开销的差距就越大。当M=16时,传统方法需要256个加法器,本发明只需要6个(其中3个做减法器使用),加法器开销只相当于传统方法的2.3%。
以计算邻域内或运算为例,假设图像大小为X×X,临域大小为M×M,图像像素为Z位。则图像M×M临域内或运算的计算结果是大小为(X-M+1)×(X-M+1)的矩阵。如果使用传统方法,在一个时钟周期内完成一次临域内或运算,需要M×M×Z个或门和M+1个FIFO,问题在于M值越大,所需的或逻辑门越多,计算速度越慢,当M值足够大/数据输入足够快时,或运算的计算时间会大于数据的输入时间,最终影响整个系统的性能。而使用本发明使用的方法,所需的资源仅有6×Z个log2M2位的加法器和3个FIFO,有效降低了资源开销,避免了因或运算组合逻辑过多而导致的时序紧张问题。
以上内容仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明权利要求书的保护范围之内。

Claims (6)

1.一种基于二维流水线的N邻域累加的运算装置,其特征在于,包括行累加和模块及累加和流水线;
所述行累加和模块用于对输入数据进行累加操作,依次对每行图像M个相邻数据的累加计算,对于每行数据,产生(X-M+1)个行累加结果;
所述累加和流水线用于多行数据之间的累加;
其中,X为图像的行数;M为临域的行数;所述行累加模块由一个加法器、一个减法器和可缓存一行数据的FIFO组成;
加法器与减法器完成一次加法或者减法运算均需要一个时钟周期的时间;
FIFO缓存深度在1~X内可调,最多可缓存X个数据,FIFO缓存深度设为邻域的宽度M;FIFO的输入为行累加模块的数据输入Datain,FIFO的输出为M个周期前的Datain,当没有有效数据输出时,FIFO输出全0;
减法器的两个输入端口分别为行累加模块输入Datain和FIFO的输出,减法器的输出结果为Datain减FIFO输出的结果,所述结果是有符号数;当输入的数据个数小于等于M时,FIFO输出为0,减法器输出的值等于Datain;当输入的数据个数大于M时,FIFO的输出为M个周期前的Datain,减法器输出的值等于Datain减M个周期前的Datain;
加法器的两个输入端口分别是减法器的输出和自身的输出,加法器的输出结果由减法器计算的结果与加法器上一次计算结果相加得到;
行累加模块的工作流程为:
数据从1~X行依次输入到行累加模块,当输入行累加模块的数据个数小于等于M时,减法器不参与计算,加法器将输入数据依次累加,在输入第M个数据时,得到1~M个数据的累加和,即行累加模块的第1个输出结果;
当输入行累加模块的数据个数大于M且小于等于X时,减法器开始工作,与加法器共同完成行累加和的计算,在输入第M+1个数据时,将上一个周期计算完成的1~M个数据的累加和结果,加上第M+1个数据,减去第1个数据,得到第2~M+1个数据的累加和,即行累加模块的第2个输出结果;
在输入第M+2个数据时,将上一个周期计算完成的2~M+1个数据的累加和结果,加上第M+2个数据,减去第2个数据,得到第3~M+2个数据的累加和;
以此类推,在第X个数据输入后,得到该行数据全部的行累加结果;所述累加和流水线由两个行累加模块、一个加法器和一个减法器组成;
AinA和AinB,分别作为行累加模块A与行累加模块B的输入;
所述累加和流水线的工作流程为:
在启动计算后,数据按第1行~第Y行的顺序通过AinA端口进入行累加模块A进行计算;当AinA端口输入的行数小于等于N时,行累加模块B不参与计算,输出全0;当输入的行数大于N时,行累加模块B启动,数据按第1行~Y-N+1行的顺序通过AinB端口进入行累加模块B进行计算;
AinA加载一行数据的过程称为一次循环,累加和流水线需要完成M次循环才能完成全部的计算;
所述减法器用于在每次循环之后,将行累加模块A的计算结果Aout与行累加模块B的计算结果Bout,按Aout-Bout的方式按列依次进行减法运算;
所述加法器的操作数分别来自于减法器的输出与加法器结果缓存FIFO,所述FIFO存放的是加法器上一次循环运算的结果,加法器每次循环计算完成的结果写回这个FIFO中去;
从第N次循环开始,加法器输出的结果即为累加和流水线的最终计算结果,所述计算结果除了会放入加法器结果缓存FIFO中,还向外输出。
2.根据权利要求1所述的基于二维流水线的N邻域累加的运算装置,其特征在于,所述累加和流水线由累加和流水线控制器SUMRC_CTRL、行累加和计算模块SUMRC_MARK2_A、行累加和计算模块SUMRC_MARK2_B、加法器、减法器和对应的缓存FIFO组成;
累加和流水线控制器SUMRC_CTRL用于按顺序从图像的最低行到最高行读取并传输图像数据;
行累加和计算模块SUMRC_MARK2_A用于计算图像1~Y行的行累加和,输出的结果在FIFO_A内进行缓存,行累加和计算模块SUMRC_MARK2_A每计算完一行便输出一行;
行累加和计算模块SUMRC_MARK2_B用于计算图像1~Y-N+1行的行累加和,输出的结果在FIFO_B内进行缓存;
所述加法器用于计算累加和的最终结果,当SUMRC_MARK2_A模块当前计算行数小于等于N时,所述加法器的输入是SUMRC_MARK2_A模块的输出;当SUMRC_MARK2_A模块当前计算行数大于N时,所述加法器的输入是SUMRC_MARK2_A和SUMRC_MARK2_B模块输出结果按列对应相减的值;在SUMRC_MARK2_A运算完第一行后,加法器将其输入直接存入加法器缓存FIFO_C中;之后的每次计算,加法器都将数据从FIFO_C中取出,按列与输入数据相加,再存回FIFO_C;
当SUMRC_MARK2_A模块计算行数大于等于N时,加法器的计算结果为最终计算结果,所述最终计算结果存入FIFO_C,还通过dout端口对外输出。
3.根据权利要求2所述的基于二维流水线的N邻域累加的运算装置,其特征在于,当行累加和计算模块SUMRC_MARK2_A计算的行数小于等于N时,行累加和计算模块SUMRC_MARK2_B不启动,输出全0;
当行累加和计算模块SUMRC_MARK2_A模块计算的行数大于N时,累加和流水线控制器SUMRC_CTRL将参考图按行排列从参考图第一行依次从参考图存储器中读出,传输到SUMRC_MARK2_B模块中,SUMRC_MARK2_B每计算完一行便输出一行。
4.根据权利要求2所述的基于二维流水线的N邻域累加的运算装置,其特征在于,累加和流水线的结果在输出前会存入FIFO_D;
FIFO_D是一个FIFO阵列,可以储存4行累加和流水线的计算结果;
当FIFO阵列存满4行结果时,累加和流水线暂停计算;
当FIFO_D有数据且外部存储器接收数据时,累加和流水线控制器从FIFO_D读取数据并通过累加和流水线的数据输出端口dout对外输出。
5.一种用于1bit数据的邻域内或的运算装置,包括权利要求2、3或4所述的基于二维流水线的N邻域累加的运算装置,其特征在于,在所述的累加和流水线的输出端设置一个比较器;
当累加和流水线的计算结果等于0,所述比较器输出0;当累加和流水线的计算结果大于0,所述输出1。
6.一种用于多位数据的邻域内或的运算装置,其特征在于,基于权利要求5所述的1bit数据的邻域内或的运算装置进行改进,将加法器、减法器和比较器扩展为加法器阵列、减法器和比较器阵列;
每一个加法器、减法器和比较器对应数据的1位。
CN202110656400.8A 2021-06-11 2021-06-11 一种基于二维流水线的n邻域累加/或的运算装置 Active CN113283251B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110656400.8A CN113283251B (zh) 2021-06-11 2021-06-11 一种基于二维流水线的n邻域累加/或的运算装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110656400.8A CN113283251B (zh) 2021-06-11 2021-06-11 一种基于二维流水线的n邻域累加/或的运算装置

Publications (2)

Publication Number Publication Date
CN113283251A CN113283251A (zh) 2021-08-20
CN113283251B true CN113283251B (zh) 2023-05-30

Family

ID=77284542

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110656400.8A Active CN113283251B (zh) 2021-06-11 2021-06-11 一种基于二维流水线的n邻域累加/或的运算装置

Country Status (1)

Country Link
CN (1) CN113283251B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6714874B1 (en) * 2000-03-15 2004-03-30 Applera Corporation Method and system for the assembly of a whole genome using a shot-gun data set
US7483058B1 (en) * 2003-08-04 2009-01-27 Pixim, Inc. Video imaging system including a digital image sensor and a digital signal processor
US8423745B1 (en) * 2009-11-16 2013-04-16 Convey Computer Systems and methods for mapping a neighborhood of data to general registers of a processing element
CN111221496A (zh) * 2018-11-26 2020-06-02 北京华航无线电测量研究所 一种使用fpga实现浮点数据累加的方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7818417B2 (en) * 2006-01-10 2010-10-19 International Business Machines Corporation Method for predicting performance of distributed stream processing systems
US9235876B2 (en) * 2009-03-02 2016-01-12 Flir Systems, Inc. Row and column noise reduction in thermal images
CN105512724B (zh) * 2015-12-01 2017-05-10 中国科学院计算技术研究所 加法器装置、数据累加方法及数据处理装置
WO2017127086A1 (en) * 2016-01-21 2017-07-27 Hewlett Packard Enterprise Development Lp Analog sub-matrix computing from input matrixes
US10607552B2 (en) * 2018-02-27 2020-03-31 Nvidia Corporation Parallel pipelines for computing backlight illumination fields in high dynamic range display devices

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6714874B1 (en) * 2000-03-15 2004-03-30 Applera Corporation Method and system for the assembly of a whole genome using a shot-gun data set
US7483058B1 (en) * 2003-08-04 2009-01-27 Pixim, Inc. Video imaging system including a digital image sensor and a digital signal processor
US8423745B1 (en) * 2009-11-16 2013-04-16 Convey Computer Systems and methods for mapping a neighborhood of data to general registers of a processing element
CN111221496A (zh) * 2018-11-26 2020-06-02 北京华航无线电测量研究所 一种使用fpga实现浮点数据累加的方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
一种高度并行的卷积神经网络加速器设计方法;徐欣等;哈尔滨工业大学学报(第04期);第31-37页 *

Also Published As

Publication number Publication date
CN113283251A (zh) 2021-08-20

Similar Documents

Publication Publication Date Title
US20220365753A1 (en) Accelerated mathematical engine
US5504916A (en) Digital signal processor with direct data transfer from external memory
US6601077B1 (en) DSP unit for multi-level global accumulation
JP3228927B2 (ja) プロセッサエレメント、プロセッシングユニット、プロセッサ、及びその演算処理方法
JP5587422B2 (ja) 画素速度での画像処理のための方法および装置
JP2010521728A (ja) データ圧縮のための回路及びこれを用いるプロセッサ
US7054895B2 (en) System and method for parallel computing multiple packed-sum absolute differences (PSAD) in response to a single instruction
CN113283251B (zh) 一种基于二维流水线的n邻域累加/或的运算装置
CN116888591A (zh) 一种矩阵乘法器、矩阵计算方法及相关设备
CN108255463B (zh) 一种数字逻辑运算方法、电路和fpga芯片
CN111124358B (zh) 一种序列累加器的运算方法和设备
CN101227613B (zh) 一种sad运算处理装置及方法
Ghaffari et al. A fully pipelined FPGA architecture for multiscale BRISK descriptors with a novel hardware-aware sampling pattern
Hassoun et al. VLSI gray-scale morphology processor for real-time NDE image-processing applications
CN113805840B (zh) 快速累加器
CN112346703B (zh) 一种用于卷积神经网络计算的全局平均池化电路
CN114022689B (zh) 基于fpga的相似度计算方法及系统
CN116560733B (zh) 一种空间目标特征在轨实时并行lu分解计算系统及方法
CN112230884B (zh) 目标检测硬件加速器及加速方法
CN110533174B (zh) 神经网络系统中数据处理的电路和方法
CN116414456A (zh) 存算芯片内的加权融合变换部件、存算电路及协同计算方法
CN118689541A (zh) 一种并行计算系统
EP0864968A1 (en) Denormalization circuit
CN114727115A (zh) 一种视频编码的整数运动估计方法、系统及存储介质
CN118689542A (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
GR01 Patent grant
GR01 Patent grant