CN115756389A - 一种基于fpga的浮点乘加器及计算方法 - Google Patents
一种基于fpga的浮点乘加器及计算方法 Download PDFInfo
- Publication number
- CN115756389A CN115756389A CN202211275784.XA CN202211275784A CN115756389A CN 115756389 A CN115756389 A CN 115756389A CN 202211275784 A CN202211275784 A CN 202211275784A CN 115756389 A CN115756389 A CN 115756389A
- Authority
- CN
- China
- Prior art keywords
- floating
- point
- data
- layer
- 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.)
- Pending
Links
Images
Classifications
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Complex Calculations (AREA)
Abstract
本发明公开一种基于FPGA的浮点乘加器及计算方法。本发明包括数据分配器、浮点乘法器层、浮点加法器阵和累加器。所述计算方法通过延拓乘法器层以及加法器阵来使用更多片内资源提升速度上限,其延拓的过程中乘法器层、加法器阵以及累加模块内容无需改动,对于本领域内普通技术人员而言,根据不同FPGA芯片资源配置不同乘法器层内乘法器数量十分简单且高效,提高了运算时间上限。
Description
技术领域
本发明属于计算机硬件结构与电路设计技术领域,涉及一种无限延拓的浮点乘加器及浮点乘加计算方法,具体地说是一种基于FPGA的浮点乘加器及计算方法。
背景技术
乘加操作是科学计算中的一个基本操作,在各类机器学习算法例如深度卷积神经网络、矩阵乘积运算等多个领域得到了广泛的应用。现有的乘加操作的实现一般采用CPU处理器实现,但受限于CPU运算逻辑,对于较大规模的乘加操作会占用大量时间,无法满足现如今的运算需求。
近年来,FPGA技术飞速发展,由于可用逻辑门、片内可用寄存器等资源大幅提高,其功能已经由单纯的逻辑代替转变为复杂的密集型计算处理,得益于其并行执行逻辑,计算大规模数据可以获得相比CPU更快的速度。
现如今在FPGA上实现大规模的乘加运算许多都是通过由基本处理单元(Processing Element,PE)组成的线性阵列结构及其改进来实现,其基本处理单元计算一次可以完成一次乘加操作,但随着FPGA可用资源增多,受限于其基本单元结构,使用更多片内资源来提升速度的速度上限不高。
发明内容
本发明的一个目的在于提出一种基于FPGA的浮点乘加器,本发明的了另一个目的在于提出一种基于FPGA的浮点乘加器的计算方法。
为实现上述目的,本发明所述一种基于FPGA的浮点乘加器,包括数据分配模块、浮点乘法器层、浮点加法器阵和累加器;
所述数据分配模块,用于将所需乘加的待计算数据以及控制信号发送至浮点乘法器层;
所述浮点乘法器层由若干个乘法器模块组成,用于接收待计算数据,并将计算乘积结果以及控制信号发送至浮点加法器阵;
所述浮点加法器阵由若干层加法器层组成,加法器层由执行同一批加法操作的若干个加法器模块组成,浮点加法器阵用于对浮点乘法器层的计算结果进行求和运算,将最终求和结果以及控制信号传递至累加器;
所述累加器,用于将浮点加法器阵所得结果累加,直至获得终止信号结束计算并输出结果。
所述数据分配模块发出的控制信号为数据分配模块向浮点乘法器层输入的控制信号,所述控制信号为终止信号、新输入信号。
所述浮点乘法器层发出的控制信号有:
1)浮点乘法器层向数据分配模块发出的控制信号:工作态限制信号;
2)浮点乘法器层向浮点加法器阵发出的控制信号:终止信号、新输入信号。
所述所述浮点加法器阵发出的控制信号有:
1)浮点加法器阵向浮点乘法器层发出的控制信号:工作态限制信号;
2)浮点加法器阵向累加器发出的控制信号:终止信号;新输入信号。
所述累加器发出的控制信号为:
累加器向浮点加法器阵发出的控制信号:工作态限制信号。
所述工作态限制信号的处理流程为:当与本模块连接的下一级模块处于工作态且已经缓存了一个待计算数据,所述下一级模块给本模块的工作态限制信号置为1,此时本模块接收到这一信号并进入待分配状态,直至待分配的下一级模块处理完工作态数据且读取了所述待计算数据,工作态限制信号置为零;
所述终止信号的处理流程为:当所传输的数据为所需计算的最后一组数据(a,b)'或与最后一组数据(a,b)'相关的计算结果时,终止信号;
所述数据(a,b)'为计算时最后一组数据;
所述终止信号在一个时钟后置为零;
所述新输入信号的处理流程为:当本模块计算完成并向下一模块传输结果时,伴随结果输出置为1;所述新输入信号在一个时钟后置为零。
本发明所述一种基于FPGA的浮点乘加器的浮点乘加计算方法;包括,
a.获取需要运算的若干组数据(a,b);
b.所述数据(a,b)依次分配给浮点乘法器层中乘法器模块获得部分乘积;
c.所述部分乘积通过浮点加法器阵求和获得部分乘积和;
d.所述部分乘积和通过累加器累加,得到乘加结果。
所述步骤a具体为:通过数据总线获取数据(a,b),或将存储模块中的数据(a,b)通过地址读取出来;所述储存模块为片内储存资源,或外置储存设备。
所述步骤b具体为:数据分配模块将步骤a所述的数据(a,b)按照先后顺序分配给浮点乘法器层中乘法器模块,乘法器模块将数据(a,b)进行乘操作得到部分乘积,将结果转递至浮点加法器阵中。
所述步骤c具体为:所述浮点加法器阵的第一层加法器层接收乘法器层的计算结果并完成第一次计算,之后传递至下一层;之后每一层加法器层接受上一层的计算结果并传递至下一层,直至该层内加法器模块31仅有一个时计算完毕,将最终求和结果以及控制信号传递至累加器;
所述步骤d具体为:累加器获得浮点加法器阵计算得出的部分乘积和进行累加,当获取到终止信号Fin=1时结束累加状态,输出累加结果并清空缓存,直至下一个数据到来。
所述片内储存资源为ROM、RAM中的一种或组合,所述外置储存设备为SD卡、U盘、DDR3中的一种或组合。
当数据分配给乘法器模块时:
1)若待分配的乘法器在空闲状态或正在工作但没有缓存一个待计算数据,数据分配模块将数据分配给该乘法器;若待分配的乘法器处于工作态且已经缓存了一个待计算数据,则数据分配模块进入待分配状态,直至待分配的乘法器处理完工作态数据且读取了所述待计算数据;
2)若被分配的数据(a,b)'为最后一组所需数据,则伴随数据传输终止信号Fin=1;否则终止信号Fin=0。
当乘法器计算完成后给浮点加法器阵中第一层的加法器模块传输部分乘积时:
1)若与所述乘法器连接的加法器模块在空闲状态或正在工作但没有缓存一个待计算数据,乘法器将数据分配给该加法器模块;若与所述乘法器连接的加法器模块处于工作态且已经缓存了一个待计算数据,则乘法器进入待分配状态,直至待分配的加法器模块处理完工作态数据且读取了所述待计算数据;
2)若被分配的数据为最后一个部分乘积,则伴随数据传输终止信号Fin=1;否则终止信号Fin=0。
所述浮点乘法器层由2k个乘法器模块组成,
所述加法器层以及加法器层内加法器模块的个数由以下规则组成:
第一层的加法器层由k个加法器模块组成;
第二层的加法器层由k/2个加法器模块组成,若无法整除则向下取整并标记第k个加法器模块为一个待连接信号;后续加法器层数量均由此逻辑决定:
1)若上一层的加法器模块个数x除以2能整除,则本层加法器模块个数为x/2个,若有所述待连接信号则顺延至下一层;
2)若上一层的加法器模块个数x除以2不能整除且无待连接信号,则本层加法器模块个数为(x-1)/2个,将第x个加法器模块标记待连接信号;
3)若上一层加法器模块个数x除以2不能整除且有待连接信号,则本层加法器模块个数为x/2个且第x/2个加法器模块连接上一层第x个加法器模块与待连接信号;
4)当本层的加法器模块个数为一且无待连接信号时,本层为最后一层加法器层,将部分乘积和输出给累加器。
所述浮点加法器阵内所有加法器模块均有以下逻辑:记加法器模块两个输入端为a,b,输出端为c;则:
当a的终止信号Fin_a=1时,c=a且c的终止信号Fin_c=1;
当b的终止信号Fin_b=1时,c=a+b且c的终止信号Fin_c=1;
当终止信号Fin_a=0且Fin_b=0时,c=a+b且c的终止信号Fin_c=0。
本发明所述一种基于FPGA的浮点乘加器及计算方法,其有益效果在于:通过延拓乘法器层以及加法器阵来使用更多片内资源提升速度上限,其延拓的过程中乘法器层、加法器阵以及累加模块内容无需改动,对于本领域内普通技术人员而言,根据不同FPGA芯片资源配置不同乘法器层内乘法器数量十分简单且高效,提高了运算时间上限。
附图说明
图1为浮点乘加器的结构示意图;
图2为浮点乘加器中乘法器层结构示意图;
图3为浮点乘加器中加法器阵结构示意图;
图4为浮点乘加器中乘法器状态机示意图;
图5为六列乘加器结构图;
图6为浮点乘加计算方法的流程图;
图中:1-数据分配模块、2-浮点乘法器层、21-乘法器模块、3-浮点加法器阵、31-加法器模块、4-累加器;
44-工作态限制信号、45-新输入信号;
401-空闲态Over、402-读取缓存态Start、403-前端处理态Reset、404-乘零判断态Zerock、405-尾数相乘态Cheng、406-尾数规格化态Infifl、407-指数相加态Exequal、408-待赋值状态、411-初始状态Load、412-工作状态Doing。
具体实施方式
实施例1
如图1-6所示,本发明所述一种基于FPGA的浮点乘加器,包括数据分配模块1、浮点乘法器层2、浮点加法器阵3和累加器4;
所述数据分配模块1,用于将所需乘加的待计算数据以及控制信号发送至浮点乘法器层2;
所述浮点乘法器层2由若干个乘法器模块21组成,用于接收待计算数据,并将计算乘积结果以及控制信号发送至浮点加法器阵3;
所述浮点加法器阵3由若干层加法器层组成,加法器层由执行同一批加法操作的若干个加法器模块31组成,浮点加法器阵3用于对浮点乘法器层2的计算结果进行求和运算,将最终求和结果以及控制信号传递至累加器4;
所述累加器4,用于将浮点加法器阵3所得结果累加,直至获得终止信号结束计算并输出结果。
所述数据分配模块1发出的控制信号为数据分配模块向浮点乘法器层2输入的控制信号,所述控制信号为终止信号、新输入信号。
所述浮点乘法器层2发出的控制信号有:
1)浮点乘法器层2向数据分配模块1发出的控制信号:工作态限制信号;
2)浮点乘法器层2向浮点加法器阵3发出的控制信号:终止信号、新输入信号。
所述所述浮点加法器阵3发出的控制信号有:
1)浮点加法器阵3向浮点乘法器层2发出的控制信号:工作态限制信号;
2)浮点加法器阵3向累加器4发出的控制信号:终止信号;新输入信号。
所述累加器4发出的控制信号为:
累加器4向浮点加法器阵3发出的控制信号:工作态限制信号。
所述工作态限制信号的处理流程为:当与本模块连接的下一级模块处于工作态且已经缓存了一个待计算数据,所述下一级模块给本模块的工作态限制信号置为1,此时本模块接收到这一信号并进入待分配状态,直至待分配的下一级模块处理完工作态数据且读取了所述待计算数据,工作态限制信号置为零;
所述终止信号的处理流程为:当所传输的数据为所需计算的最后一组数据(a,b)'或与最后一组数据(a,b)'相关的计算结果时,终止信号;
所述数据(a,b)'为计算时最后一组数据;
所述终止信号在一个时钟后置为零;
所述新输入信号的处理流程为:当本模块计算完成并向下一模块传输结果时,伴随结果输出置为1;所述新输入信号在一个时钟后置为零。
本发明所述一种基于FPGA的浮点乘加器的计算方法;包括,
a.通过数据总线获取需要运算的若干组数据(a,b);
b.所述数据(a,b)依次分配给浮点乘法器层2中乘法器模块21获得部分乘积,数据分配模块1将步骤a所述的数据a,b按照先后顺序分配给浮点乘法器层2中乘法器模块21,乘法器模块21将数据a,b进行乘操作得到部分乘积,将结果转递至浮点加法器阵3中;
c.所述部分乘积通过浮点加法器阵3求和获得部分乘积和,所述浮点加法器阵3的第一层加法器层接收乘法器层2的计算结果并完成第一次计算,之后传递至下一层;之后每一层加法器层接受上一层的计算结果并传递至下一层,直至该层内加法器模块31仅有一个时计算完毕,将最终求和结果以及控制信号传递至累加器4;
d.所述部分乘积和通过累加器4累加,得到乘加结果,累加器4获得浮点加法器阵3计算得出的部分乘积和进行累加,当获取到终止信号Fin=1时结束累加状态,输出累加结果并清空缓存,直至下一个数据到来。
当数据发送至乘法器模块21时:
1)若待分配的乘法器模块21在空闲状态或正在工作但没有缓存一个待计算数据,数据分配模块1将数据分配给该乘法器模块21;若待发送的乘法器模块21处于工作态且已经缓存了一个待计算数据,则数据分配模块1进入待分配状态,直至待分配的乘法器模块21处理完工作态数据且读取了所述待计算数据;
2)若被分配的数据(a,b)'为最后一组所需数据,则伴随数据传输终止信号Fin=1;否则终止信号Fin=0。
当乘法器计算完成后给浮点加法器阵中第一层的加法器模块31传输部分乘积时:
1)若与所述乘法器模块21连接的加法器模块31在空闲状态或正在工作但没有缓存一个待计算数据,乘法器模块21将数据分配给该加法器模块31;若与所述乘法器模块21连接的加法器模块31处于工作态且已经缓存了一个待计算数据,则乘法器模块21进入待分配状态,直至待分配的加法器模块31处理完工作态数据且读取了所述待计算数据;
2)若被分配的数据为最后一个部分乘积,则伴随数据传输终止信号Fin=1;否则终止信号Fin=0。
所述浮点乘法器层2由2k个乘法器模块21组成;
所述加法器层以及加法器层内加法器模块31的个数由以下规则组成:
第一层的加法器层由k个加法器模块31组成;
第二层的加法器层由k/2个加法器模块31组成,若无法整除则向下取整并标记第k个加法器模块31为一个待连接信号;后续加法器层数量均由此逻辑决定:
1)若上一层的加法器模块31个数x除以2能整除,则本层的加法器模块31个数为x/2个,若有所述待连接信号则顺延至下一层;
2)若上一层的加法器模块31个数x除以2不能整除且无待连接信号,则本层的加法器模块31个数为(x-1)/2个,将第x个加法器模块31标记待连接信号;
3)若上一层的加法器模块31个数x除以2不能整除且有待连接信号,则本层的加法器模块31个数为x/2个且第x/2个加法器模块31连接上一层第x个加法器模块31与待连接信号;
4)当本层的加法器模块31个数为一且无待连接信号时,本层为最后一层加法器层,将部分乘积和输出给累加器。
所述浮点加法器阵内所有加法器均有以下逻辑:记加法器两个输入端为a,b,输出端为c;则:
当a的终止信号Fin_a=1时,c=a且c的终止信号Fin_c=1;
当b的终止信号Fin_b=1时,c=a+b且c的终止信号Fin_c=1;
当终止信号Fin_a=0且Fin_b=0时,c=a+b且c的终止信号Fin_c=0。
实施例2
本发明所述一种基于FPGA的浮点乘加器,如图1-6所示,包括数据分配器1、浮点乘法器层2、浮点加法器阵3和累加器4,
所述数据分配器1,用于将所需乘加的待计算数据以及控制信号发送给浮点乘法器层2;
所述浮点乘法器层2由至少两个乘法器模块21组成,乘法器模块21用于接收待计算数据,并将计算乘积结果以及控制信号传递至浮点加法器阵3;
所述浮点加法器阵3由加法器层构成,加法器层至少设置一层,加法器层由至少一个加法器模块31组成,用于将计算结果以及控制信号传递至累加器4;
加法器层的层数以及层内加法器模块31的个数,与浮点乘法器层2内乘法个数有关,用于将计算结果以及控制信号传递至累加器4;
所述累加器4,用于将浮点加法器阵3所得结果累加,直至获得终止信号结束计算并输出结果。
所述数据分配模块1向浮点乘法器层2发送的控制信号有:终止信号Fin;新输入信号new_a、new_b;
所述浮点乘法器层2向数据分配模块1发送的控制信号有:工作态限制信号hold_in。
所述浮点乘法器层2向浮点加法器阵3发送的控制信号有:终止信号Fin_a、Fin_b;新输入信号new_a、new_b;
所述浮点加法器阵3向浮点乘法器层2的控制信号有:工作态限制信号hold_in。
所述浮点加法器阵3向累加器4的控制信号有:终止信号Fin;新输入信号new。
所述累加器4向浮点加法器阵3的控制信号有:工作态限制信号hold_in。
所述工作态限制信号hold_in的处理流程为:当与本模块连接的下一级模块处于工作态且已经缓存了一个待计算数据,所述下一级模块给本模块的工作态限制信号hold_in=1,此时本模块接收到这一信号并进入待分配状态,直至待分配的下一级模块处理完工作态数据且读取了所述待计算数据,工作态限制信号hold_in=0。
所述终止信号Fin(Fin_a、Fin_b等均为异化名称)的处理流程为:当所传输的数据为所需计算的最后一组数据(a,b)'或与最后一组数据(a,b)'相关的计算结果时,终止信号Fin=1。
所述终止信号Fin在一个时钟后变为Fin=0。
所述新输入信号new(new_a、new_b、new_in等均为异化名称)的处理流程为:当本模块计算完成并向下一模块传输结果时,伴随结果输出new=1。
所述新输入信号new在一个时钟后变为new=0。
本发明所述一种基于FPGA的浮点乘加器的浮点乘加器计算方法运行时:
当浮点乘法器层2向数据分配模块1发送的控制信号为工作态限制信号hold_in:当与数据分配模块1连接的某一乘法器模块21处于工作态且已经缓存了一个待计算数据,所述乘法器模块21给数据分配模块1的作态限制信号hold_in=1,此时数据分配模块1接收到这一信号并进入待分配状态,直至待分配的乘法器模块21处理完工作态数据且读取了所述待计算数据;
对于下一级模块控制本模块的工作态限制信号名称为hold_in,对于本模块控制上一级模块的工作态限制信号名称为hold_out,其本质均为工作态限制信号,不同名称只是相对于模块视角不同,无本质区别。
如图4所示,所述乘法器模块21计算部分状态有:空闲态Over401、读取缓存态Start402、前端处理态Reset403、乘零判断态Zerock404、尾数相乘态Cheng405、尾数规格化态Infifl406、指数相加态Exequal407、待赋值状态408;所述乘法器模块21前置输入信号控制部分状态有:初始状态Load411、工作状态Doing412;
所述乘法器模块21前置输入信号控制部分状态具体为:初始状态Load411将本模块对上一级模块的工作态限制信号hold_out置为零,表明可以接收数据,之后状态机跳转至工作状态Doing412;工作状态Doing412的功能为:当新输入信号45new_in=1时,预缓存待计算的数据,并将工作态限制信号44hold_out置为高电平,于此同时,若终止信号Fin=1则标记该组数据,直到乘法器计算部分状态到达读取缓存态Start402时,将工作态限制信号hold_out置低电平。所述hold_out高电平时也可以理解为有数据待计算。
所述乘法器模块21工作状态具体为:乘法器初始状态处于空闲态Over401,此时将所有内部信号置零,当所述工作态限制信号44hold_out为高电平时,状态跳转至读取缓存态Start402;读取缓存态Start402的功能为:读取在Doing412预缓存的待计算数据,并识别该组数据是否为终止数据,然后将状态跳转至前端处理态Reset403;前端处理态Reset403的功能为:分离数据的指数以及还原尾数,并将结果的符号位通过异或门计算得出,然后将状态跳转至乘零判断态Zerock404;乘零判断态Zerock404的功能为:判断a、b是否为零,如果有零则输出直接为零,跳转至待赋值状态408,如果没有则将状态跳转至尾数相乘态Cheng405;尾数相乘态Cheng405的功能为:将尾数相乘,然后将状态跳转至尾数规格化态Infifl406;尾数规格化态Infifl406的功能为:将尾数格式调整为所需要的浮点格式,并计算进位,然后将状态跳转至指数相加态Exequal407;指数相加态Exequal407的功能为:将指数相加并加上进位,然后将状态跳转至待赋值状态408;待赋值状态408的功能为:当工作态限制信号hold_in==1时,表明下一级模块处于工作态且已经缓存了一个待计算数据,此时本模块进入等待,直到hold_in==0时,将计算结果输出并将新输出信号new_out置为高电平,然后将状态跳转至空闲态Over401。
需要说明的是,浮点加法器阵与浮点加法器模块的逻辑与结构相似。
所述一种基于FPGA的浮点乘加器的计算方法,其具体步骤为:
1)获取数据;
2)将数据分配至各个乘法器模块21;
3)判断此时乘法器模块21是否空闲,如果不空闲,则进入待分配状态直至空闲,之后将数据输入;
4)乘法器模块21将数据计算得出部分乘积;
5)将部分乘积输入给浮点加法器阵3;
6)判断此时加法器模块31是否空闲,如果不空闲,则进入待分配状态直至空闲,之后将数据输入;
7)第一层的加法器模块31算出对应乘法器之和;
8)将结果传输给下一层的加法器模块31;
9)判断此时下一层的加法器模块31是否空闲,如果不空闲,则进入待分配状态直至空闲,之后将数据输入;
10)计算得出结果;
11)判断这一层是否为最后一层加法器模块31,如果不是则重复步骤8)~10),直至最后一层加法器模块31;
12)将部分乘积和传输至累加器4;
13)判断此时累加器4是否空闲,如果不空闲,则进入待分配状态直至空闲,之后将数据输入;
14)累加器4进行累加;
15)判断是否计算完毕,如过不是则重复步骤2)~14),直至计算完毕所有组数据;
16)输出乘加结果。
Claims (10)
1.一种基于FPGA的浮点乘加器,包括数据分配模块(1)、浮点乘法器层(2)、浮点加法器阵(3)和累加器(4),其特征在于:
所述数据分配模块(1),用于将所需乘加的待计算数据以及控制信号发送至浮点乘法器层(2);
所述浮点乘法器层(2)由若干个乘法器模块(21)组成,用于接收待计算数据,并将计算乘积结果以及控制信号发送至浮点加法器阵(3);
所述浮点加法器阵(3)由若干层加法器层组成,加法器层由执行同一批加法操作的若干个加法器模块(31)组成,浮点加法器阵(3)用于对浮点乘法器层(2)的计算结果进行求和运算,将最终求和结果以及控制信号传递至累加器(4);
所述累加器(4),用于将浮点加法器阵(3)所得结果累加,直至获得终止信号结束计算并输出结果。
2.根据权利要求1所述一种基于FPGA的浮点乘加器,其特征在于:所述数据分配模块(1)发出的控制信号为数据分配模块向浮点乘法器层(2)输入的控制信号,所述控制信号为终止信号、新输入信号。
3.根据权利要求1所述一种基于FPGA的浮点乘加器,其特征在于:
所述浮点乘法器层(2)发出的控制信号有:
1)浮点乘法器层(2)向数据分配模块(1)发出的控制信号:工作态限制信号;
2)浮点乘法器层(2)向浮点加法器阵(3)发出的控制信号:终止信号、新输入信号。
4.根据权利要求1所述一种基于FPGA的浮点乘加器,其特征在于:
所述所述浮点加法器阵(3)发出的控制信号有:
1)浮点加法器阵(3)向浮点乘法器层(2)发出的控制信号:工作态限制信号;
2)浮点加法器阵(3)向累加器(4)发出的控制信号:终止信号;新输入信号。
5.根据权利要求1所述一种基于FPGA的浮点乘加器,其特征在于:
所述累加器(4)发出的控制信号为:
累加器(4)向浮点加法器阵(3)发出的控制信号:工作态限制信号。
6.根据权利要求1所述一种基于FPGA的浮点乘加器,其特征在于:
所述工作态限制信号的处理流程为:当与本模块连接的下一级模块处于工作态且已经缓存了一个待计算数据,所述下一级模块给本模块的工作态限制信号置为1,此时本模块接收到这一信号并进入待分配状态,直至待分配的下一级模块处理完工作态数据且读取了所述待计算数据,工作态限制信号置为零;
所述终止信号的处理流程为:当所传输的数据为所需计算的最后一组数据(a,b)'或与最后一组数据(a,b)'相关的计算结果时,终止信号;
所述终止信号在一个时钟后置为零;
所述新输入信号的处理流程为:当本模块计算完成并向下一模块传输结果时,伴随结果输出置为1;所述新输入信号在一个时钟后置为零。
7.一种基于FPGA的浮点乘加器的浮点乘加计算方法,其特征在于:包括,
a.获取需要运算的若干组数据(a,b);
b.所述数据(a,b)依次分配给浮点乘法器层(2)中乘法器模块(21)获得部分乘积;
c.所述部分乘积通过浮点加法器阵(3)求和获得部分乘积和;
d.所述部分乘积和通过累加器(4)累加,得到乘加结果。
8.如权利要求7所述一种基于FPGA的浮点乘加器的浮点乘加计算方法,其特征在于:
所述步骤a具体为:通过数据总线获取数据(a,b),或将存储模块中的数据(a,b)通过地址读取出来;所述储存模块为片内储存资源,或外置储存设备。
9.如权利要求8所述一种基于FPGA的浮点乘加器的浮点乘加计算方法,其特征在于:
所述步骤b具体为:数据分配模块(1)将步骤a所述的数据(a,b)按照先后顺序分配给浮点乘法器层(2)中乘法器模块(21),乘法器模块(21)将数据(a,b)进行乘操作得到部分乘积,将结果转递至浮点加法器阵(3)中。
10.如权利要求8所述一种基于FPGA的浮点乘加器的浮点乘加计算方法,其特征在于:
所述步骤c具体为:所述浮点加法器阵(3)的第一层加法器层接收乘法器层(2)的计算结果并完成第一次计算,之后传递至下一层;之后每一层加法器层接受上一层的计算结果并传递至下一层,直至该层内加法器模块31仅有一个时计算完毕,将最终求和结果以及控制信号传递至累加器(4);
所述步骤d具体为:累加器(4)获得浮点加法器阵(3)计算得出的部分乘积和进行累加,当获取到终止信号Fin=1时结束累加状态,输出累加结果并清空缓存,直至下一个数据到来。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211275784.XA CN115756389A (zh) | 2022-10-18 | 2022-10-18 | 一种基于fpga的浮点乘加器及计算方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211275784.XA CN115756389A (zh) | 2022-10-18 | 2022-10-18 | 一种基于fpga的浮点乘加器及计算方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115756389A true CN115756389A (zh) | 2023-03-07 |
Family
ID=85352851
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211275784.XA Pending CN115756389A (zh) | 2022-10-18 | 2022-10-18 | 一种基于fpga的浮点乘加器及计算方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115756389A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116185338A (zh) * | 2023-04-23 | 2023-05-30 | 中国人民解放军国防科技大学 | 基于忆阻器的乘法器 |
-
2022
- 2022-10-18 CN CN202211275784.XA patent/CN115756389A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116185338A (zh) * | 2023-04-23 | 2023-05-30 | 中国人民解放军国防科技大学 | 基于忆阻器的乘法器 |
CN116185338B (zh) * | 2023-04-23 | 2023-07-14 | 中国人民解放军国防科技大学 | 基于忆阻器的乘法器 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111459877B (zh) | 基于FPGA加速的Winograd YOLOv2目标检测模型方法 | |
CN111684473B (zh) | 提高神经网络阵列的性能 | |
CN110210610B (zh) | 卷积计算加速器、卷积计算方法及卷积计算设备 | |
US10120649B2 (en) | Processor and method for outer product accumulate operations | |
CN100449522C (zh) | 基于多fpga的矩阵乘法并行计算系统 | |
CN109409511B (zh) | 一种用于动态可重构阵列的卷积运算数据流调度方法 | |
EP0377837B1 (en) | Floating point unit having simultaneous multiply and add | |
CN103294446B (zh) | 一种定点乘累加器 | |
CN111142938B (zh) | 一种异构芯片的任务处理方法、任务处理装置及电子设备 | |
CN104112053B (zh) | 一种面向图像处理的可重构架构平台设计方法 | |
CN112434801B (zh) | 一种按照比特精度进行权重拆分的卷积运算加速方法 | |
CN110543936B (zh) | 一种cnn全连接层运算的多并行加速方法 | |
CN110705703A (zh) | 基于脉动阵列的稀疏神经网络处理器 | |
CN111767986A (zh) | 一种基于神经网络的运算方法及装置 | |
CN115756389A (zh) | 一种基于fpga的浮点乘加器及计算方法 | |
CN110851779A (zh) | 用于稀疏矩阵运算的脉动阵列架构 | |
CN113283587A (zh) | 一种Winograd卷积运算加速方法及加速模块 | |
US6535901B1 (en) | Method and apparatus for generating a fast multiply accumulator | |
WO2021232422A1 (zh) | 神经网络的运算装置及其控制方法 | |
CN111047037B (zh) | 数据处理方法、装置、设备及存储介质 | |
CN111126588A (zh) | 集成电路芯片装置及相关产品 | |
CN113031912A (zh) | 乘法器、数据处理方法、装置及芯片 | |
CN108595369B (zh) | 算式并行计算装置及方法 | |
CN112836793B (zh) | 浮点可分离卷积计算加速装置、系统以及图像处理方法 | |
CN102693118B (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 |