updated documentation (PS)

This commit is contained in:
canisio
2026-06-11 13:00:23 -03:00
parent 2d668be90f
commit c0b4435cd0

View File

@@ -8,13 +8,22 @@
The PS subsystem is responsible for: The PS subsystem is responsible for:
- System initialization * System initialization
- Configuring PL subsystems * Configuring PL subsystems
- Triggering captures * Triggering captures
- Receiving data via DMA * Receiving data via DMA
- Preparing data for processing and visualization * Preparing data for processing and visualization
The current implementation acts as a **placeholder for post-processing**, focusing on reliable data acquisition and host interaction. The subsystem now includes an initial **FrFT-based processing chain** implemented in Simulink and targeted to the RFSoC Processing System (PS).
Current work focuses on:
* Algorithm validation
* Code generation
* Hardware integration
* Performance characterization
while maintaining reliable data acquisition and host interaction.
--- ---
@@ -22,31 +31,33 @@ The current implementation acts as a **placeholder for post-processing**, focusi
### Control & Initialization ### Control & Initialization
- Configure PL parameters: * Configure PL parameters:
- Tx waveform configuration
- Capture parameters (nFrames, etc.) * Tx waveform configuration
- Initialize DMA and memory buffers * Capture parameters (nFrames, etc.)
- Manage system startup * Initialize DMA and memory buffers
* Manage system startup
--- ---
### Trigger & Capture ### Trigger & Capture
- Generates capture trigger (software-controlled) * Generates capture trigger (software-controlled)
- Controls DPW acquisition timing * Controls DPW acquisition timing
- Each trigger initiates one DPW capture * Each trigger initiates one DPW capture
--- ---
### DMA Handling ### DMA Handling
- AXI4-Stream → DMA (S2MM) * AXI4-Stream → DMA (S2MM)
- Receives **128-bit stream** (4 samples per clock) * Receives **128-bit stream** (4 samples per clock)
- Stores data in PS DDR memory * Stores data in PS DDR memory
Configuration: Configuration:
- Frame size: 512 samples
- nFrames: configurable (validated up to 1024) * Frame size: 512 samples
* nFrames: configurable (validated up to 1024)
--- ---
@@ -54,9 +65,9 @@ Configuration:
### Raw DMA Data ### Raw DMA Data
- Packed complex samples * Packed complex samples
- 16-bit real + 16-bit imag per sample * 16-bit real + 16-bit imag per sample
- 4 samples per 128-bit word * 4 samples per 128-bit word
--- ---
@@ -64,19 +75,135 @@ Configuration:
Data is unpacked and reshaped into: Data is unpacked and reshaped into:
``` ```text
[FrameSize x nFrames x nTriggers] [FrameSize x nFrames x nTriggers]
``` ```
or, for processing purposes,
```text
[FrameSize x nFrames]
```
representing a single DPW.
--- ---
## Processing Pipeline (Current) ## Processing Pipeline (Current)
```text
DMA DMA
→ Unpack samples (I/Q separation)
→ Convert to complex representation Unpack samples (I/Q separation)
→ Reshape into 3D structure
→ Visualization / basic analysis Convert to complex representation
Reshape into DPW matrix
Processing Path Selection
Path A:
Polyphase Filter Bank (PFB)
Power Spectrum
Path B:
FFT
Power Spectrum
Path C:
FrFT
Mean Power Spectrum
Visualization / Analysis
```
---
## FrFT Processing Status
A first FrFT processing implementation has been integrated into the PS subsystem.
### Processing Flow
```text
DPW [512 x nFrames]
Halfband Interpolation (2x)
FrFT Coefficient Generation
DPW-Aware FrFT Processing
Mean Power Spectrum
```
### Software Structure
```text
codegen_fracFdpw/
├── fracF_init.m
├── fracF_dpw.m
├── TBc_fracFdpw.m
└── TBm_fracFdpw.slx
```
### Validation Completed
* DPW-aware FrFT implementation created
* Verified against original `fracF_cg`
* Bit-identical equivalence achieved
* MATLAB testbench (TBc) created
* Simulink model testbench (TBm) created
* TBc ↔ TBm comparison automated
* Bit-identical TBc ↔ TBm validation achieved
* Standalone subsystem code generation validated
* RFSoC PS integration completed
### Current Status
The implementation is functionally correct and integrated into the RFSoC processing chain.
Current work is focused on:
* Performance characterization
* FrFT parameter optimization
* Realistic pulse processing scenarios
### Open Technical Questions
The matched-order formulation used in the SPL simulations assumed:
```text
Observation Window = Pulse Duration
```
The receiver currently operates under a different condition:
```text
Observation Window < Pulse Duration
```
where only a portion of the pulse is processed by the FrFT.
Additional investigation is required to determine:
* Optimal FrFT order for partial-pulse observations
* Practical DPW sizes
* Trade-off between concentration and processing load
* Deviation from idealized SPL simulation conditions
### Current Limitations
* Coefficients are regenerated every execution
* No coefficient caching implemented
* No NEON-specific optimization
* Generated FFT kernels are used
* Performance scales strongly with DPW size
--- ---
@@ -84,30 +211,43 @@ DMA
Uses counter-based validation: Uses counter-based validation:
- Real part → sample counter * Real part → sample counter
- Imag part → frame index * Imag part → frame index
Enables verification of: Enables verification of:
- Data continuity * Data continuity
- Frame alignment * Frame alignment
- Correct ordering from DMA * Correct ordering from DMA
--- ---
## Execution Model ## Execution Model
- Triggered (event-based) * Triggered (event-based)
- Burst capture (DPW) * Burst capture (DPW)
- Not continuous real-time streaming * Not continuous real-time streaming
--- ---
## Performance Notes ## Performance Notes
- Designed for correctness and validation (not optimized) Current implementation prioritizes correctness and validation over optimization.
- Bottleneck: unpacking + data movement
- Full-rate continuous processing not supported Observations from RFSoC integration:
* FrFT processing successfully executes on the RFSoC PS
* nFrames = 64 executes responsively
* nFrames = 1024 remains computationally expensive
* Processing load scales approximately linearly with DPW size
* Code generation and subsystem integration have been validated
Current optimization candidates:
* Coefficient caching when FrFT order remains unchanged
* NEON vectorization
* Alternative FFT implementations
* DPW size optimization
--- ---
@@ -115,26 +255,40 @@ Enables verification of:
The PS currently serves as: The PS currently serves as:
- Control interface * Control interface
- Data acquisition manager * Data acquisition manager
- Pre-processing stage * Signal processing platform
* Algorithm development and validation environment
Future implementations will replace the current processing with advanced algorithms (e.g., FrFT). Current processing capabilities include:
* PFB-based spectral analysis
* FFT-based spectral analysis
* FrFT-based spectral analysis
--- ---
## Future Work ## Future Work
- FrFT-based processing ### FrFT
- Timestamp integration
- UDP streaming * Matched-order optimization for realistic pulse captures
- Optimization (NEON / vectorization) * Performance profiling on RFSoC PS
- Metadata extraction (move complexity to PL) * Coefficient caching
* NEON optimization
* Detection processing after FrFT concentration
### System
* Timestamp integration
* UDP streaming
* Metadata extraction
* Migration of computationally intensive functions to PL where appropriate
--- ---
## 🔗 Related Components ## 🔗 Related Components
- [🏠 Project Home](../README.md) * [🏠 Project Home](../README.md)
- [PL Tx Subsystem](pl_tx_subsystem.md) * [PL Tx Subsystem](pl_tx_subsystem.md)
- [PL Rx Subsystem](pl_rx_subsystem.md) * [PL Rx Subsystem](pl_rx_subsystem.md)