主要内容gydF4y2Ba

原生浮点数的数值考虑gydF4y2Ba

本机浮点技术可以从您的浮点设计中生成HDL代码。与定点设计相比,浮点设计具有更高的精度、更高的动态范围和更短的开发周期。如果您的设计包含复杂的数学和三角运算,请使用本机浮点技术。gydF4y2Ba

HDL Coder™生成符合IEEE-754浮点运算标准的代码。HDL Coder原生浮点支持:金宝appgydF4y2Ba

  • 四舍五入到最接近的四舍五入模式gydF4y2Ba

  • Denormal数字gydF4y2Ba

  • 如NaN (Not a Number)、Inf和Zero等例外gydF4y2Ba

  • 定制的ULP(单位在最后的地方)和相对的准确性gydF4y2Ba

四舍五入模式gydF4y2Ba

HDL编码器本机浮点使用四舍五入到最接近的甚至四舍五入模式。此模式通过四舍五入到最接近的偶数来解析所有关系。gydF4y2Ba

这种舍入方法要求尾数的23位之后至少有三个尾随位。MSB被称为保护位,中间的被称为圆位,LSB被称为粘位。该表显示了HDL Coder根据三个尾位的不同值执行的舍入操作。gydF4y2BaxgydF4y2Ba代表一个gydF4y2Ba不关心gydF4y2Ba值,可以取0或1。gydF4y2Ba

舍入位gydF4y2Ba 舍入操作gydF4y2Ba
0 xxgydF4y2Ba

未执行任何操作。gydF4y2Ba

One hundred.gydF4y2Ba 一个领带。如果Guard位之前的尾数位是1,则四舍五入,否则不执行任何操作。gydF4y2Ba
101gydF4y2Ba 围捕。gydF4y2Ba
11 xgydF4y2Ba 围捕。gydF4y2Ba

Denormal数字gydF4y2Ba

非正规数是指具有等于零的指数域和非零尾数域的数。尾数的前导位是零。gydF4y2Ba

vgydF4y2Ba 一个gydF4y2Ba lgydF4y2Ba ugydF4y2Ba egydF4y2Ba =gydF4y2Ba (gydF4y2Ba −gydF4y2Ba 1gydF4y2Ba )gydF4y2Ba 年代gydF4y2Ba 我gydF4y2Ba ggydF4y2Ba ngydF4y2Ba *gydF4y2Ba (gydF4y2Ba 0gydF4y2Ba +gydF4y2Ba ΣgydF4y2Ba 23gydF4y2Ba 我gydF4y2Ba =gydF4y2Ba 1gydF4y2Ba bgydF4y2Ba 23gydF4y2Ba −gydF4y2Ba 我gydF4y2Ba 2gydF4y2Ba −gydF4y2Ba 我gydF4y2Ba )gydF4y2Ba *gydF4y2Ba 2gydF4y2Ba −gydF4y2Ba 126gydF4y2Ba

非常规数的数值小于尾数中不带前导零所能表示的最小浮点数。异常数字的存在表明有效数字的丢失,这些数字可能在后续操作中累积并最终导致意外值。gydF4y2Ba

处理非常规数字的逻辑包括计算前导零的数量并执行左移操作以获得规范化表示。添加此逻辑会增加目标设备上的面积占用,并可能影响设计的时间。gydF4y2Ba

当使用本机浮点支持时,您可以指定是否希望HDL Coder在设计中金宝app处理非常规数字。gydF4y2Ba

异常处理gydF4y2Ba

当执行除零或计算负数的对数等操作时,HDL Coder会检测并报告异常。该表总结了从浮点数的编码到各种异常的浮点数值的映射。gydF4y2BaxgydF4y2Ba代表一个gydF4y2Ba不关心gydF4y2Ba值,可以取0或1。gydF4y2Ba

标志gydF4y2Ba 指数gydF4y2Ba SignificandgydF4y2Ba 价值gydF4y2Ba 描述gydF4y2Ba
xgydF4y2Ba 0 xffgydF4y2Ba 0 x00000000gydF4y2Ba

vgydF4y2Ba 一个gydF4y2Ba lgydF4y2Ba ugydF4y2Ba egydF4y2Ba =gydF4y2Ba (gydF4y2Ba −gydF4y2Ba 1gydF4y2Ba )gydF4y2Ba 年代gydF4y2Ba ∞gydF4y2Ba

∞gydF4y2Ba
xgydF4y2Ba 0 xffgydF4y2Ba 非零值gydF4y2Ba

value = NaNgydF4y2Ba

不是数字gydF4y2Ba
xgydF4y2Ba 0 x00gydF4y2Ba 0 x00000000gydF4y2Ba

值= 0gydF4y2Ba

零gydF4y2Ba
xgydF4y2Ba 0 x00gydF4y2Ba 非零值gydF4y2Ba

vgydF4y2Ba 一个gydF4y2Ba lgydF4y2Ba ugydF4y2Ba egydF4y2Ba =gydF4y2Ba (gydF4y2Ba −gydF4y2Ba 1gydF4y2Ba )gydF4y2Ba 年代gydF4y2Ba 我gydF4y2Ba ggydF4y2Ba ngydF4y2Ba *gydF4y2Ba (gydF4y2Ba 0gydF4y2Ba +gydF4y2Ba ΣgydF4y2Ba 23gydF4y2Ba 我gydF4y2Ba =gydF4y2Ba 1gydF4y2Ba bgydF4y2Ba 23gydF4y2Ba −gydF4y2Ba 我gydF4y2Ba 2gydF4y2Ba −gydF4y2Ba 我gydF4y2Ba )gydF4y2Ba *gydF4y2Ba 2gydF4y2Ba −gydF4y2Ba 126gydF4y2Ba

DenormalgydF4y2Ba
xgydF4y2Ba 0x00 < E < 0xFFgydF4y2Ba xgydF4y2Ba

vgydF4y2Ba 一个gydF4y2Ba lgydF4y2Ba ugydF4y2Ba egydF4y2Ba =gydF4y2Ba (gydF4y2Ba −gydF4y2Ba 1gydF4y2Ba )gydF4y2Ba 年代gydF4y2Ba 我gydF4y2Ba ggydF4y2Ba ngydF4y2Ba *gydF4y2Ba (gydF4y2Ba 1gydF4y2Ba +gydF4y2Ba ΣgydF4y2Ba 23gydF4y2Ba 我gydF4y2Ba =gydF4y2Ba 1gydF4y2Ba bgydF4y2Ba 23gydF4y2Ba −gydF4y2Ba 我gydF4y2Ba 2gydF4y2Ba −gydF4y2Ba 我gydF4y2Ba )gydF4y2Ba *gydF4y2Ba 2gydF4y2Ba (gydF4y2Ba egydF4y2Ba −gydF4y2Ba 127gydF4y2Ba )gydF4y2Ba

正常的gydF4y2Ba

相对精度和ULP考虑gydF4y2Ba

用有限位数表示无限实数需要近似值。这种近似可能导致浮点计算中的舍入误差。为了测量舍入误差,浮点标准使用相对误差和ULP(末位单位)误差。gydF4y2Ba

ULPgydF4y2Ba

如果指数范围不是上界,则浮点数x的ULP (Units in Last Place)是最接近x的两个跨置浮点数a和b之间的距离。IEEE-754标准要求加法、乘法、除法等基本算术运算的结果必须是正确的四舍五入。正确舍入的结果意味着舍入的结果与确切结果的误差在0.5 ULP以内。gydF4y2Ba

ULP = 1表示加agydF4y2Ba1gydF4y2Ba到数字的十进制值。该表显示了圆周率的近似值为9位十进制数字,以及1的ULP如何改变近似值。gydF4y2Ba

浮点数gydF4y2Ba 十进制值gydF4y2Ba 单一类型的IEEE-754表示gydF4y2Ba ULPgydF4y2Ba
3.141592741gydF4y2Ba 1078530011gydF4y2Ba 0 | 10000000 | 10000000gydF4y2Ba 0gydF4y2Ba
3.141592979gydF4y2Ba 1078530012gydF4y2Ba 0 | 10000000 | 10000000gydF4y2Ba 1gydF4y2Ba

两个连续可表示的浮点数之间的间隔根据大小而变化。gydF4y2Ba

浮点数gydF4y2Ba 十进制值gydF4y2Ba 单一类型的IEEE-754表示gydF4y2Ba ULPgydF4y2Ba
1234567gydF4y2Ba 1234613304gydF4y2Ba 0 | 10010011 | 10010011gydF4y2Ba 0gydF4y2Ba
1234567.125gydF4y2Ba 1234613305gydF4y2Ba 0 | 10010011 | 10010011gydF4y2Ba 1gydF4y2Ba

相对误差gydF4y2Ba

相对误差测量浮点数与实数近似值之间的差异。相对误差返回从1.0到下一个较大数字的距离。这个表格显示了一个数字的真实值是如何随着相对精度而变化的。gydF4y2Ba

浮点数gydF4y2Ba 十进制值gydF4y2Ba 单一类型的IEEE-754表示gydF4y2Ba ULPgydF4y2Ba 相对误差gydF4y2Ba
8388608gydF4y2Ba 1258291200gydF4y2Ba 0 | 10010110 | 10010110gydF4y2Ba 0gydF4y2Ba 1gydF4y2Ba
8388607gydF4y2Ba 1258291198gydF4y2Ba 0 | 10010101 | 10010101gydF4y2Ba 1gydF4y2Ba 2.3841858 e-07gydF4y2Ba
1gydF4y2Ba 1065353216gydF4y2Ba 0 | 01111111 | 01111111gydF4y2Ba 0gydF4y2Ba 1.1920929 e-07gydF4y2Ba
2gydF4y2Ba 1073741824gydF4y2Ba 0 | 10000000 | 10000000gydF4y2Ba 1gydF4y2Ba 2.3841858 e-07gydF4y2Ba

相对误差的大小取决于浮点数的实际值。gydF4y2Ba

在MATLABgydF4y2Ba®gydF4y2Ba,gydF4y2Ba每股收益gydF4y2Ba函数测量浮点数的相对精度。有关更多信息,请参见gydF4y2Ba每股收益gydF4y2Ba.gydF4y2Ba

另请参阅gydF4y2Ba

建模指南gydF4y2Ba

功能gydF4y2Ba

相关的例子gydF4y2Ba

更多关于gydF4y2Ba