141 lines
2.4 KiB
Markdown
141 lines
2.4 KiB
Markdown
# 🧠 PS Subsystem (Control + Capture + Processing)
|
|
|
|
[🏠 Project Home](../README.md)
|
|
|
|
---
|
|
|
|
## Overview
|
|
|
|
The PS subsystem is responsible for:
|
|
|
|
- System initialization
|
|
- Configuring PL subsystems
|
|
- Triggering captures
|
|
- Receiving data via DMA
|
|
- Preparing data for processing and visualization
|
|
|
|
The current implementation acts as a **placeholder for post-processing**, focusing on reliable data acquisition and host interaction.
|
|
|
|
---
|
|
|
|
## Responsibilities
|
|
|
|
### Control & Initialization
|
|
|
|
- Configure PL parameters:
|
|
- Tx waveform configuration
|
|
- Capture parameters (nFrames, etc.)
|
|
- Initialize DMA and memory buffers
|
|
- Manage system startup
|
|
|
|
---
|
|
|
|
### Trigger & Capture
|
|
|
|
- Generates capture trigger (software-controlled)
|
|
- Controls DPW acquisition timing
|
|
- Each trigger initiates one DPW capture
|
|
|
|
---
|
|
|
|
### DMA Handling
|
|
|
|
- AXI4-Stream → DMA (S2MM)
|
|
- Receives **128-bit stream** (4 samples per clock)
|
|
- Stores data in PS DDR memory
|
|
|
|
Configuration:
|
|
- Frame size: 512 samples
|
|
- nFrames: configurable (validated up to 1024)
|
|
|
|
---
|
|
|
|
## Data Format
|
|
|
|
### Raw DMA Data
|
|
|
|
- Packed complex samples
|
|
- 16-bit real + 16-bit imag per sample
|
|
- 4 samples per 128-bit word
|
|
|
|
---
|
|
|
|
### Processing Representation
|
|
|
|
Data is unpacked and reshaped into:
|
|
|
|
```
|
|
[FrameSize x nFrames x nTriggers]
|
|
```
|
|
|
|
---
|
|
|
|
## Processing Pipeline (Current)
|
|
|
|
DMA
|
|
→ Unpack samples (I/Q separation)
|
|
→ Convert to complex representation
|
|
→ Reshape into 3D structure
|
|
→ Visualization / basic analysis
|
|
|
|
---
|
|
|
|
## Validation Support
|
|
|
|
Uses counter-based validation:
|
|
|
|
- Real part → sample counter
|
|
- Imag part → frame index
|
|
|
|
Enables verification of:
|
|
|
|
- Data continuity
|
|
- Frame alignment
|
|
- Correct ordering from DMA
|
|
|
|
---
|
|
|
|
## Execution Model
|
|
|
|
- Triggered (event-based)
|
|
- Burst capture (DPW)
|
|
- Not continuous real-time streaming
|
|
|
|
---
|
|
|
|
## Performance Notes
|
|
|
|
- Designed for correctness and validation (not optimized)
|
|
- Bottleneck: unpacking + data movement
|
|
- Full-rate continuous processing not supported
|
|
|
|
---
|
|
|
|
## Role in System
|
|
|
|
The PS currently serves as:
|
|
|
|
- Control interface
|
|
- Data acquisition manager
|
|
- Pre-processing stage
|
|
|
|
Future implementations will replace the current processing with advanced algorithms (e.g., FrFT).
|
|
|
|
---
|
|
|
|
## Future Work
|
|
|
|
- FrFT-based processing
|
|
- Timestamp integration
|
|
- UDP streaming
|
|
- Optimization (NEON / vectorization)
|
|
- Metadata extraction (move complexity to PL)
|
|
|
|
---
|
|
|
|
## 🔗 Related Components
|
|
|
|
- [🏠 Project Home](../README.md)
|
|
- [PL Tx Subsystem](pl_tx_subsystem.md)
|
|
- [PL Rx Subsystem](pl_rx_subsystem.md)
|