System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及电子信息,尤其涉及一种可编程电路单精度浮点数开平方方法。
技术介绍
1、目前,在cpld/fpga应用开发领域中,只能直接进行整数运算,要进行定点小数运算较为困难,如果需要进行定点小数运算采用的方法是放大2n倍的方式进行运算,计算完成后得到的结果再进行相应的缩小还原。
2、现有技术中,vivado中cordic ip核自带cordic开平方算法,该算法可用于整数开平方运算。
3、但现有技术中,计算出的结果小数部分自动丢弃,精度极低,而且运算速度非常慢,周期长,不能正确处理负数不能开平方的问题。
技术实现思路
1、本专利技术的目的在于提供一种可编程电路单精度浮点数开平方方法,旨在解决现有技术中的计算出的结果小数部分自动丢弃,精度极低,而且运算速度非常慢,周期长,不能正确处理负数不能开平方的技术问题。
2、为实现上述目的,本专利技术采用的一种可编程电路单精度浮点数开平方方法,包括如下步骤:
3、定义系数常数,变量初始化;
4、输入参数v,对参数v的正负进行判断,并确定参数v是否为0或1;
5、提取参数v的尾数与指数,判断指数是否大于或等于127;
6、按指数为非负数方向调整尾数和指数;
7、设置变量x和变量y,x=移位调整后的纯小数+0.25,y=移位调整后的纯小数-0.25;
8、根据cordic浮点数开方算法运算;
9、结果尾数=x[32:0]*系数
10、调整尾数与指数数,组合指数与尾数地得结果;
11、输出运算结果,并结束运算。
12、其中,输入参数result均采用32位ieee 754单精度浮点数格式;
13、定义常ieee 754单精度32位浮点系数localparam m=32'h3f9a8f4e;//1.2074983该系数是cordic计算开平方运算32位单精度浮点修正系数,可由专用工具计算而得,cordic开平方运算得的结果,需要乘以该系数进行修正才能得到正确的开平方结果。
14、其中,在ieee 754单精度格式中,最高位是符号位,后续8位为指数位,该指数采用移码表示,该指数减去127后得到的指数为实际指数,尾数经过归一化处理后,表示范围为1.0~2.0之间的小数,实际为24位,其中尾数最高位默认为1,在数据表示中省略,其余23位尾数位为纯小数位。
15、其中,参数v正负只需要检查数据最高位,当v[31]=1表示是负数,负数不能再实数范围开平方,因此该输入为非法数值,程序运算后result输出为高阻状态,否则为非负数,可以进行开平方运算。
16、其中,对于其他输入数据则直接提取该输入数据的指数和尾数,该指数大于等于127,表示指数为非负指数,该指数减去127为实际的指数;当指数小于127,表示指数为负指数,用127减去该指数得到的数据为实际指数。
17、其中,变量x和变量y中的0.25可以表示为ieee 754格式浮点数,0.25的ieee 754格式的尾数同样需要调整为纯小数,指数为-2。
18、本专利技术的一种可编程电路单精度浮点数开平方方法的有益效果为:与传统的开平方算法相比,运算速度提高了18~33倍,大大提高了数据开平方运算速度,提高系统计算效率,运算精度得到了提高,采用ieee 754的32位单精度浮点数cordic开方算法完成一次开平方运算,仅需要1个时钟周期,计算出来的结果精度高1~3个数量级,多个模块时序搭配更加方便,系统计算效率得到大大提高,通过程序修正,能正确处理负数不能开平方根的问题。
本文档来自技高网...【技术保护点】
1.一种可编程电路单精度浮点数开平方方法,其特征在于,包括如下步骤:
2.如权利要求1所述的一种可编程电路单精度浮点数开平方方法,其特征在于,
3.如权利要求1所述的一种可编程电路单精度浮点数开平方方法,其特征在于,
4.如权利要求1所述的一种可编程电路单精度浮点数开平方方法,其特征在于,
5.如权利要求1所述的一种可编程电路单精度浮点数开平方方法,其特征在于,
6.如权利要求1所述的一种可编程电路单精度浮点数开平方方法,其特征在于,
【技术特征摘要】
1.一种可编程电路单精度浮点数开平方方法,其特征在于,包括如下步骤:
2.如权利要求1所述的一种可编程电路单精度浮点数开平方方法,其特征在于,
3.如权利要求1所述的一种可编程电路单精度浮点数开平方方法,其特征在于,
<...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。