C
Numeric Formats
C – 5
is not available; the 32.0 result gets shifted to 31.1 format. Because the MSB
is still available in the 40-bit accumulator, a right shift can correct the
result.
In all processors other than the ADSP-2100, fractional and integer modes
are controlled by a bit in the MSTAT register. At reset, these processors
default to the fractional mode, for compatibility with the ADSP-2100.
C.5
BLOCK FLOATING-POINT FORMAT
A block floating-point format enables a fixed-point processor to gain some
of the increased dynamic range of a floating-point format without the
overhead needed to do floating-point arithmetic. Some additional
programming is required to maintain a block floating-point format,
however.
A floating-point number has an exponent that indicates the position of the
radix point in the actual value. In block floating-point format, a set (block)
of data values share a common exponent. To convert a block of fixed-point
values to block floating-point format, you would shift each value left by
the same amount and store the shift value as the block exponent.
Typically, block floating-point format allows you to shift out non-
significant MSBs, increasing the precision available in each value. You can
also use block floating-point format to eliminate the possibility of a data
value overflowing. Figure C.4 shows an example. The three data samples
each have at least 2 non-significant, redundant sign bits. Each data value
0x0FFF
0x1FFF
0x07FF
=
=
=
0000
0001
0000
1111
1111
0111
1111
1111
1111
1111
1111
1111
2 Guard Bits
Sign Bit
To detect bit growth into 2 guard bits, set SB=–2
Figure C.4 Data With Guard Bits