开方运算的硬件实现方法以及开方运算器技术

技术编号:6873214 阅读:393 留言:0更新日期:2012-04-11 18:40
本发明专利技术所要提供一种新的,不用占用大量存储空间的,能够在硬件上实现开方运算的方法以及实现该方法的开方运算器。采用逐位逼近法,先开辟一个全0的寄存器作为输入数据的n次方根值的中间值寄存器,再确定一个寄存器变量i的初始值,并置中间值寄存器的第i位为1,确保初始化后的中间值寄存器的值的n次方大于原始输入数据。之后逐渐设置中间值寄存器的低位,并将设置后的值进行n次方运算,将n次方运算结果与输入数据进行比较,从而调整中间值寄存器的设置,直到i减为0或者n次方运算结果等于输入数据,开方运算结束,将此时中间值寄存器中的值作为开方运算结果。

【技术实现步骤摘要】

本专利技术属于硬件平台的运算和数据处理技术。
技术介绍
加减乘除以及开方运算是科学计算和工程应用中最基本的运算,他们广泛应用于多次方程求解、数学建模、误差计算、数据加密、数值分析、概率统计、图像处理以及信号处理等许多领域。关于整数及浮点数的运算已经在VLSI (超大规模集成电路)标准中有规定。 一些计算已经在FPGA (现场可编程门阵列)中实现了。开方运算虽然不如加减乘除使用频繁,然而它计算相对复杂,处理速度明显低于其他运算,因此用FPGA实现快速的当η大于等于3的η次方根运算是比较困难的。目前,求解输入数据的平方根算法(开2次方根运算)已经被提出了多种,比如牛顿迭代法、SRT-冗余算法、非冗余算法、CORDIC算法等。这些算法已经比较成熟,并且成功地运用到硬件电路设计中,实现方便快速。但是如果要计算一个输入数据的η次方根(η大于等于3),运用上述算法将变得非常复杂,硬件实现困难且相当麻烦。当然,目前也有一些其他方法用于计算一个数据的η次方根,比如通过软件的方法来进行计算,但是这种高级语言的计算需要取指、译码等然后进行许多次乘法和加法运算,执行一次η次方根计算的时间很长,达不到硬件计算电路的高速率标准。另外一种常用的,就是查表法。具体方法就是将被开η次方的数据作为地址,其η次方根的结果作为对应地址的内容存放到ROM中。这样,当输入一个被开η次方根的数据时,以此数据作为地址对 ROM进行查询,得到的结果就是它的η次方根值。采用查表法需要事先获得η次方根表并将其存放到ROM中,这种办法虽然不需要计算,但也存在以下缺点(1)存储容量巨大。比如要实现一个32bit输入数据的η次方根运算,那就需要2的32次方即4G个地址空间的 ROM。(2)处理延时较大。用于查询的时延较大,直接导致数字系统的时钟频率降低。(3) 对于大容量的查表,其维护困难。主要是因为当需要改变η次方根舍入方法时,必须更改大容量ROM的内容,所需要的工作量巨大。(4)重用性不高。当需要n次方根结果精确到小数时,ROM的容量和查找表内容都相应的要做出修改。
技术实现思路
本专利技术所要解决的技术问题是,提供一种新的,不用占用大量存储空间的,能够在硬件上实现开方运算的方法以及实现该方法的开方运算器。开方运算的硬件实现方法,包括以下步骤步骤1、输入数据寄存器存储待进行开η次方运算的数据,再进入步骤2,所述η为大于等于3的正整数;步骤2、处理模块确定中间值寄存器变量i的初始值,所述变量i为中间值寄存器的第i比特位,初始化中间值寄存器的第i比特位为1,其余比特位为0,再进入步骤3 ;步骤3、处理模块根据η的大小来控制乘法运算模块对中间值寄存器中的值进行η次方运算,乘法运算模块将结果输出至中间结果寄存器,再进入步骤4 ;步骤4、比较器比较输入数据寄存器中的值与中间结果寄存器中的值的大小,并将比较结果反馈至处理模块,再进入步骤5 ;步骤5、处理模块根据比较结果设置中间值寄存器当输入数据寄存器中的值大于中间结果寄存器中的值时,更新i为i-ι,设置中间结果寄存器的第i比特位为1,再进入步骤7 ;当输入数据寄存器中的值小于中间结果寄存器中的值时,重新设置第i比特位为0, 再更新i为i_l,设置第i比特位为1,再进入步骤7 ;当输入数据寄存器中的值等于中间结果寄存器中的值时,进入步骤8 ;步骤7、处理模块判断i是否为0,如是,则进入步骤8,如否,则返回步骤3 ;步骤8、处理模块控制中间值寄存器将当前存储的值输入至结果寄存器中,本次开方运算结束。具体的,步骤2中,处理模块确定中间值寄存器变量i的初始值,应保证初始化后的中间值寄存器的值在进行η次方运算后大于输入数据寄存器的值。本专利技术采用逐位逼近法,先开辟一个全0的寄存器作为输入数据的η次方根值的中间值寄存器,再确定一个寄存器变量i的初始值,并置中间值寄存器的第i位为1,确保初始化后的中间值寄存器的值的η次方大于原始输入数据。之后逐渐设置中间值寄存器的低位,并将设置后的值进行η次方运算,将η次方运算结果与输入数据进行比较,从而调整中间值寄存器的设置,直到i减为0或者η次方运算结果等于输入数据,开方运算结束,将此时中间值寄存器中的值作为开方运算结果。进一步的,还能通过将结果保留几个小数位来确保实际中想要达到的精度。步骤 4中,如需要将开方运算结果精确到小数位1,则处理模块先控制比较器对输入数据寄存器中的值做左移运算,左移IXn位得到输入数据寄存器中左移后的值;比较器再比较输入数据寄存器中左移后的值与中间结果寄存器中的值的大小,并将比较结果反馈至处理模块, 再进入步骤5。实现上述方法的开方运算器,包括输入数据寄存器、处理模块、中间值寄存器、中间结果寄存器、开方结果寄存器、乘法运算模块、比较器;所述输入数据寄存器,用于存储待进行开η次方运算的数据,所述η为大于等于3 的正整数;所述处理模块,用于初始化时,确定中间值寄存器变量i的初始值,所述变量i为中间值寄存器的第i比特位,初始化中间值寄存器的第i比特位为1,其余比特位为0,初始化设置完毕之后触发乘法运算模块;根据Π的大小来控制乘法运算模块进行Π次方运算;根据比较结果设置中间值寄存器,当输入数据寄存器中的值大于中间结果寄存器中的值时,更新i为i-ι,设置中间结果寄存器的第i比特位为1,再判断i是否为0,如是, 则控制中间值寄存器将当前存储的值输入至结果寄存器中,如否,则触发乘法运算模块;当输入数据寄存器中的值小于中间结果寄存器中的值时,重新设置第i比特位为0,再更新i 为i_l,设置第i比特位为1,再判断i是否为0,如是,则控制中间值寄存器将当前存储的值输入至结果寄存器中,如否,则触发乘法运算模块;当输入数据寄存器中的值等于中间结果寄存器中的值时,直接控制中间值寄存器将当前存储的值输出至结果寄存器中;所述中间值寄存器,用于存储开方运算的中间值;所述乘法运算模块,用于对中间值寄存器的值进行η次方运算,将结果输出至中间结果寄存器,并触发比较器;所述中间结果寄存器,用于存储中间值进行η次方运算后的结果;所述比较器,用于比较输入数据寄存器中的值与中间结果寄存器中的值的大小, 并将比较结果反馈至处理模块;所述结果寄存器,用于存储开方运算的结果。进一步的,处理模块用于,当开方运算结果设置为精确到小数位1,则处理模块控制比较器对输入数据寄存器中的值做左移运算;所述比较器用于,对输入数据寄存器中的值做左移运算,左移IXn位得到输入数据寄存器中左移后的值,比较输入数据寄存器中左移后的值与中间结果寄存器中的值的大本专利技术的有益效果是,通过硬件的计算可以节省大量的计算时间,简单易行、资源占用少而且快速准确,可以根据实际的需要将η次方根值的结果保留所需要的小数位数以确保一定的精度。附图说明图1为开方运算器示意图;图2为实施例的中间计算寄存器示意图;图3为实施例的开方运算流程图;图4为乘法运算模块对中间计算寄存器的值分别进行3、4、5、6次方运算的流水线电路结构图;图5为实施例对输入数据求三次方根的modelsim仿真。 具体实施例方式本实施基于FPGA实现,设需要计算η次方根值的输入数据均为16bit的无符号整数,η在本实施例中为大于3的整数。虽然本专利技术的方法也可以适用于η为1或2的情况, 但此本文档来自技高网
...

【技术保护点】
1.开方运算的硬件实现方法,其特征在于,包括以下步骤:步骤1、输入数据寄存器存储待进行开n次方运算的数据,再进入步骤2,所述n为大于等于3的正整数;步骤2、处理模块确定中间值寄存器变量i的初始值,所述变量i为中间值寄存器的第i比特位;初始化中间值寄存器的第i比特位为1,其余比特位为0,再进入步骤3;步骤3、处理模块根据n的大小来控制乘法运算模块对中间值寄存器中的值进行n次方运算,乘法运算模块将结果输出至中间结果寄存器,再进入步骤4;步骤4、比较器比较输入数据寄存器中的值与中间结果寄存器中的值的大小,并将比较结果反馈至处理模块,再进入步骤5;步骤5、处理模块根据比较结果设置中间值寄存器:当输入数据寄存器中的值大于中间结果寄存器中的值时,更新i为i-1,再设置中间结果寄存器的第i比特位为1,再进入步骤7;当输入数据寄存器中的值小于中间结果寄存器中的值时,重新设置第i比特位为0,更新i为i-1,再设置第i比特位为1,再进入步骤7;当输入数据寄存器中的值等于中间结果寄存器中的值时,进入步骤8;步骤7、处理模块判断i是否为0,如是,则进入步骤8,如否,则返回步骤3;步骤8、处理模块控制中间值寄存器将当前存储的值输入结果寄存器,本次开方运算结束。...

【技术特征摘要】

【专利技术属性】
技术研发人员:杨博方超杨林刘皓
申请(专利权)人:电子科技大学
类型:发明
国别省市:90

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1