A Block Floating Point Implementation on the TMS320C54x DSP
A Block Floating Point Implementation on the TMS320C54x DSP
A Block Floating Point Implementation on the TMS320C54x DSP
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
SPRA610<br />
3 The <str<strong>on</strong>g>Block</str<strong>on</strong>g> <str<strong>on</strong>g>Floating</str<strong>on</strong>g> <str<strong>on</strong>g>Point</str<strong>on</strong>g> C<strong>on</strong>cept<br />
At this point it is clear that fixed and floating-point implementati<strong>on</strong>s have <strong>the</strong>ir respective advantages.<br />
It is possible to achieve <strong>the</strong> dynamic range approaching that of floating-point arithmetic<br />
while working with fixed-point processors. This can be accomplished by using floating-point<br />
emulati<strong>on</strong> software routines. Emulating floating-point behaviour <strong>on</strong> a fixed-point processor tends<br />
to be very cycle intensive, since <strong>the</strong> emulati<strong>on</strong> routine must manipulate all arithmetic computati<strong>on</strong>s<br />
to artificially mimic floating-point math <strong>on</strong> a fixed-point device. This software emulati<strong>on</strong> is<br />
<strong>on</strong>ly worthwhile if a small porti<strong>on</strong> of <strong>the</strong> overall computati<strong>on</strong> requires extended dynamic range.<br />
Clearly, a cost-effective alternative for floating-point dynamic range implemented <strong>on</strong> a fixed-point<br />
processor is needed.<br />
The block floating point algorithm is based <strong>on</strong> <strong>the</strong> block automatic gain c<strong>on</strong>trol (AGC) c<strong>on</strong>cept.<br />
<str<strong>on</strong>g>Block</str<strong>on</strong>g> AGC <strong>on</strong>ly scales values at <strong>the</strong> input stage of <strong>the</strong> FFT. It <strong>on</strong>ly adjusts <strong>the</strong> input signal power.<br />
The block floating point algorithm takes it a step fur<strong>the</strong>r by tracking <strong>the</strong> signal strength from stage<br />
to stage to provide a more comprehensive scaling strategy and extended dynamic range.<br />
The floating-point emulati<strong>on</strong> scheme discussed here is <strong>the</strong> block floating-point algorithm. The<br />
primary benefit of <strong>the</strong> block floating-point algorithm emanates from <strong>the</strong> fact that operati<strong>on</strong>s are<br />
carried out <strong>on</strong> a block basis using a comm<strong>on</strong> exp<strong>on</strong>ent. Here, each value in <strong>the</strong> block can be<br />
expressed in two comp<strong>on</strong>ents – a mantissa and a comm<strong>on</strong> exp<strong>on</strong>ent. The comm<strong>on</strong> exp<strong>on</strong>ent is<br />
stored as a separate data word. This results in a minimum hardware implementati<strong>on</strong> compared<br />
to that of a c<strong>on</strong>venti<strong>on</strong>al floating-point implementati<strong>on</strong>.<br />
Mantissa<br />
0 1 1 0 1 0 0 0 0<br />
All <strong>the</strong>se numbers share<br />
<strong>on</strong>e comm<strong>on</strong> exp<strong>on</strong>ent<br />
0 1 1 0 0 1 0 0 0<br />
Exp<strong>on</strong>ent<br />
0 1 1 0 1 1 0 0 0 0 1 0 1<br />
0 1 0 1 0 0 0 0 0<br />
0 1 0 1 1 0 0 0 0<br />
Figure 3. Diagram of <str<strong>on</strong>g>Block</str<strong>on</strong>g> <str<strong>on</strong>g>Floating</str<strong>on</strong>g>-<str<strong>on</strong>g>Point</str<strong>on</strong>g> Representati<strong>on</strong><br />
The value of <strong>the</strong> comm<strong>on</strong> exp<strong>on</strong>ent is determined by <strong>the</strong> data element in <strong>the</strong> block with <strong>the</strong><br />
largest amplitude. In order to compute <strong>the</strong> value of <strong>the</strong> exp<strong>on</strong>ent, <strong>the</strong> number of leading bits has<br />
to be determined. This is determined by <strong>the</strong> number of left shifts required for this data element<br />
to be normalized to <strong>the</strong> dynamic range of <strong>the</strong> processor. Certain <strong>DSP</strong> processors have specific<br />
instructi<strong>on</strong>s, such as exp<strong>on</strong>ent detecti<strong>on</strong> and normalizati<strong>on</strong> instructi<strong>on</strong>s, that perform this task.<br />
If a given block of data c<strong>on</strong>sists entirely of small values, a large comm<strong>on</strong> exp<strong>on</strong>ent can be used<br />
to shift <strong>the</strong> small data values left and provide more dynamic range. On <strong>the</strong> o<strong>the</strong>r hand, if a data<br />
block c<strong>on</strong>tains large data values, <strong>the</strong>n a small comm<strong>on</strong> exp<strong>on</strong>ent will be applied. Whatever <strong>the</strong><br />
case may be, <strong>on</strong>ce <strong>the</strong> comm<strong>on</strong> exp<strong>on</strong>ent is computed, all data elements in <strong>the</strong> block are shifted<br />
up by that amount, in order to make optimal use of <strong>the</strong> available dynamic range. The exp<strong>on</strong>ent<br />
computati<strong>on</strong> does not c<strong>on</strong>sider <strong>the</strong> most significant bit, since that is reserved for <strong>the</strong> sign bit and<br />
is not c<strong>on</strong>sidered to be part of <strong>the</strong> dynamic range.<br />
A <str<strong>on</strong>g>Block</str<strong>on</strong>g> <str<strong>on</strong>g>Floating</str<strong>on</strong>g> <str<strong>on</strong>g>Point</str<strong>on</strong>g> <str<strong>on</strong>g>Implementati<strong>on</strong></str<strong>on</strong>g> <strong>on</strong> <strong>the</strong> <strong>TMS320C54x</strong> <strong>DSP</strong><br />
5