28.12.2014 Views

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

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!