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 by- g[](time domain)
- N/2 + 1complex values, signal represented by- G[](frequency domain)- G = S·g
- Sis 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 that- SIZE = 256 * 256 = a big value
- This implementation is not ideal for HLS- cosand- sinare 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
