Discrete Fourier Transform
Contents
- Represent a periodic signal as a sum of sinusoids
- Transforms a fixed number of signal samples (i.e. discrete) in the time domain to a discrete signal in the frequency domain
- Allows for advanced filtering and modulation techniques, as well as fast large integer and polynomial multiplication
- Essentially a matrix-vector multiplication, where the matrix is a fixed set of coefficients

Nreal values, signal represented byg[](time domain)N/2 + 1complex values, signal represented byG[](frequency domain)G = S·gSis the matrix which our discrete time signals are multiplied by- // Columns represent fractional rotations //
Visualisation (8 point DFT)

- Symmetry e.g.
s[i][j] = s[j][i]
Matrix Multiplication Implementation

Baseline

Notes
N = 256means thatSIZE = 256 * 256 = a big value- This implementation is not ideal for HLS
cosandsinare slow!- Maybe we could use CORDIC 🤔
Schedule

Architecture

Optimisation

- Floating point operations is expensive and requires many pipeline stages
- Pipelining reduces the impacts of these high-latency operations
- However, the loop carry dependency of
temp_realandtemp_imaglimits the achievableIIwhen pipelining the inner loop
Optimisation - Loop Interchange / Pipeline-interleaved Processing
e.g. swap
iandj
Accumulate independent values

Optimisation - Lookups for Sin and Cos

Optimisation - Interface
