From ea0ecefae1186de2325aea68ec763d53e899dfc6 Mon Sep 17 00:00:00 2001 From: canisio Date: Thu, 2 Apr 2026 17:29:24 -0300 Subject: [PATCH] Added documentation and updated README --- README.md | 86 ++++++++----------- docs/pl_rx_subsystem.md | 34 ++++++++ docs/pl_tx_subsystem.md | 49 +++++++++++ docs/ps_subsystem.md | 32 +++++++ .../rW25SbP5jRWeIzL7_iMpZrrygYkd.xml | 2 + .../rW25SbP5jRWeIzL7_iMpZrrygYkp.xml | 2 + .../8i67CMLFhpgTFLAi_RBlc2P1lI0d.xml | 2 + .../8i67CMLFhpgTFLAi_RBlc2P1lI0p.xml | 2 + .../XVu9f1ZjVk2AJ99l5f9CAU_dcMEd.xml | 2 + .../XVu9f1ZjVk2AJ99l5f9CAU_dcMEp.xml | 2 + .../mT-GHnZui1JHuHyjd1ddvO5o-Tsd.xml | 2 + .../mT-GHnZui1JHuHyjd1ddvO5o-Tsp.xml | 2 + .../uS1pkYbM9dJDnKGtwfzZHrJKyTYd.xml | 2 + .../uS1pkYbM9dJDnKGtwfzZHrJKyTYp.xml | 2 + 14 files changed, 169 insertions(+), 52 deletions(-) create mode 100644 docs/pl_rx_subsystem.md create mode 100644 docs/pl_tx_subsystem.md create mode 100644 docs/ps_subsystem.md create mode 100644 resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/rW25SbP5jRWeIzL7_iMpZrrygYkd.xml create mode 100644 resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/rW25SbP5jRWeIzL7_iMpZrrygYkp.xml create mode 100644 resources/project/rW25SbP5jRWeIzL7_iMpZrrygYk/8i67CMLFhpgTFLAi_RBlc2P1lI0d.xml create mode 100644 resources/project/rW25SbP5jRWeIzL7_iMpZrrygYk/8i67CMLFhpgTFLAi_RBlc2P1lI0p.xml create mode 100644 resources/project/rW25SbP5jRWeIzL7_iMpZrrygYk/XVu9f1ZjVk2AJ99l5f9CAU_dcMEd.xml create mode 100644 resources/project/rW25SbP5jRWeIzL7_iMpZrrygYk/XVu9f1ZjVk2AJ99l5f9CAU_dcMEp.xml create mode 100644 resources/project/rW25SbP5jRWeIzL7_iMpZrrygYk/mT-GHnZui1JHuHyjd1ddvO5o-Tsd.xml create mode 100644 resources/project/rW25SbP5jRWeIzL7_iMpZrrygYk/mT-GHnZui1JHuHyjd1ddvO5o-Tsp.xml create mode 100644 resources/project/rW25SbP5jRWeIzL7_iMpZrrygYk/uS1pkYbM9dJDnKGtwfzZHrJKyTYd.xml create mode 100644 resources/project/rW25SbP5jRWeIzL7_iMpZrrygYk/uS1pkYbM9dJDnKGtwfzZHrJKyTYp.xml diff --git a/README.md b/README.md index 674d5a3..f76822c 100644 --- a/README.md +++ b/README.md @@ -4,81 +4,63 @@ This project is based on the RFSoC SoC Blockset reference design, adapted as a prototype for a Radar Electronic Support Measures (R-ESM) receiver. -### Current Status +The system implements a high-throughput signal chain in the FPGA (PL) and performs frame-based processing in the processor (PS). -- Tx subsystem: simple tone generator (to be replaced by LFM pulse generator) +--- + +## Current Status + +- Tx subsystem: LFM pulse generator (DDS-based, complex output) - Rx subsystem: fully functional channelizer pipeline (PFB-based) -- PL → PS interface: AXI4-Stream + DMA working +- PL → PS interface: AXI4-Stream + DMA operational - PS processing: frame-based algorithm (RMS + peak detection) --- ## System Architecture -ADC → Channelizer (PFB, 512 bins) -→ FFT_Capture (frame control) -→ FIFO Serializer (4 FIFOs → 1 stream) -→ AXI4-Stream (uint64) -→ DMA (S2MM) -→ PS Memory -→ Processor Algorithm (frame-based) +ADC → Channelizer (PFB, 512 bins) +→ FFT_Capture (frame control) +→ FIFO Serializer (4 FIFOs → 1 stream) +→ AXI4-Stream (uint64) +→ DMA (S2MM) +→ PS Memory +→ Processor Algorithm --- ## Key Parameters -- ADC Sampling Rate: 4096 MSPS -- Decimation: 8 -- Effective BW: 512 MHz -- Channels (FFT size): 512 -- Samples per clock: 4 -- FPGA clock: 128 MHz -- Frame size (PS): 512 samples +- ADC Sampling Rate: 4096 MSPS +- Decimation: 8 +- Effective BW: 512 MHz +- Channels (FFT size): 512 +- Samples per clock: 4 +- FPGA clock: 128 MHz +- Frame size (PS): 512 samples --- -## DMA (PL → PS) +## 📚 Documentation -- Data type: uint64 -- Frame size: 512 -- Buffers: 16 -- Memory: PS DDR +### FPGA (PL) -Each TLAST corresponds to one DMA frame. +- [Tx Subsystem (Pulse Generator)](docs/pl_tx_subsystem.md) +- [Rx Subsystem (Channelizer)](docs/pl_rx_subsystem.md) + +### Processor (PS) + +- [PS Subsystem](docs/ps_subsystem.md) --- -## Processor (PS) +## System Flow -- Event-driven execution (triggered by DMA) -- No task queueing -- Frames may be dropped if processing is slower than input rate +Tx → Rx → PS ---- - -## Data Path in PS - -- Stream Read → uint64[512] -- Bit extraction → real/imag -- Conversion → complex vector -- Processing → RMS + peak detection - ---- - -## Performance Notes - -- Bottleneck: unpacking + type conversion -- PS cannot keep up with full-rate stream -- Frames are skipped under load - ---- - -## FrFT Integration Plan - -- Replace Processor Algorithm with FrFT -- Keep all other components unchanged -- Input: complex single [512x1] -- Accept dropped frames initially +- Tx generates waveform +- Rx captures and channelizes +- PS processes frames --- diff --git a/docs/pl_rx_subsystem.md b/docs/pl_rx_subsystem.md new file mode 100644 index 0000000..2ab9ad9 --- /dev/null +++ b/docs/pl_rx_subsystem.md @@ -0,0 +1,34 @@ +# 📡 PL Rx Subsystem (Channelizer) + +## Overview + +Implements PFB channelizer and FFT processing. + +--- + +## Architecture + +ADC → PFB → FFT → Capture → FIFO → AXI → DMA + +--- + +## Processing + +- 4096 MSPS input +- Decimation 8 +- FFT 512 bins + +--- + +## Output + +- AXI4-Stream +- uint64 format +- TLAST per frame + +--- + +## 🔗 Related Components + +- [PL Tx Subsystem](pl_tx_subsystem.md) +- [PS Subsystem](ps_subsystem.md) diff --git a/docs/pl_tx_subsystem.md b/docs/pl_tx_subsystem.md new file mode 100644 index 0000000..c48712e --- /dev/null +++ b/docs/pl_tx_subsystem.md @@ -0,0 +1,49 @@ +# 📡 PL Tx Subsystem (Pulse Generator) + +## Overview + +The Tx subsystem implements a pulse-based LFM chirp generator using a DDS/NCO architecture. + +--- + +## Architecture + +TxPulseStart → pulse_gen_ctrl → tx_active → NCO → Output + +--- + +## Chirp Generation + +Δφ[n] = Δφ[n−1] + step +φ[n] = φ[n−1] + Δφ[n] + +--- + +## Parameterization + +- Fc (center frequency) +- B (bandwidth) + +Derived: +f_start = Fc − B/2 +step = B / (N − 1) + +--- + +## Pulse Timing + +|<------ PRI ------>| +|<-- pulse -->| idle | + +--- + +## Trigger + +Controlled via TxPulseStart (from PS subsystem) + +--- + +## 🔗 Related Components + +- [PS Subsystem](ps_subsystem.md) +- [PL Rx Subsystem](pl_rx_subsystem.md) diff --git a/docs/ps_subsystem.md b/docs/ps_subsystem.md new file mode 100644 index 0000000..e56b583 --- /dev/null +++ b/docs/ps_subsystem.md @@ -0,0 +1,32 @@ +# 🧠 PS Subsystem + +## Overview + +Handles control and processing. + +--- + +## Control + +- Writes parameters +- Triggers Tx (TxPulseStart) + +--- + +## Processing + +DMA → unpack → complex → RMS/peak + +--- + +## Execution + +- Event-driven +- Frame drops possible + +--- + +## 🔗 Related Components + +- [PL Tx Subsystem](pl_tx_subsystem.md) +- [PL Rx Subsystem](pl_rx_subsystem.md) diff --git a/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/rW25SbP5jRWeIzL7_iMpZrrygYkd.xml b/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/rW25SbP5jRWeIzL7_iMpZrrygYkd.xml new file mode 100644 index 0000000..4356a6a --- /dev/null +++ b/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/rW25SbP5jRWeIzL7_iMpZrrygYkd.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/rW25SbP5jRWeIzL7_iMpZrrygYkp.xml b/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/rW25SbP5jRWeIzL7_iMpZrrygYkp.xml new file mode 100644 index 0000000..9947c60 --- /dev/null +++ b/resources/project/qaw0eS1zuuY1ar9TdPn1GMfrjbQ/rW25SbP5jRWeIzL7_iMpZrrygYkp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/rW25SbP5jRWeIzL7_iMpZrrygYk/8i67CMLFhpgTFLAi_RBlc2P1lI0d.xml b/resources/project/rW25SbP5jRWeIzL7_iMpZrrygYk/8i67CMLFhpgTFLAi_RBlc2P1lI0d.xml new file mode 100644 index 0000000..4356a6a --- /dev/null +++ b/resources/project/rW25SbP5jRWeIzL7_iMpZrrygYk/8i67CMLFhpgTFLAi_RBlc2P1lI0d.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/rW25SbP5jRWeIzL7_iMpZrrygYk/8i67CMLFhpgTFLAi_RBlc2P1lI0p.xml b/resources/project/rW25SbP5jRWeIzL7_iMpZrrygYk/8i67CMLFhpgTFLAi_RBlc2P1lI0p.xml new file mode 100644 index 0000000..45c1012 --- /dev/null +++ b/resources/project/rW25SbP5jRWeIzL7_iMpZrrygYk/8i67CMLFhpgTFLAi_RBlc2P1lI0p.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/rW25SbP5jRWeIzL7_iMpZrrygYk/XVu9f1ZjVk2AJ99l5f9CAU_dcMEd.xml b/resources/project/rW25SbP5jRWeIzL7_iMpZrrygYk/XVu9f1ZjVk2AJ99l5f9CAU_dcMEd.xml new file mode 100644 index 0000000..4356a6a --- /dev/null +++ b/resources/project/rW25SbP5jRWeIzL7_iMpZrrygYk/XVu9f1ZjVk2AJ99l5f9CAU_dcMEd.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/rW25SbP5jRWeIzL7_iMpZrrygYk/XVu9f1ZjVk2AJ99l5f9CAU_dcMEp.xml b/resources/project/rW25SbP5jRWeIzL7_iMpZrrygYk/XVu9f1ZjVk2AJ99l5f9CAU_dcMEp.xml new file mode 100644 index 0000000..810e052 --- /dev/null +++ b/resources/project/rW25SbP5jRWeIzL7_iMpZrrygYk/XVu9f1ZjVk2AJ99l5f9CAU_dcMEp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/rW25SbP5jRWeIzL7_iMpZrrygYk/mT-GHnZui1JHuHyjd1ddvO5o-Tsd.xml b/resources/project/rW25SbP5jRWeIzL7_iMpZrrygYk/mT-GHnZui1JHuHyjd1ddvO5o-Tsd.xml new file mode 100644 index 0000000..4356a6a --- /dev/null +++ b/resources/project/rW25SbP5jRWeIzL7_iMpZrrygYk/mT-GHnZui1JHuHyjd1ddvO5o-Tsd.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/rW25SbP5jRWeIzL7_iMpZrrygYk/mT-GHnZui1JHuHyjd1ddvO5o-Tsp.xml b/resources/project/rW25SbP5jRWeIzL7_iMpZrrygYk/mT-GHnZui1JHuHyjd1ddvO5o-Tsp.xml new file mode 100644 index 0000000..01cb34e --- /dev/null +++ b/resources/project/rW25SbP5jRWeIzL7_iMpZrrygYk/mT-GHnZui1JHuHyjd1ddvO5o-Tsp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/rW25SbP5jRWeIzL7_iMpZrrygYk/uS1pkYbM9dJDnKGtwfzZHrJKyTYd.xml b/resources/project/rW25SbP5jRWeIzL7_iMpZrrygYk/uS1pkYbM9dJDnKGtwfzZHrJKyTYd.xml new file mode 100644 index 0000000..4356a6a --- /dev/null +++ b/resources/project/rW25SbP5jRWeIzL7_iMpZrrygYk/uS1pkYbM9dJDnKGtwfzZHrJKyTYd.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/rW25SbP5jRWeIzL7_iMpZrrygYk/uS1pkYbM9dJDnKGtwfzZHrJKyTYp.xml b/resources/project/rW25SbP5jRWeIzL7_iMpZrrygYk/uS1pkYbM9dJDnKGtwfzZHrJKyTYp.xml new file mode 100644 index 0000000..ab1d05c --- /dev/null +++ b/resources/project/rW25SbP5jRWeIzL7_iMpZrrygYk/uS1pkYbM9dJDnKGtwfzZHrJKyTYp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file