本机浮点技术可以从您的浮点设计中生成HDL代码。与定点设计相比,浮点设计具有更高的精度、更高的动态范围和更短的开发周期。如果您的设计包含复杂的数学和三角运算,请使用本机浮点技术。gydF4y2Ba
HDL Coder™生成符合IEEE-754浮点运算标准的代码。HDL Coder原生浮点支持:金宝appgydF4y2Ba
四舍五入到最接近的四舍五入模式gydF4y2Ba
Denormal数字gydF4y2Ba
如NaN (Not a Number)、Inf和Zero等例外gydF4y2Ba
定制的ULP(单位在最后的地方)和相对的准确性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 |
非正规数是指具有等于零的指数域和非零尾数域的数。尾数的前导位是零。gydF4y2Ba
非常规数的数值小于尾数中不带前导零所能表示的最小浮点数。异常数字的存在表明有效数字的丢失,这些数字可能在后续操作中累积并最终导致意外值。gydF4y2Ba
处理非常规数字的逻辑包括计算前导零的数量并执行左移操作以获得规范化表示。添加此逻辑会增加目标设备上的面积占用,并可能影响设计的时间。gydF4y2Ba
当使用本机浮点支持时,您可以指定是否希望HDL Coder在设计中金宝app处理非常规数字。gydF4y2Ba
当执行除零或计算负数的对数等操作时,HDL Coder会检测并报告异常。该表总结了从浮点数的编码到各种异常的浮点数值的映射。gydF4y2BaxgydF4y2Ba
代表一个gydF4y2Ba不关心gydF4y2Ba值,可以取0或1。gydF4y2Ba
标志gydF4y2Ba | 指数gydF4y2Ba | SignificandgydF4y2Ba | 价值gydF4y2Ba | 描述gydF4y2Ba |
---|---|---|---|---|
xgydF4y2Ba | 0 xffgydF4y2Ba | 0 x00000000gydF4y2Ba |
|
∞gydF4y2Ba |
xgydF4y2Ba | 0 xffgydF4y2Ba | 非零值gydF4y2Ba | value = NaNgydF4y2Ba |
不是数字gydF4y2Ba |
xgydF4y2Ba | 0 x00gydF4y2Ba | 0 x00000000gydF4y2Ba | 值= 0gydF4y2Ba |
零gydF4y2Ba |
xgydF4y2Ba | 0 x00gydF4y2Ba | 非零值gydF4y2Ba |
|
DenormalgydF4y2Ba |
xgydF4y2Ba | 0x00 < E < 0xFFgydF4y2Ba | xgydF4y2Ba |
|
正常的gydF4y2Ba |
用有限位数表示无限实数需要近似值。这种近似可能导致浮点计算中的舍入误差。为了测量舍入误差,浮点标准使用相对误差和ULP(末位单位)误差。gydF4y2Ba
如果指数范围不是上界,则浮点数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 |
相对误差测量浮点数与实数近似值之间的差异。相对误差返回从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