world leader in high performance signal processing

Trace:
# Differences

This shows you the differences between two versions of the page.

making_the_blackfin_perform [2010/11/29 22:01] lastman [Example - Dot Product] grammar fixes |
making_the_blackfin_perform [2010/11/29 22:08] (current) lastman [Example - FFT] grammar fixes |
---|

Line 113: | Line 113: | ||

===== Example - FFT ===== | ===== Example - FFT ===== | ||

- | Another good example of a of a commonly used function is the [[wp>Fast_Fourier_transform|Fast Fourier Transform]] (FFT). It is an efficient algorithm to compute the discrete Fourier transform (DFT) and its inverse. FFTs are of great importance to a wide variety of applications, from signal processing to solving partial differential equations to algorithms for quickly multiplying large integers. | + | Another good example of a commonly used function is the [[wp>Fast_Fourier_transform|Fast Fourier Transform]] (FFT). It is an efficient algorithm to compute the discrete Fourier transform (DFT) and its inverse. FFTs are of great importance to a wide variety of applications, from signal processing to solving partial differential equations to algorithms for quickly multiplying large integers. |

If <m 10>x = x_0, x_1,{cdots},~x_n</m> of complex numbers, the DFT is:\\ | If <m 10>x = x_0, x_1,{cdots},~x_n</m> of complex numbers, the DFT is:\\ | ||

Line 122: | Line 122: | ||

There are many ways and algorithms to calculate an FFT, [[wp>Cooley-Tukey_FFT_algorithm|Cooley Tukey]] being one of the most common. | There are many ways and algorithms to calculate an FFT, [[wp>Cooley-Tukey_FFT_algorithm|Cooley Tukey]] being one of the most common. | ||

- | A C implementation is show at:? | + | A C implementation is shown at:? |

<source trunk/user/blkfin-apps/ndso/src_ndso/int_fft.c:fix_fft() c uclinux-dist> | <source trunk/user/blkfin-apps/ndso/src_ndso/int_fft.c:fix_fft() c uclinux-dist> | ||

Line 130: | Line 130: | ||

</code> | </code> | ||

- | A alternative solution is to use the fft function in the libbfdsp library: | + | An alternative solution is to use the fft function in the libbfdsp library: |

<code c> | <code c> | ||

Line 145: | Line 145: | ||

</code> | </code> | ||

- | The two different functions are the functionally equivalent, but from a performance standpoint, it is more than a 50x difference. Using the built in functions, take only 18,400 cycles. | + | The two different functions are functionally equivalent, but from a performance standpoint, there is more than 50x difference. Using the built in function takes only 18,400 cycles. |

As another point of reference the following link points to a page which optimizes an FFT with intrinsics and inline assembler. [[example-builtin]] | As another point of reference the following link points to a page which optimizes an FFT with intrinsics and inline assembler. [[example-builtin]] |