CN117149130B - 一种应用于fpga嵌入式dsp的多精度浮点乘法器结构 - Google Patents
一种应用于fpga嵌入式dsp的多精度浮点乘法器结构 Download PDFInfo
- Publication number
- CN117149130B CN117149130B CN202311429429.8A CN202311429429A CN117149130B CN 117149130 B CN117149130 B CN 117149130B CN 202311429429 A CN202311429429 A CN 202311429429A CN 117149130 B CN117149130 B CN 117149130B
- Authority
- CN
- China
- Prior art keywords
- data
- bit
- sign
- precision
- processing
- 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
Links
- 230000011218 segmentation Effects 0.000 claims abstract description 6
- 238000012545 processing Methods 0.000 claims description 63
- 238000007906 compression Methods 0.000 claims description 55
- 230000006835 compression Effects 0.000 claims description 48
- 238000007781 pre-processing Methods 0.000 claims description 18
- 238000007792 addition Methods 0.000 claims description 16
- 238000000034 method Methods 0.000 claims description 11
- 238000013144 data compression Methods 0.000 claims description 6
- 238000010606 normalization Methods 0.000 claims description 6
- 230000008569 process Effects 0.000 claims description 6
- 238000004806 packaging method and process Methods 0.000 claims description 5
- 230000000694 effects Effects 0.000 claims description 4
- 230000006798 recombination Effects 0.000 claims description 3
- 238000005215 recombination Methods 0.000 claims description 3
- 239000004575 stone Substances 0.000 claims description 3
- 230000000295 complement effect Effects 0.000 claims description 2
- 238000005538 encapsulation Methods 0.000 claims description 2
- 238000012858 packaging process Methods 0.000 claims description 2
- 230000008901 benefit Effects 0.000 abstract description 8
- 238000010586 diagram Methods 0.000 description 18
- 235000019800 disodium phosphate Nutrition 0.000 description 9
- 238000013461 design Methods 0.000 description 8
- 238000004364 calculation method Methods 0.000 description 7
- 230000006872 improvement Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 238000012549 training Methods 0.000 description 3
- 238000013528 artificial neural network Methods 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000018109 developmental process Effects 0.000 description 2
- 238000005265 energy consumption Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 208000003580 polydactyly Diseases 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 238000004148 unit process Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
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/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
- G06F7/487—Multiplying; Dividing
- G06F7/4876—Multiplying
-
- 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
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computational Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Nonlinear Science (AREA)
- General Engineering & Computer Science (AREA)
- Complex Calculations (AREA)
Abstract
本发明提供的一种应用于FPGA嵌入式DSP的多精度浮点乘法器结构,包括尾数乘法单元;尾数乘法单元包括数据分割模块,将被乘数数据分成多个数据包送入多个编码器中进行编码;数据编码模块对乘数进行编码处理,数据编码器将经过分割的等位宽数据包按每三位为一组方式进行交叉编码,得到对乘数编码之后的部分积,得到的部分积通过不同的位置排布进行不同组合。该技术方案的有益效果在于,对数据进行分割后进入多个编码器编码,三位为一组方式交叉编码可以产生多组不同的部分积,而这些部分积通过不同的位置排布进行不同组合可以实现三种精度的浮点数的运算。这样可以通过较少的硬件而实现较为复杂的运算,可以减少装置的面积。
Description
技术领域
本发明属于数字集成电路技术领域,尤其涉及一种应用于FPGA嵌入式DSP的多精度浮点乘法器结构。
背景技术
FPGA器件属于专用集成电路中的一种半定制电路,是可编程的逻辑列阵,能够实现特定的逻辑功能或者数字计算任务。FPGA的基本结构包括可编程输入输出单元,可配置逻辑块,数字时钟管理模块,嵌入式RAM,布线资源,内嵌专用硬核,具有布线资源丰富以及可重复编程的优点。凭借自身灵活、开发周期短、成本低廉的优势,一问世便受到工程师们的青睐。
近年来,随着人工智能、大数据等领域的兴起,FPGA 的应用范围被进一步扩展。通过对FPGA中嵌入硬核电路来实现特定的任务,而嵌入式DSP是FPGA中专门用于实现数字信号处理功能的硬件资源,同时也用于加速各种计算任务。而随着应用场景的不断丰富,浮点数据不断被应用在很多的场景中,原先依靠定点DSP和逻辑资源进行运算的模式会消耗大量的片上资源,且运算性能难以高效的实现。所以为了不占用片上资源,开发者设计了一种嵌入式的浮点DSP IP核内嵌在FPGA芯片内用于加速特定的运算和算法。这种内嵌的浮点DSP IP核可以高效的对数字信号、音频及图像等领域进行高效的计算,实现硬件的优化。
浮点运算以其足够高的动态浮动特性,广泛应用在诸多场景;但是单一的浮点精度运算单元不能满足广泛的应用场景。近几年随着深度学习不断发展,神经网络的规模和参数量不断增加,导致训练成本增加;近年来的研究表明,由于低精度格式的浮点数拥有较低的存储成本和计算成本,并且在训练较大模型的神经网络时,不仅降低了训练成本而且对最终结果的准确率几乎没有影响,所以其被证实更适合应用于模型较大的网络中。同样高精度浮点数在医学图像处理,雷达信号处理,密码学等领域也有相应的应用,例如在生物医学和雷达系统应用中的精度损失可能会在精度上产生巨大差异,造成结果的偏差。所以不同的领域对于浮点精度的需求不同。
浮点运算单元可以对不同的数据进行运算,这些运算通常通过加法器、乘法器、除法器、开方器等其他的功能单元实现的。这其中,乘法器作为执行浮点数相乘操作的功能单元,乘法器的性能直接影响到浮点运算单元的性能。而对于多精度浮点乘法运算单元的设计就至关重要。目前所存在多精度乘法器采用的是空间组成方案,使用小型乘法器通过递归算法来计算高精度数的乘法运算,由此可以实现多种精度的乘法运算功能。但是现有的方案存在一些缺点,存在过多的计算延迟,过多的硬件资源的使用,尤其对于有符号数运算中符号位的计算会占用过多的硬件资源,并且随着精度的提高所使用的小型乘法器以及加法器也会不断的增加。所以递归式多精度乘法器不能平衡不同精度数据运算时对于硬件资源的利用率,如逻辑单元或存储器,这会限制其在资源有限的环境中的应用。
这种情况的主要问题在于乘法器单元在不同精度数据运算时不能共享内部硬件资源或者共享程度较低,存在资源浪费的情况,导致这种多精度浮点乘法器的面积和功耗占比整体浮点运算单元大。因此有必要对应用在FPGA中的多精度浮点运算乘法器结构进行优化改进,使得其在保持高效运算前提下,能够实现内部的硬件资源共享,进而降低了多精度浮点乘法器的面积和功耗占比。
发明内容
本发明提供一种应用于FPGA嵌入式DSP的多精度浮点乘法器结构,能够根据信号的选择实现对三种精度格式数据运算的转换,仅需要增加少量的硬件便可实现多精度浮点运算,能够实现内部硬件资源的共享。
本发明的其他目的和优点可以从本发明所揭露的技术特征中得到进一步的了解。
为达上述之一或部分或全部目的或其他目的,本发明一技术方案所提供包括将输入浮点数进行分割的数据预处理单元,数据经分割形成的尾数位进入尾数乘法单元进行数据处理;所述的尾数乘法单元至少由以下几个处理模块组成:数据分割模块,所述数据分割模块将被乘数数据分成多个数据包送入编码模块中进行编码;数据编码模块,包括多个数据编码器,所述编码器对乘数进行编码处理,数据编码器将经过分割的数据包按每三位为一组方式进行交叉编码,得到对乘数编码之后的部分积,得到的部分积通过不同的位置排布进行不同组合;数据编码模块处理得到的部分积通过压缩处理以及加法器处理得到最终的乘法结果。该技术方案的有益效果在于,通过将输入被乘数分割为多个数据包,编码阶段对乘数进行编码,该编码形式是用的某一种编码规则对乘数进行编码。采用三位一组的交叉编码方式,得到相应的部分积,根据不同的精度模式会产生不同的部分积,而这些部分积进行不同的组合可以实现三种精度的浮点数的运算。这样可以通过较少的硬件而实现较为复杂的运算,可以减少装置的面积。
所述数据分割模块将被乘数分割成多个等位宽的数据包,将数据分割成等位宽的数据是为了方便后续的编码器进行编码运算。
所述数据编码模块包括四个数据编码器;数据分割模块将被乘数分割成四个等位宽数据包送入编码器进行编码。本优选方案中是对数据分割成数据包的个数以及编码器的数量进行优选方案,其中在本方案中分割成四个数据包是可以适应三种运算需求,同时还不至于导致装置的面积过大。
所述编码器采用基-4booth编码规则对乘数进行编码。基-4 Booth编码规则是一种用于将二进制乘数编码为更高效的形式以便快速进行乘法运算的技术。其优点是可以减少乘法器的运算量,从而提高乘法运算效率,并且可以使用位级操作来执行乘法,从而节省了硬件资源。
在处理多种位宽编码时,通过分割高位宽数据,封装低位宽数据的方式产生四个统一位宽的数据送入四个编码器中进行编码,得到的部分积进行组合相加便可得到不同位宽的乘法结果。本优选方案为了处理高位宽数据编码通过分割以及封装方式产生多个同一位宽的数据包,不仅方便系统的设计,同时可以很好的利用编码器的并行性,提高硬件的复用性。
作为处理多种位宽数据编码的一种可能实施例,对高位宽数据的分割是将输入数据分割成四组,每组数据为14位的数据包;封装低位宽数据是指将输入的低位宽数据采用补零和补符号位Sy的方式将输入的数据封装成四组,每组数据为14位的数据包。
作为处理多种位宽数据编码的一种可能实施例,将选定的数据包与上一数据包最高位进行拼接作为每个编码器的输入数据,输入的数据为15位数据;该拼接处为共用位;所述共用位通过补零得到的称为截断共用位,数据包在所述截断共用位开始重新选取新的编码组,产生分开编码效果;所述共用位为原始数据包的值称为连续共用位,高位宽的被乘数在所述连续共用位继续编码产生部分积。由于使用了交叉编码方式,可以将高位宽数据分散到多个编码器中,从而可以降低每个编码器的输入宽度,减少需要的硬件电路数量,因此可以降低硬件面积。同时,共用位中包含了前一数据包的最高位,这样可以保证输入数据的连续性,从而可以提高计算的精度,当然最高位为补零的情况时便可以产生分开编码效果,这种处理方式是为了处理不同精度的数据而采用的。
数据压缩之前还须进行数据封装处理,将符号预处理的值取反之后放置于每个部分积的最高位。便于下一步的压缩处理以及便于部分积的相加处理。
为了便于对负数进行处理,本装置还采取了补码操作,也即取反加1操作,分别由编码模块执行取反操作,封装过程中,还需将符号预处理得到的值放置在每个部分积的最后一位。
所述编码模块中编码方式同步了编码器及部分积生成器中所有路径,编码器及部分积生成器具有相同的延时。该设计是为了减少电路中毛刺产生的能量消耗。
所述压缩模块包括两个级别的压缩;第一级压缩包括两层压缩处理,对编码器得到的至少8个部分积进行压缩,第八个压缩位置是自由位,所述自由位用于放置常数;
第二级压缩用于处理第一级压缩的结果,所述第二级压缩用于第一级压缩得到的一个高精度的部分积相加或第一级压缩得到的两个中精度的部分积相加。
作为压缩模块的优选实施例第二级压缩用于两个中精度的部分积相加时,需要进行错位操作,防止两部分压缩器产生干扰。
经过压缩处理的部分积进入加法器进行加法运算后得到最终乘法结果,加法器采用小位宽加法器拼接成大位宽加法器,小位宽加法器通过连接位的通断控制是否进位。
作为加法器的一种可能实施例,每个加法器模块都是采用的koggle-stone并行加法器。该加法器用于高速计算多位数的加法。
经过加法器运算的浮点尾数还需进行舍入操作,所述的舍入操依据IEEE 754浮点标准;包括生成舍入标志信号Hp_s,Sp_s和Dp_s;所述标志信号为粘滞位,所述粘滞位和舍入位、饱和位共同决定舍入类型;根据舍入的类型选择是否对截断位之后的尾数进行加1处理。粘滞位的处理采用低位宽拼接高位宽的方式进行或运算,高精度尾数采用多次或运算得到舍入标志信号;经过舍入操作后的数据进行规格化处理,依据乘法结果三种可能即11、10、01的前两位判断是否需要截取尾数的最高一位进入结果中。
经过编码的数据进入至编码寄存单元保存,进入编码寄存单元的数据可由压缩模块调取;经过数据压缩模块处理后的数据进入加法器寄存单元保存,进入加法器寄存单元的数据可由加法器调取;经过舍入操作以及规格化处理后的数据进入舍入寄存单元保存,进入舍入寄存单元保存的数据经调取进行数据重组后输出寄存器。其中插入流水线寄存器,将中间数据放入寄存单元保存是为了方便对数据的管理与访问,同时寄存器作为操作数的暂存单元,可以提高处理速度,使得不同的处理阶段可以并行,各个阶段的操作可以同时进行,提高运算速度和资源利用率。
经分割的符号位进入符号处理单元处理;所述符号处理单元通过异或的方式对符号位进行运算得到结果的符号。
所述指数处理单元采用小位宽拼接大位宽相加方式得到一个综合的偏移阶码,再通过多路选择器对不同精度的偏置值进行选择,综合的偏移阶码减去每个精度所对应的偏置值,最终得到结果的指数位的值。
编码模块中还包括符号位处理模块;所述符号位处理模块设有信号标志,所述信号标志包括unsign信号标志和sign信号标志,所述unsign信号标志以及sign信号标志用于输出符号预处理过程中每个部分积的符号位;unsign信号标志用于浮点尾数的乘法运算和无符号定点数的乘法运算,sign信号标志用于有符号定点数的乘法运算;所述符号位处理模块还有符号位信号S,所述信号S用于确定乘数是否为有符号数据。该符号位处理模块还可以对无符号位运算以及指数位运算的定点数的符号位进行选择处理,进而使得本申请的乘法器还可以对无符号位运算同时无指数位运算的定点数进行运算。
与现有技术相比,本发明的有益效果主要包括:本发明将输入被乘数分割为四个同位宽的数据包,编码阶段采用基4-booth编码规则对乘数进行编码,采用三位一组的交叉编码方式,得到相应的部分积,根据不同的精度模式会产生不同的部分积,而这些部分积进行不同的组合可以实现三种精度的浮点数的运算,能够最大化的利用内部的硬件资源,对内部的硬件资源进行共享,提高电路面积利用率,降低了电路的面积。
为让本发明的上述和其他目的、特征和优点能更明显易懂,下文特举优选实施例,并配合附图,作详细说明如下。
附图说明
为了更清楚地说明本发明具体实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明中多精度浮点乘法处理结构图;
图2是本发明中三种精度被乘数尾数分割/封装方式示意图;
图3是本发明中Booth编码电路;
图4是本发明中半精度尾数符号预处理示意图;
图5是本发明中单精度尾数符号预处理示意图;
图6是本发明中第一级压缩处理示意图;
图7是本发明中两种精度二级压缩部分积排列方式示意图;
图8 是本发明中第二级压缩处理示意图;
图9是本发明中处理多精度尾数加法器示意图;
图10是本发明中单精度尾数保护位、舍入位和粘滞位处理示意图;
图11是本发明中多精度尾数粘滞位处理示意图。
具体实施方式
有关本发明的前述及其他技术内容、特点与功效,在以下配合参考图式的一优选实施例的详细说明中,将可清楚的呈现。以下实施例中所提到的方向用语,例如:上、下、左、右、前或后等,仅是参考附加图式的方向。因此,使用的方向用语是用来说明并非用来限制本发明。
实施例1
以下结合附图对本发明一种应用于FPGA嵌入式DSP的多精度浮点乘法器结构作详细说明,如图1所示的一种多精度浮点乘法处理结构图,被乘数Y和乘数X同时输入进系统内的输入寄存单元即S101步骤,数据预处理单元将输入的数据进行处理即S102步骤,数据预处理单元将输入的浮点数分割成符号位,指数位以及尾数位。符号位处理,通过符号位拼接的方式得到两个四位的符号位组,再通过两两异或的方式对符号位进行运算得到结果的符号位。指数位处理,将四个半精度浮点数指数位数据拼接在一起,组成一个大位宽数据;该位宽大小支持一个双精度指数位、两个单精度指数位的拼接或者四个半精度指数位的拼接。采用小位宽拼接大位宽相加方式得到一个综合的偏移阶码值,再通过多路选择器对偏置进行选择,综合的偏移阶码减去每个精度所对应的偏置值,最终得到结果的指数位的值。其中,符号位处理单元、指数位处理单元并不一定参与每次的数据运算,对于某些不包含符号位的数据,虽经分割,但是并不形成符号位,自然不需要符号位处理单元参与运算。在浮点运算中,尾数位确定了浮点数的小数部分的位数,尾数越多则小数精度越高,因此,控制浮点运算精度的是尾数位。因此,本发明为了实现发明的目的,实现多精度的运算,设计了一种新型的尾数乘法单元进行数据处理;尾数乘法单元首先对数据进行分割即S103a步骤,数据分割模块将被乘数数据分成四个等位宽的数据包送入四个编码器中进行编码即S104步骤;数据编码模块,包括至少四个数据编码器图中为B1,B2,B3,B4,编码规则是采用基4-booth编码规则对乘数进行编码处理,数据编码器将经过分割的等位宽数据包按每三位为一组方式进行交叉编码,得到乘数编码后的部分积,得到的部分积通过不同的位置排布进行不同组合,经过编码模块处理得到的部分积进入编码寄存单元内等待压缩步骤的调取。
由于存在负数处理步骤,在编码模块便实现了取反操作,但是加1操作在压缩阶段完成,该具体操作可见图4以及图5,以图4为例,每个部分积将符号预处理得到的值放置在每个部分积的最后一位,便是图中所示的数据排列方式。
本申请中的经过乘法单元处理的数据进入数据压缩模块图中的S106步骤,该数据压缩模块包括第一级压缩,用于将编码得到的部分积进行一个初步压缩。还包括第二级压缩模块即步骤的S107步骤。第二级压缩用于中精度数和高精度数的次级压缩,将第一级压缩得到的结果再次压缩得到其最终压缩结果。经过压缩后的部分积进入至加法器寄存单元保存即图中的S108步骤,经过压缩处理的部分积进入加法器进行加法运算即图中中的S109步骤,经过加法器计算后得出的结果还需要进行舍入操作以及规格化操作即图中的S110步骤,该处理步骤得到的结果进入舍入寄存单元保存即图中的S111步骤,舍入寄存单元保存的数据进过数据重组即图中的S112步骤后便可进入输出寄存器即图中的S113步骤,等待着数据的调取输出。上述的技术方案是本发明实现多精度浮点运算的整个装置结构,其中本发明区别现有技术的创新点在于对尾数的处理以及设计的编码电路,具体的是将输入被乘数分割为四个同位宽的数据包,编码阶段采用基4-booth编码规则对乘数进行编码,采用三位一组的交叉编码方式,得到相应的部分积,根据不同的精度模式会产生不同的部分积,而这些部分积进行不同的组合可以实现三种精度的浮点数的运算。同时本申请还可以对定点数进行运算。对于定点数的运算仅是无指数位及符号位运算的定点数运算。仅是用尾数位对定点数进行表示。具体的对三种精度转换方式为:根据信号的选择对三种精度格式数据运算进行转换,单次运算结果为一个双精度浮点数/两个单精度浮点数/四个半精度浮点数。其中运算还包括三种精度格式的定点数乘法运算,单次运算结果为一个53位的定点数/两个24位定点数/四个11位定点数;其中定点数运算包括有符号、无符号的选择,该选择模块设置在下部分的编码电路中。为方便描述,用四个低精度数描述四个半精度浮点尾数和四个11位定点数,用两个中精度数描述两个单精度浮点尾数和两个24位定点数,用一个高精度数来描述一个双精度浮点尾数和一个53位定点数。本申请的发明可以这样可以通过较少的硬件而实现较为复杂的运算,可以减少装置的面积。
以下对尾数乘法单元作具体的描述:
参见图2,图2是三种数据的分隔处理形式,图2中的第一类数据链是一个高精度数,第二类数据链是由两个中精度数组成,第三类数据链是由四个低精度数组成,在分割时候,将这些被乘数分成四组,每组数据14位,14位的数据称为数据包,四个数据包合成了一个长链。在将两个中精度数合并以及四个低精度数合并时候,需要通过补符号位Sy和补零,其中补零是为了使得四组编码器的被乘数保持统一的位宽,使得不同被乘数的数据包之间编码互不影响,补符号位Sy是为了分开运算有符号位定点数以及无符号位定点数。
当需要将图2中的三种不同位宽的数据输入至编码器内时,还需要将选定的数据包与上一数据包的最高位进行拼接,此时拼接处为共用位,此时进入编码步骤的数据包为15位,共用位通过补零得到的称为截断共用位,数据包在该节点重新选取新的被乘数三位编码组,产生分开编码效果;共用位为原始数据包的值称为连续共用位,而连续共用位是被乘数的原始数据,则对于高位宽的被乘数将在该节点继续编码并产生部分积,不会影响高位宽被乘数在该节点的编码组的连续选取。被乘数用A来表示,四个编码器所分割的数据位宽如下:A[55:41],A[41:27],A[27:13],﹛A[13:0],1’b0﹜。
图3为booth编码电路,图3的编码电路中当有连续的三个被乘数y2i+1、y2i、y2i-1以及两个连续的乘数xi、xi-1输入至编码电路中时,则输出结果ppji;而编码电路的下部分有符号位选择模块,该符号位的选择模块可以用来表示符号位预处理输出的每个部分积的符号位,同时还可以对无指数位及符号位运算的定点数的符号位进行选择。具体是输入自定义信号s_sel以及乘数最高位x(width-1)经过逻辑运算输出的表示判断乘数是否为有符号数,当乘数为有符号位时、则输出1,若无符号时则输出0,然后选择调用sign及unsign作为乘数每个部分积的符号位;具体是三组连续的被乘数y2i+1、y2i、y2i-1输入后,对于浮点尾数乘法运算和无符号数的乘法运算,通过unsign信号输出,该信号可以表述无符号位产生的每个部分积的符号位。对于有符号数乘法运算通过sign信号输出,该sign信号输出可以用来表示有符号数产生的每个部分积的符号位。所述编码模块中编码方式同步了编码器及部分积生成器中所有路径,编码器及部分积生成器具有相同的延时。该设计是为了减少电路中毛刺产生的能量消耗。
编码分为两部分,采用基4-booth编码对乘数进行编码,被乘数是三位为一组进行交叉编码,产生的部分积通过不同的位置排布到最终乘法结果,其公示如下:
由于每种精度所产生的部分积的位宽不同且与之对应的符号位预编码的位置也不同,所以需要通过封装的形式对编码器得到的数据进行封装,具体而言是将符号位预处理得到的值取反放置在首部,该值同时放置在尾部,具体的操作结果见图4的半精度尾数符号预处理方式以及图5的单精度尾数符号预处理方式,高精度数据的方式也是同理。
由此可以得到低精度尾数的常数为:1010101011;中精度尾数的常数为:11010101010101010101011;高精度尾数的常数为:1010101010…10101011。
实施例2
本实施例对本发明编码得到的部分积进行压缩处理,具体的操作参见图6、图7以及图8,本次压缩模块分成两级,这样处理的优点在于能够减少低精度数据运算的延迟,第一级的处理在于由编码器得到的8组部分积进行压缩,压缩过程如图6所示。第一级有两层压缩,一共需要八个部分积进行压缩,第八个压缩位置是自由位,可以放置常数。
第二级压缩是承接上一级压缩的结果,在该级压缩有两种情况,一种是一个高精度的部分积相加,一种是两个中精度的部分积相加;具体排列位置如图7所示。对于两个中精度尾数部分积在相加时,需要错位,防止两组部分积相加产生干扰。压缩器的选择和排列位置如图6及图8所示,主要应用了4-2压缩器和3-2压缩器进行二级压缩,其中的4-2压缩器是将四位的数据压缩为2位,3-2压缩器是将三位的数据压缩为两位,经过压缩的数据均为两位。对于两种精度尾数采用统一的压缩结构。其中,在第一及压缩处理过程中,需要防止进位数据传递到下一级压缩中,参见图6的S201及S202步骤中3-2压缩器的使用,对于多组孤立的2位数据、孤立的3位数据以及在三位孤立数据之前的2位数据均通过3-2压缩器处理,将其处理至由两位数组成的压缩器中。低精度运算不经过第二级压缩,可以减少运算的延迟。
实施例3
本实施例是对本发明中的加法模块、舍入模块以及规格化模块作出的具体优化改进。
加法器阶段采用的是低位宽加法器拼接成高位宽加法器,通过控制连接位的通断控制是否进位。每个低精度数据送入加法器的位宽为22位,所以四个并行需要88位,两个中精度数据送入加法器的位宽为48位,所以两个并行需要96位;一个高精度数据送入加法器的位宽为106位,为了方便进行多种位宽的倍数要求,本次需要的大位宽加法器位宽数为108位;通过四个27位小位宽加法器拼接成一个大位宽加法器,则具体设计如图9所示。其中的加法器采用koggle-stone并行加法器进行最终的加法运算。每一个小型加法器的位宽为27位,所以可以进行四个并行低精度数据的相加操作,且互相之间不会存在进位影响;同时对于高精度尾数的相加操作存在进位的选择,每个小加法器之间用进位相连,满足高精度数据高位宽的加法操作。该结构进行最终的多精度尾数的相加操作。
浮点尾数结果的舍入操作,根据IEEE754浮点标准,存在四种舍入规则,且通过三种位置的值(粘滞位、舍入位、饱和位)来确定舍入的类型,如图10所示用单精度舍入时各种位置举例。对于多精度浮点数的舍入操作具体需要产生舍入标志信号Hp_s、Sp_s、Dp_s,该标志信号为粘滞位,该值和饱和位以及舍入位共同决定舍入类型,再根据舍入类型选择是否需要加1运算。本设计中多精度浮点对于粘滞位的处理采用低位宽拼接高位宽进行或运算,对于高精度尾数采用多次或运算得到标志信号。逻辑图如图11所示。浮点乘法规格化问题,由于乘法结果的前两位只存在三种可能即11、10、01,所以在舍入结束之后进行规格化时,只需要根据前两位来判断是否需要截取尾数的最高一位进入到结果中。
以上对本发明所提供的一种应用于FPGA嵌入式DSP的多精度浮点乘法器进行了详细介绍,本文中应用了具体个例对本发明的结构及工作原理进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求保护的范围内。
Claims (19)
1.一种应用于FPGA嵌入式DSP的多精度浮点乘法器结构,包括将输入浮点数进行分割的数据预处理单元,其特征在于:数据经分割形成的尾数位进入尾数乘法单元进行数据处理;
所述的尾数乘法单元至少由以下几个处理模块组成:
数据分割模块,所述数据分割模块将被乘数数据分成多个数据包送入编码模块中进行编码;
数据编码模块,包括多个数据编码器,所述编码器对乘数进行编码处理,数据编码器将经过分割的数据包按每三位为一组方式进行交叉编码,得到对乘数编码之后的部分积,得到的部分积通过不同的位置排布进行不同组合;
数据编码模块处理得到的部分积通过压缩处理以及加法器处理得到最终的乘法结果。
2.根据权利要求1所述的一种应用于FPGA嵌入式DSP的多精度浮点乘法器结构,其特征在于:所述数据分割模块将被乘数分割成多个等位宽的数据包。
3.根据权利要求2所述的一种应用于FPGA嵌入式DSP的多精度浮点乘法器结构,其特征在于:所述数据编码模块包括四个数据编码器;
数据分割模块将被乘数分割成四个等位宽数据包送入编码器进行编码。
4.根据权利要求1所述的一种应用于FPGA嵌入式DSP的多精度浮点乘法器结构,其特征在于:所述编码器采用基-4booth编码规则对乘数进行编码。
5.根据权利要求3所述的一种应用于FPGA嵌入式DSP的多精度浮点乘法器结构,其特征在于:在处理多种位宽编码时,通过分割高位宽数据,封装低位宽数据的方式产生四个统一位宽的数据送入四个编码器中进行编码,得到的部分积进行组合相加便可得到不同位宽的乘法结果。
6.根据权利要求5所述的一种应用于FPGA嵌入式DSP的多精度浮点乘法器结构,其特征在于:对高位宽数据的分割是将输入数据分割成四组,每组数据为14位的数据包;
封装低位宽数据是指将输入的低位宽数据采用补零和补符号位的方式将输入的数据封装成四组,每组数据为14位的数据包。
7.根据权利要求6所述的一种应用于FPGA嵌入式DSP的多精度浮点乘法器结构,其特征在于:将选定的数据包与上一数据包最高位进行拼接作为每个编码器的输入数据,输入的数据为15位数据;
该拼接处为共用位;
所述共用位通过补零得到的称为截断共用位,数据包在所述截断共用位开始重新选取新的编码组,产生分开编码效果;
所述共用位为原始数据包的值称为连续共用位,高位宽的被乘数在所述连续共用位继续编码产生部分积。
8.根据权利要求1所述的一种应用于FPGA嵌入式DSP的多精度浮点乘法器结构,其特征在于:数据压缩之前还须进行数据封装处理,将符号预处得到的值取反之后放置于每个部分积的最高位。
9.根据权利要求8所述的一种应用于FPGA嵌入式DSP的多精度浮点乘法器结构,其特征在于:执行补码操作时,取反操作由编码模块执行,封装过程中,将符号预处理得到的值放置在每个部分积的最后一位。
10.根据权利要求1所述的一种应用于FPGA嵌入式DSP的多精度浮点乘法器结构,其特征在于:所述编码模块中编码方式同步了编码器及部分积生成器中所有路径,编码器及部分积生成器具有相同的延时。
11.根据权利要求1所述的一种应用于FPGA嵌入式DSP的多精度浮点乘法器结构,其特征在于:经过编码器处理过的数据进入压缩模块,压缩模块将多个部分积进行压缩处理,所述压缩模块包括两个级别的压缩;
第一级压缩包括两层压缩处理,对编码器得到的至少8个部分积进行压缩,第八个压缩位置是自由位,所述自由位用于放置常数;
第二级压缩用于处理第一级压缩的结果,所述第二级压缩用于第一级压缩得到的一个高精度的部分积相加或第一级压缩得到的两个中精度的部分积相加。
12.根据权利要求11所述的一种应用于FPGA嵌入式DSP的多精度浮点乘法器结构,其特征在于:第二级压缩用于两个中精度的部分积相加时,需要进行错位操作。
13.根据权利要求11所述的一种应用于FPGA嵌入式DSP的多精度浮点乘法器结构,其特征在于:经过压缩处理的部分积进入加法器进行加法运算后得到最终乘法结果,所述加法器采用小位宽加法器拼接成大位宽加法器,小位宽加法器通过连接位的通断控制是否进位。
14.根据权利要求13所述的一种应用于FPGA嵌入式DSP的多精度浮点乘法器结构,其特征在于:每个加法器模块都是采用的koggle-stone并行加法器。
15.根据权利要求13所述的一种应用于FPGA嵌入式DSP的多精度浮点乘法器结构,其特征在于:经过加法器运算的浮点尾数还需进行舍入操作,所述的舍入操依据IEEE 754浮点标准执行操作;
包括生成舍入标志信号Hp_s,Sp_s和Dp_s;
所述标志信号为粘滞位,所述粘滞位和舍入位、饱和位共同决定舍入类型;根据舍入的类型选择是否对截断之后的尾数进行加1处理;
粘滞位的处理采用低位宽拼接高位宽的方式进行或运算,高精度尾数采用多次或运算得到舍入标志信号;
经过舍入操作后的数据进行规格化处理,依据乘法结果三种可能即11、10、01的前两位判断是否需要截取尾数的最高一位进入结果中。
16.根据权利要求1所述的一种应用于FPGA嵌入式DSP的多精度浮点乘法器结构,其特征在于:经过编码的数据进入至编码寄存单元保存,进入编码寄存单元的数据可由压缩模块调取;
经过数据压缩模块处理后的数据进入加法器寄存单元保存,进入加法器寄存单元的数据可由加法器调取;
经过舍入操作以及规格化处理后的数据进入舍入寄存单元保存,进入舍入寄存单元保存的数据经调取进行数据重组后输出寄存器。
17.根据权利要求1所述的一种应用于FPGA嵌入式DSP的多精度浮点乘法器结构,其特征在于:经数据预处理单元分割形成的符号位进入符号处理单元处理;
所述符号处理单元通过异或的方式对符号位进行运算得到结果的符号。
18.根据权利要求1所述的一种应用于FPGA嵌入式DSP的多精度浮点乘法器结构,其特征在于:经数据预处理单元分割形成的指数位进入指数处理单元处理;
所述指数处理单元采用小位宽拼接大位宽相加方式得到一个综合的偏移阶码,再通过多路选择器对不同精度的偏置值进行选择,综合的偏移阶码减去每个精度所对应的偏置值,最终得到结果的指数位的值。
19.根据权利要求1所述的一种应用于FPGA嵌入式DSP的多精度浮点乘法器结构,其特征在于:编码模块中还包括符号位处理模块;
所述符号位处理模块设有信号标志,所述信号标志包括unsign信号标志和sign信号标志,所述unsign信号标志以及sign信号标志用于输出符号预处理过程中每个部分积的符号位;
unsign信号标志用于浮点尾数的乘法运算和无符号定点数的乘法运算,sign信号标志用于有符号定点数的乘法运算;
所述符号位处理模块还有符号位信号S,所述信号S用于确定乘数是否为有符号数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311429429.8A CN117149130B (zh) | 2023-10-31 | 2023-10-31 | 一种应用于fpga嵌入式dsp的多精度浮点乘法器结构 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311429429.8A CN117149130B (zh) | 2023-10-31 | 2023-10-31 | 一种应用于fpga嵌入式dsp的多精度浮点乘法器结构 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117149130A CN117149130A (zh) | 2023-12-01 |
CN117149130B true CN117149130B (zh) | 2024-01-30 |
Family
ID=88897264
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311429429.8A Active CN117149130B (zh) | 2023-10-31 | 2023-10-31 | 一种应用于fpga嵌入式dsp的多精度浮点乘法器结构 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117149130B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117891430B (zh) * | 2024-03-18 | 2024-05-14 | 中科亿海微电子科技(苏州)有限公司 | 一种应用于fpga嵌入式dsp的浮点乘加结构 |
CN117931123B (zh) * | 2024-03-25 | 2024-06-14 | 中科亿海微电子科技(苏州)有限公司 | 一种应用于fpga的低功耗可变精度嵌入式dsp硬核结构 |
CN117971160B (zh) * | 2024-03-29 | 2024-06-14 | 西北工业大学 | 一种包括错误预测的乘法器 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20050115589A (ko) * | 2004-06-04 | 2005-12-08 | 주식회사 대우일렉트로닉스 | 3차원 리드-솔로몬 코드의 오류정정 부호화/복호화 방법 |
US9189200B1 (en) * | 2013-03-14 | 2015-11-17 | Altera Corporation | Multiple-precision processing block in a programmable integrated circuit device |
CN114696839A (zh) * | 2020-12-28 | 2022-07-01 | 三星电子株式会社 | 针对存储器系统的对长度兼容极性码的纠错 |
CN116820393A (zh) * | 2023-06-15 | 2023-09-29 | 中国人民解放军国防科技大学 | 支持深度学习指令的多精度乘加单元及其应用方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9483232B2 (en) * | 2014-03-07 | 2016-11-01 | Arm Limited | Data processing apparatus and method for multiplying floating point operands |
-
2023
- 2023-10-31 CN CN202311429429.8A patent/CN117149130B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20050115589A (ko) * | 2004-06-04 | 2005-12-08 | 주식회사 대우일렉트로닉스 | 3차원 리드-솔로몬 코드의 오류정정 부호화/복호화 방법 |
US9189200B1 (en) * | 2013-03-14 | 2015-11-17 | Altera Corporation | Multiple-precision processing block in a programmable integrated circuit device |
CN114696839A (zh) * | 2020-12-28 | 2022-07-01 | 三星电子株式会社 | 针对存储器系统的对长度兼容极性码的纠错 |
CN116820393A (zh) * | 2023-06-15 | 2023-09-29 | 中国人民解放军国防科技大学 | 支持深度学习指令的多精度乘加单元及其应用方法 |
Non-Patent Citations (2)
Title |
---|
一种128位高精度浮点乘加部件的研究与实现;张峰;黎铁军;徐炜遐;;计算机工程与科学(第02期);全文 * |
张峰 ; 黎铁军 ; 徐炜遐 ; .一种128位高精度浮点乘加部件的研究与实现.计算机工程与科学.2009,(第02期),全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN117149130A (zh) | 2023-12-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN117149130B (zh) | 一种应用于fpga嵌入式dsp的多精度浮点乘法器结构 | |
CN115934030B (zh) | 算数逻辑单元、浮点数乘法计算的方法及设备 | |
Samimi et al. | Res-DNN: A residue number system-based DNN accelerator unit | |
US8805915B2 (en) | Fused multiply-add apparatus and method | |
US4737926A (en) | Optimally partitioned regenerative carry lookahead adder | |
CN111832719A (zh) | 一种定点量化的卷积神经网络加速器计算电路 | |
CN106951211A (zh) | 一种可重构定浮点通用乘法器 | |
CN104246690A (zh) | 数字信号处理器中用于信号处理的系统和方法 | |
Yen et al. | An efficient redundant-binary number to binary number converter | |
KR19980041753A (ko) | 다른 데이타 형을 갖는 다수의 데이타를 처리하는 가산기 | |
CN110955403B (zh) | 近似基-8布斯编码器及混合布斯编码的近似二进制乘法器 | |
CN116661733A (zh) | 一种支持多种精度的乘法器及微处理器 | |
WO2022170811A1 (zh) | 一种适用于混合精度神经网络的定点乘加运算单元及方法 | |
CN113608718B (zh) | 一种实现素数域大整数模乘计算加速的方法 | |
CN116661734B (zh) | 支持多输入多格式的低精度乘加运算器 | |
KR20220064337A (ko) | 세분화된 희소 정수 및 부동 소수점 연산들을 위한 프로세서 | |
CN110727412B (zh) | 一种基于掩码的混合浮点乘法低功耗控制方法及装置 | |
Bobba et al. | Analytical expressions for average bit statistics of signal lines in DSP architectures | |
CN116933840A (zh) | 支持可变指数位宽的多精度Posit编解码运算装置及方法 | |
CN117891430B (zh) | 一种应用于fpga嵌入式dsp的浮点乘加结构 | |
US7840628B2 (en) | Combining circuitry | |
Kumar et al. | Complex multiplier: implementation using efficient algorithms for signal processing application | |
CN117931123B (zh) | 一种应用于fpga的低功耗可变精度嵌入式dsp硬核结构 | |
US20050223054A1 (en) | Multiplier sign extension method and architecture | |
KR102549120B1 (ko) | 딥러닝 하드웨어 가속기를 구비하는 bspe 코어 |
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 |