本机浮点技术可以从浮点设计生成HDL代码。与定点设计相比,浮点设计具有更好的精度、更高的动态范围和更短的开发周期。如果您的设计具有复杂的数学和三角运算,请使用本机浮点技术。GydF4y2Ba
HDL Coder™生成符合IEEE-754浮点运算标准的代码。HDL Coder原生浮点支持:金宝appGydF4y2Ba
四舍五入到最近的四舍五入模式GydF4y2Ba
非规范数GydF4y2Ba
异常,如NaN(非数字)、Inf和零GydF4y2Ba
ULP(最后一位的单位)的定制和相对准确性GydF4y2Ba
HDL Coder原生浮点使用整数到最接近的四舍五入模式。该模式通过舍入到最近的偶数来解析所有的关系。GydF4y2Ba
这种舍入方法要求尾数的23位之后至少有三个尾随位。MSB称为保护位,中间位称为圆位,LSB称为粘性位。下表显示了HDL编码器根据三个尾随位的不同值执行的舍入操作。GydF4y2BaxGydF4y2Ba
表示一个GydF4y2Ba不关心GydF4y2Ba值,可以取0或1。GydF4y2Ba
舍入位GydF4y2Ba | 舍入操作GydF4y2Ba |
---|---|
0 xxGydF4y2Ba |
未执行任何操作。GydF4y2Ba |
One hundred.GydF4y2Ba |
领带。如果保护位之前的尾数位为1,则向上取整,否则不执行任何操作。GydF4y2Ba |
101GydF4y2Ba |
使聚集GydF4y2Ba |
11倍GydF4y2Ba |
使聚集GydF4y2Ba |
非正数是指指数域等于零和尾数域非零的数。尾数的前导位为零。GydF4y2Ba
非正规数的大小小于可以在尾数中不带前导零表示的最小浮点数。正常数的存在表明有效数字的丢失,这些数字可能在后续操作中积累,最终导致意外值。GydF4y2Ba
处理正规数的逻辑包括计算前导零的数目,并执行左移操作以获得规范化表示。添加此逻辑会增加目标设备上的区域占用,并可能影响设计的时间。GydF4y2Ba
使用本机浮点支持时,可以指定是否希望HDL编码器在设计中处理非规范金宝app数字。GydF4y2Ba
如果执行诸如除零或计算负数对数之类的操作,HDL编码器将检测并报告异常。该表总结了各种异常情况下从浮点数编码到数字值的映射。GydF4y2BaxGydF4y2Ba
表示一个GydF4y2Ba不关心GydF4y2Ba值,可以取0或1。GydF4y2Ba
标志GydF4y2Ba | 指数GydF4y2Ba | 意义GydF4y2Ba | 价值GydF4y2Ba | 描述GydF4y2Ba |
---|---|---|---|---|
xGydF4y2Ba | 0 xffGydF4y2Ba | 0 x00000000GydF4y2Ba |
|
无穷GydF4y2Ba |
xGydF4y2Ba | 0 xffGydF4y2Ba | 非零值GydF4y2Ba | 值=南GydF4y2Ba |
不是一个数字GydF4y2Ba |
xGydF4y2Ba | 0x00GydF4y2Ba | 0 x00000000GydF4y2Ba | 值= 0GydF4y2Ba |
零GydF4y2Ba |
xGydF4y2Ba | 0x00GydF4y2Ba | 非零值GydF4y2Ba |
|
非规范GydF4y2Ba |
xGydF4y2Ba | 0x00xGydF4y2Ba |
|
典型的GydF4y2Ba |
|
用有限位数表示无限实数需要近似值。这种近似可能导致浮点计算中的舍入错误。为了测量舍入误差,浮点标准使用相对误差和ULP(最后一位的单位)误差。GydF4y2Ba
如果指数范围不是上限,则浮点数x的最后一位单位(ULP)是最接近x的两个最接近的跨接浮点数a和b之间的距离。IEEE-754标准要求基本算术运算(如加法、乘法和除法)的结果是正确的四舍五入。正确的四舍五入结果意味着四舍五入结果与精确结果的误差在0.5 ULP以内。GydF4y2Ba
一个ULP为1表示添加一个GydF4y2Ba1.GydF4y2Ba
到数字的十进制值。该表显示了pi到九位十进制数字的近似值,以及一位的ULP如何改变近似值。GydF4y2Ba
浮点数GydF4y2Ba | 十进制值GydF4y2Ba | IEEE-754单一类型的表示法GydF4y2Ba | ULPGydF4y2Ba |
---|---|---|---|
3.141592741GydF4y2Ba | 1078530011GydF4y2Ba | 0|10000000|10010010000111111011011GydF4y2Ba | 0GydF4y2Ba |
3.141592979GydF4y2Ba | 1078530012GydF4y2Ba | 0|10000000|10010010000111111011100GydF4y2Ba | 1.GydF4y2Ba |
两个连续表示的浮点数之间的间隔根据大小而变化。GydF4y2Ba
浮点数GydF4y2Ba | 十进制值GydF4y2Ba | IEEE-754单一类型的表示法GydF4y2Ba | ULPGydF4y2Ba |
---|---|---|---|
1234567GydF4y2Ba | 1234613304GydF4y2Ba | 0 | 10010011 | 10010011GydF4y2Ba | 0GydF4y2Ba |
1234567.125GydF4y2Ba | 1234613305GydF4y2Ba | 0 | 10010011 | 10010011GydF4y2Ba | 1.GydF4y2Ba |
相对误差度量浮点数与实数近似值之间的差值。相对误差返回从1.0到下一个较大数字的距离。此表显示了数字的实际值如何随相对精度而变化。GydF4y2Ba
浮点数GydF4y2Ba | 十进制值GydF4y2Ba | IEEE-754单一类型的表示法GydF4y2Ba | ULPGydF4y2Ba | 相对误差GydF4y2Ba |
---|---|---|---|---|
8388608GydF4y2Ba | 1258291200GydF4y2Ba | 0|10010110|00000000000000000000000GydF4y2Ba | 0GydF4y2Ba | 1.GydF4y2Ba |
8388607GydF4y2Ba | 1258291198GydF4y2Ba | 0|10010101|11111111111111111111110GydF4y2Ba | 1.GydF4y2Ba | 2.3841858 e-07GydF4y2Ba |
1.GydF4y2Ba | 1065353216GydF4y2Ba | 0 | 01111111 | 01111111GydF4y2Ba | 0GydF4y2Ba | 1.1920929 e-07GydF4y2Ba |
2.GydF4y2Ba | 1073741824GydF4y2Ba | 0 | 10000000 | 10000000GydF4y2Ba | 1.GydF4y2Ba | 2.3841858 e-07GydF4y2Ba |
相对误差的大小取决于浮点数的实际值。GydF4y2Ba
在MATLABGydF4y2Ba®GydF4y2Ba这个GydF4y2Ba每股收益GydF4y2Ba
函数测量浮点数的相对精度。有关详细信息,请参阅GydF4y2Ba每股收益GydF4y2Ba
.GydF4y2Ba