一种利用函数回调实现可伸缩乘法的方法及系统

文档序号:1736959 发布日期:2019-12-20 浏览:12次 >En<

阅读说明:本技术 一种利用函数回调实现可伸缩乘法的方法及系统 (Method and system for realizing scalable multiplication by utilizing function callback ) 是由 刘坤华 陈龙 袁湛楠 谢玉婷 于 2019-08-27 设计创作,主要内容包括:本发明提供了一种利用函数回调实现可伸缩乘法的方法及系统,本发明通过设计乘法模型,根据累加器最低位以及最小有效位的数值来对累加器进行累加,并将累加器进行右移,通过VHDL编码对乘法模型进行分析评估,利用ModelSim程序进行仿真,并使用优化乘法器代码中带有变量输入的函数调用来检查模拟结果,实现了乘法可伸缩性,通过将其应用在数字系统和信号处理中,可有效提高乘法效率。(The invention provides a method and a system for realizing scalable multiplication by function callback, which accumulate an accumulator according to the numerical values of the lowest bit and the least significant bit of the accumulator by designing a multiplication model, right shift the accumulator, analyze and evaluate the multiplication model by VHDL coding, simulate by a ModelSim program, check a simulation result by using function call with variable input in an optimized multiplier code, realize the scalability of multiplication, and effectively improve the multiplication efficiency by applying the multiplication model to a digital system and signal processing.)

一种利用函数回调实现可伸缩乘法的方法及系统

技术领域

本发明涉及数字信号技术领域,更具体地,涉及一种利用函数回调实现可伸缩乘法的方法及系统。

背景技术

乘法是许多信号和图像处理应用中的基本算法之一,其对于所有类型的无线通信应用程序也是必不可少的。乘法是数学系统和信号处理的基本单位,在数字信号生成算法以及微处理器的基本计算单元中,乘法也被广泛考虑,另外在图像处理以及加密方法等许多领域中均有应用。

乘法器和加法器是数字系统和信号处理的基本运算单元,在设计一个包含乘法器和加法器的电路时,乘法器从速度、功率、面积以及复杂度等方面展示了原始设计。这是因为在加法器中添加位并生成一个通过各种方式调整的单个数字。在乘法的时候,将比特相乘以产生一个部分乘法,然后将部分乘积相加以得到最终的乘积。与加法器相比,乘法有更多的步骤,所以效率较低,导致拖慢了数字信号处理效率。

发明内容

本发明为克服上述现有技术中乘法器的乘法效率低的问题,提供一种利用函数回调实现可伸缩乘法的方法及系统,通过建立乘法的数学模型,提高数字信号处理效率。

为解决上述技术问题,本发明采用的技术方案是:提供一种利用函数回调实现可伸缩乘法的方法,包括以下步骤:

S1:输入乘法累加器P和预设值A、S;

S2:判断循环执行宽度与输入长度是否相同,如果相同,则执行结束,输出结果,否则执行步骤S3;

S3:判断累加器最低位是否为0且最小有效位是否为1,如果是,则令P=P+A,并执行步骤S5,否则执行步骤S4;

S4:判断累加器P最低位是否为1且最小有效位是否为0,如果是,则令P=P+S,执行步骤S5,否则直接执行步骤S5;

S5:累加器P右移,执行步骤S2。

优选地,利用回调函数作为基本操作来完成添加操作。

优选地,还包括利用ModelSim程序对8位、16位、32位进行仿真,对不同模式的输入进行性能测试。

本发明还提供了用于上述方法的利用函数回调实现可伸缩乘法的系统,包括:参数输入模块,用于输入乘法累加器P和预设值A、S;

第一累加模块,用于当累加器最低位为0且最小有效位为1时,令P=P+A;

第二累加模块,用于当累加器P最低位为1且最小有效位为0时,令P=P+S;

循环执行模块,用于循环执行累加操作,直至循环执行宽度与输入长度相同。

优选地,所述系统利用回调函数作为基本操作来完成添加操作。

优选地,所述系统还包括仿真模块,用于利用ModelSim程序对8位、16位、32位进行仿真,对不同模式的输入进行性能测试。

与现有技术相比,本发明的有益效果:本发明通过设计乘法模型,根据累加器最低位以及最小有效位的数值来对累加器进行累加,并将累加器进行右移,通过VHDL编码对乘法模型进行分析评估,利用ModelSim程序进行仿真,并使用优化乘法器代码中带有变量输入的函数调用来检查模拟结果,实现了乘法可伸缩性,通过将其应用在数字系统和信号处理中,可有效提高乘法效率。

附图说明

图1为本发明一种利用函数回调实现可伸缩乘法方法的流程图;

图2为本发明一种利用函数回调实现可伸缩乘法系统的框图。

具体实施方式

附图仅用于示例性说明,不能理解为对本专利的限制;为了更好说明本实施例,附图某些部件会有省略、放大或缩小,并不代表实际产品的尺寸;对于本领域技术人员来说,附图中某些公知结构及其说明可能省略是可以理解的。附图中描述位置关系仅用于示例性说明,不能理解为对本专利的限制。

本发明实施例的附图中相同或相似的标号对应相同或相似的部件;在本发明的描述中,需要理解的是,若有术语“上”、“下”、“左”、“右”“长”“短”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此附图中描述位置关系的用语仅用于示例性说明,不能理解为对本专利的限制,对于本领域的普通技术人员而言,可以根据具体情况理解上述术语的具体含义。

下面通过具体实施例,并结合附图,对本发明的技术方案作进一步的具体描述:

实施例1

如图1所示为一种利用函数回调实现可伸缩乘法的方法的实施例,包括以下步骤:

S1:输入乘法累加器P和预设值A、S;

S2:判断循环执行宽度与输入长度是否相同,如果相同,则执行结束,输出结果,否则执行步骤S3;

S3:判断累加器最低位是否为0且最小有效位是否为1,如果是,则令P=P+A,并执行步骤S5,否则执行步骤S4;

S4:判断累加器P最低位是否为1且最小有效位是否为0,如果是,则令P=P+S,执行步骤S5,否则直接执行步骤S5;

S5:累加器P右移,执行步骤S2。

执行二元乘法的一般方法为先计算部分积再将这些部分相加,而在本发明实施例算法中,通过改变数字基数,减少了部分积的数量,提高了乘法器的速度。

本发明实施例为基于布斯乘两个有符号的数字,布斯乘法是一种实用的有符号位乘法,根据该算法,P代表部分乘法,A代表加法,S代表差分,LSB为最小有效位。在定义a、s、lsb之后,如果两个lsb为01,则计算p+a,如果两个lsb为10,则执行p+s,并向右移动一位。

具体流程如下:

输入变量P、A,判断循环执行宽度与输入长度是否相同,如不同,判断是否P(0)=0且LSB=1,如果是,则令P=P+A,并将P右移一位,否则判断是否P(0)=1且LSB=0;如果P(0)=1且LSB=0,则P=P+S,并将P右移一位,否则直接将P右移一位。循环执行上述步骤,直至循环执行宽度与输入长度相同,结束执行并返回输出结果。

例如在输入数字中有-5和14,实际上,输入是5位,S、P和A的值如下:

P:00000110110;A:01110000000;S:10010000000。

添加到移位的P+S在第一轮执行,在第二轮中,只有一个单元向右移动,第三轮计算P+A,进行一个移位单元,第四轮也与P、S和移位的计算一起进行,最后只有一个单位班次,最终结果为1110111010。

利用VHDL编码对其进行评估和分析,并用ModelSim程序进行仿真,为准确检查延迟和级别,在代码中使用回调函数作为基本操作来完成添加操作。乘法代码通过使用具有不受限制的参数的函数调用获得,并允许使用任意大小的输入。通过使用ModelSim程序对8位、16位、32位进行设计和仿真,对不同模式的输入进行性能测试。

本发明实施例通过设计乘法模型,根据累加器最低位以及最小有效位的数值来对累加器进行累加,并将累加器进行右移,通过VHDL编码对乘法模型进行分析评估,利用ModelSim程序进行仿真,并使用优化乘法器代码中带有变量输入的函数调用来检查模拟结果,实现了乘法可伸缩性,通过将其应用在数字系统和信号处理中,可有效提高乘法效率。

实施例2

如图2所示为一种利用函数回调实现可伸缩乘法的系统的实施例,包括:

参数输入模块,用于输入乘法累加器P和预设值A、S;

第一累加模块,用于当累加器最低位为0且最小有效位为1时,令P=P+A;

第二累加模块,用于当累加器P最低位为1且最小有效位为0时,令P=P+S;

循环执行模块,用于循环执行累加操作,直至循环执行宽度与输入长度相同。

输入变量P、A,判断循环执行宽度与输入长度是否相同,如不同,判断是否P(0)=0且LSB=1,如果是,则令P=P+A,并将P右移一位,否则判断是否P(0)=1且LSB=0;如果P(0)=1且LSB=0,则P=P+S,并将P右移一位,否则直接将P右移一位。循环执行上述步骤,直至循环执行宽度与输入长度相同,结束执行并返回输出结果。

所述系统还包括仿真模块,用于利用ModelSim程序对8位、16位、32位进行仿真,对不同模式的输入进行性能测试。

利用VHDL编码对其进行评估和分析,并用ModelSim程序进行仿真,为准确检查延迟和级别,在代码中使用回调函数作为基本操作来完成添加操作。乘法代码通过使用具有不受限制的参数的函数调用获得,并允许使用任意大小的输入。通过使用ModelSim程序对8位、16位、32位进行设计和仿真,对不同模式的输入进行性能测试。

显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。

7页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种矩阵向量乘法电路及计算方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类