Model → FPGA → RF → Measurement¶
This page is the core of the course. It describes how a signal travels from a mathematical idea to a real RF waveform and back to data.
End-to-end system view¶
flowchart TB
MODEL["1. Reference model<br/>MATLAB / Simulink, ideal floating-point behavior and expected spectrum"]
FIXED["2. Fixed-point model<br/>word length, scaling, overflow margins and quantization noise"]
FPGA["3. FPGA pipeline<br/>DDS, mixer, FIR, interpolation, AXI-Stream and latency"]
RF["4. RF transmit path<br/>AD9363 DAC, mixer, filters, gain and frequency plan"]
CHANNEL["5. Physical channel<br/>coax with attenuation or controlled over-the-air path"]
RX["6. Independent receiver<br/>RTL-SDR / HDSDR observation outside the main board"]
IQ["7. IQ recording<br/>WAV / RAW / CI16 data with sample-rate and frequency metadata"]
ANALYSIS["8. Offline analysis<br/>FFT, EVM, BER, SNR, spurs and repeatability checks"]
DECISION["9. Engineering decision<br/>accept, retune, redesign or repeat the experiment"]
MODEL --> FIXED --> FPGA --> RF --> CHANNEL --> RX --> IQ --> ANALYSIS --> DECISION
DECISION -. algorithm redesign .-> MODEL
DECISION -. numeric scaling fix .-> FIXED
DECISION -. RF gain retuning .-> RF
Engineering interpretation¶
| Stage | Key risk | What you verify |
|---|---|---|
| Model | wrong assumptions | spectrum, waveform |
| Fixed-point | quantization | SNR degradation |
| FPGA | architecture | real-time capability |
| RF | analog effects | distortions, gain |
| Receiver | measurement errors | independent observation |
| Analysis | wrong metrics | false conclusions |
FPGA signal path¶
flowchart TB
IN["1. Input sample stream<br/>test vector, DMA stream or internally generated waveform"]
DDS["2. DDS / NCO<br/>phase accumulator, LUT/CORDIC and frequency word"]
MIX["3. Digital mixer<br/>complex multiplication and frequency translation"]
FIR["4. FIR filter<br/>pulse shaping, low-pass filtering or image rejection"]
RATE["5. Rate adaptation<br/>interpolation / decimation for the RF frontend rate"]
AXI["6. AXI-Stream output<br/>valid/ready timing, framing and backpressure"]
OUT["7. AD9363 interface<br/>samples delivered to the RF transmit path"]
IN --> DDS --> MIX --> FIR --> RATE --> AXI --> OUT
SDR TX/RX chain¶
flowchart TB
SRC["1. Source and framing<br/>tone, packet, payload or waveform definition"]
MOD["2. Modulation and shaping<br/>BPSK/QPSK/QAM/FSK plus pulse-shaping filters"]
TXRF["3. TX path<br/>DUC, DAC, mixer, filters and transmit gain"]
CH["4. Channel<br/>coax, attenuator, antenna path, noise and offsets"]
RXRF["5. RX path<br/>LNA, mixer, ADC, DDC and AGC"]
SYNC["6. Synchronization and demodulation<br/>CFO, timing, frame sync, matched filter and bits"]
VALID["7. Validation and replay<br/>IQ taps, FFT, EVM, BER, reports and notebooks"]
SRC --> MOD --> TXRF --> CH --> RXRF --> SYNC --> VALID
VALID -. model tuning .-> MOD
VALID -. hardware tuning .-> RXRF
Measurement loop¶
flowchart LR
TX["Zynq TX<br/>configured waveform"]
AIR["RF path<br/>safe level"]
RTL["RTL-SDR<br/>external RX"]
HDSDR["HDSDR<br/>observe"]
FILE["IQ file<br/>record"]
MATLAB["MATLAB / Python<br/>analyze"]
TX --> AIR --> RTL --> HDSDR --> FILE --> MATLAB
MATLAB -. feedback .-> TX
Key takeaway¶
Model → Hardware → Measurement → Decision
If any stage is skipped, the engineering result is unreliable.