diff --git a/docs/pl_rx_subsystem.md b/docs/pl_rx_subsystem.md index 7f222a9..66d09bc 100644 --- a/docs/pl_rx_subsystem.md +++ b/docs/pl_rx_subsystem.md @@ -1,35 +1,82 @@ # ๐Ÿ“ก PL Rx Subsystem (Channelizer) +[๐Ÿ  Project Home](../README.md) + +--- + ## Overview -Implements PFB channelizer and FFT processing. +The Rx subsystem implements a **polyphase filter bank (PFB) channelizer** followed by FFT processing. + +It converts wideband ADC input into frequency-domain channels. --- ## Architecture -ADC โ†’ PFB โ†’ FFT โ†’ Capture โ†’ FIFO โ†’ AXI โ†’ DMA +ADC + โ†“ +PFB Channelizer (Decimation + Filtering) + โ†“ +FFT (512 bins) + โ†“ +FFT Capture + โ†“ +FIFO Serializer (4 โ†’ 1) + โ†“ +AXI4-Stream + โ†“ +DMA --- -## Processing +## Processing Chain -- 4096 MSPS input -- Decimation 8 -- FFT 512 bins +### ADC Input +- Sampling rate: 4096 MSPS + +### PFB Channelizer +- Decimation: 8 +- Effective bandwidth: 512 MHz + +### FFT +- Size: 512 +- Produces frequency bins + +### FFT Capture +- Controls frame boundaries + +### FIFO Serializer +- Converts parallel streams into single stream --- -## Output +## AXI4-Stream Output -- AXI4-Stream -- uint64 format -- TLAST per frame +- Data type: uint64 +- Packed real/imag +- TLAST = frame boundary + +--- + +## Data Format + +- Frame size: 512 samples +- Complex values packed into uint64 + +--- + +## Key Characteristics + +- Fully streaming pipeline +- High throughput +- Deterministic latency +- DMA-ready output --- ## ๐Ÿ”— Related Components -- [Project Overview (README)](../README.md) +- [๐Ÿ  Project Home](../README.md) - [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 index df0a56d..83a6787 100644 --- a/docs/pl_tx_subsystem.md +++ b/docs/pl_tx_subsystem.md @@ -1,50 +1,108 @@ # ๐Ÿ“ก PL Tx Subsystem (Pulse Generator) +[๐Ÿ  Project Home](../README.md) + +--- + ## Overview -The Tx subsystem implements a pulse-based LFM chirp generator using a DDS/NCO architecture. +The Tx subsystem implements a **pulse-based Linear Frequency Modulated (LFM) chirp generator** using a DDS/NCO architecture in the FPGA (PL). + +The generator produces **complex baseband output**: + +x[n] = exp(jยทฯ†[n]) + +and operates deterministically in the PL after a trigger from the PS. --- ## Architecture -TxPulseStart โ†’ pulse_gen_ctrl โ†’ tx_active โ†’ NCO โ†’ Output +TxPulseStart (PS) + โ†“ +pulse_gen_ctrl (FSM) + โ†“ + tx_active + โ†“ +Phase Increment Counter + โ†“ + NCO (DDS) + โ†“ + Complex Output (I/Q) --- -## Chirp Generation +## Chirp Generation Principle + +The chirp is generated using a second-order phase accumulator: ฮ”ฯ†[n] = ฮ”ฯ†[nโˆ’1] + step ฯ†[n] = ฯ†[nโˆ’1] + ฮ”ฯ†[n] +This results in a linear frequency sweep. + --- -## Parameterization +## Parameterization (PS โ†’ PL) -- Fc (center frequency) -- B (bandwidth) +Inputs: + +- Center frequency: Fc +- Bandwidth: B +- Pulse width: N (samples) + +Derived internally: -Derived: f_start = Fc โˆ’ B/2 step = B / (N โˆ’ 1) +These values are converted to DDS phase increments before being written to PL registers. + --- -## Pulse Timing +## Pulse Timing (FSM) + +States: + +- IDLE: waits for trigger and latches parameters +- ACTIVE: generates pulses +- DONE: waits for trigger reset + +--- + +## Timing Behavior + +Within each PRI: |<------ PRI ------>| |<-- pulse -->| idle | +- tx_active = 1 โ†’ chirp output +- tx_active = 0 โ†’ output zero + +Chirp is reset at each pulse start. + --- -## Trigger +## Burst Trigger (PS Interaction) -Controlled via TxPulseStart (from PS subsystem) +- Controlled via TxPulseStart (memory-mapped register) +- Rising edge triggers burst +- PL runs autonomously afterward + +--- + +## Key Characteristics + +- Deterministic timing (128 MHz) +- Efficient DDS (adder-based) +- Complex output (I/Q) +- Supports burst-mode radar operation --- ## ๐Ÿ”— Related Components -- [Project Overview (README)](../README.md) -- [PS Subsystem](ps_subsystem.md) +- [๐Ÿ  Project Home](../README.md) - [PL Rx Subsystem](pl_rx_subsystem.md) +- [PS Subsystem](ps_subsystem.md) diff --git a/docs/ps_subsystem.md b/docs/ps_subsystem.md index efb52ec..df0aa50 100644 --- a/docs/ps_subsystem.md +++ b/docs/ps_subsystem.md @@ -1,33 +1,85 @@ -# ๐Ÿง  PS Subsystem +# ๐Ÿง  PS Subsystem (Control + Processing) + +[๐Ÿ  Project Home](../README.md) + +--- ## Overview -Handles control and processing. +The PS subsystem is responsible for: + +- Configuring PL subsystems +- Receiving data via DMA +- Performing frame-based processing --- -## Control +## Responsibilities -- Writes parameters -- Triggers Tx (TxPulseStart) +### Control + +- Writes parameters to PL registers: + - Tx generator configuration +- Generates TxPulseStart trigger --- -## Processing +### DMA Handling -DMA โ†’ unpack โ†’ complex โ†’ RMS/peak +- AXI4-Stream โ†’ DMA (S2MM) +- Data stored in PS DDR + +Configuration: +- Frame size: 512 +- Buffers: 16 --- -## Execution +### Processing Pipeline -- Event-driven -- Frame drops possible +DMA โ†’ uint64[512] +โ†’ unpack real/imag +โ†’ convert to complex +โ†’ RMS + peak detection + +--- + +## Execution Model + +- Event-driven (DMA trigger) +- No buffering queue +- Frames may be dropped + +--- + +## Performance Notes + +- Bottleneck: unpacking + conversion +- Cannot sustain full-rate input + +--- + +## Interaction with PL + +### Tx Control +- Low-rate trigger (~Hz) +- Starts burst generation + +### Rx Data +- Continuous high-rate stream + +--- + +## Future Work + +- Replace processing with FrFT +- NEON optimization +- Throughput improvements --- ## ๐Ÿ”— Related Components -- [Project Overview (README)](../README.md) +- [๐Ÿ  Project Home](../README.md) - [PL Tx Subsystem](pl_tx_subsystem.md) - [PL Rx Subsystem](pl_rx_subsystem.md)