在2.2.2节中已经介绍了如何确定一个浮点信号的位宽,那么一个浮点数在电路中实际传输的数值是多少呢?对于这个问题,有多种解决方法,例如在第12章讲到的IEEE754方法。不同的表示方法都有其各自的优点,比如IEEE754方法的优点是用较少的位宽表示较大范围的数据,其所表示的数,小数点可以浮动,当表示的数值较大时,精度降低,当数值较小时,精度可以提高。但使用这种表示法有一定难度,处理时需要更多技巧。对于不需要传输宽范围数值的信号,一般不使用这种较为复杂的表示,而是使用更为简单且直接的表示法。
常用的浮点数定点化表示方法如式(2-9)所示。其中, a 为定点化前的浮点数, n 为 a 的二进制小数精度, 表示对 x 向下取整, b 为定点化后的浮点数,它是一个整数。
用式(2-9)的方式进行的定点化,其特征是小数精度 n 在转换后就固定了,不像IEEE754那样能够灵活调整。小数点不再浮动,而是停留在固定的位置,因而称为定点化。在电路实现前,应先用算法仿真确定一个合适的 n ,既不能因太大而浪费面积,又不能取太小而无法满足性能要求。
假设一个数值为19.1384,要求保留7位精度,则实际电路中传输的值为十进制的2449。这里只规定了精度,并未指定该信号的取值范围,因此,尚不能确定2449的位宽。在数值转化后,可以知道本次转化的误差为0.0056,其计算方法如下:
有时,为了既能减少位宽,又能多保留1位精度,将式(2-9)的向下取整改为四舍五入也是可行的。若如此,则上例定点化后的数值为2450,转化误差为0.0022。
如果给浮点数的表示再增加一层复杂度,加入符号因素,该如何表示这个数呢?最容易理解的方式是按照2.4节介绍的方法将浮点数转换为整数,再按照其符号将其用补码表示即可。
注意 在本书中,对于一个未经定点化的浮点值,电路将其作为一个理论上进行参考和对照的概念,称为 浮点值 。而对浮点数进行定点化后的值,即实际在电路中传输的值,称为 定点值 。