In this series:
- The Record and Playback Module: Part 2 – Implementation and Record Mode
- The Record and Playback Module: Part 3 – Playback mode
Part 1: Use Cases and Development Flow
The ADP software suite provides tools that accelerate the design, prototyping, and implementation of the user’s processing algorithms. The Record and Playback FPGA core and host library are part of the suite and available for Nutaq’s Perseus FMC carrier board. They enable the user to record data to memory and to playback data from memory. This lets the user use real test vectors when testing and qualifying processing algorithms, from initial simulation to final implementation within the FPGA logic.
This blog post describes typical use cases of the Record and Playback module and explains its importance within the development workflow.
A typical use of the Record and Playback module is to simply record the data coming from an FMC daughter card to memory and to retrieve it on the host PC. The recording can be made on multiple channels at the same time (e.g. from multiple ADCs on the FMC).
Recording a real-world waveform enables the user to:
- Test and qualify the processing algorithm against a real test vector in simulation. For example, the user records data from a real-world source and uses the recorded data file in a Simulink/System Generator simulation of the algorithm.
- Qualify the FMC front-end. Recording a known sequence of data allows the user to verify the FMC reception performance.
- Trigger the recording from an external event (e.g. a PPS pulse from a GPS).
Processed waveform recording
When the simulation portion of the design process is completed, the user implements some or all of the algorithm within the FPGA logic.
When the algorithm is implemented within the FPGA logic, the Record and Playback module lets the host PC record and retrieve the processed data. The user can then verify the algorithm’s validity and performance using the PC tools at his or her disposal (e.g. MATLAB).
The implemented algorithm, using the module’s triggering system, will be able to trigger a recording when an event is detected within the processed data. This lets the user choose which data to record.
Another use of the Record and Playback module is to simply play back data from memory to the FMC card DAC. The host PC is able to write data to memory, allowing the user to send real-world test vectors directly to the FMC card’s DAC and front-end output. The data sequence can be played back one-time or continuously and can be sent to multiple channels at once (e.g. in the case of multiple DACs on the FMC).
Playing back a real-world waveform enables the user to:
- Qualify the FMC front-end. Playing back a known sequence of data lets the user verify FMC transmission performance.
- Test and qualify the transmission-processing algorithm in simulation. For example, the user simulates the algorithm within Simulink/System Generator and generates a processed data sequence as the simulation’s output. He or she can then load the data to memory and play it back on the FMC DAC.
- Test and qualify another piece of equipment, such as the FMC ADC or reception path, by generating the test vectors locally.
- Test and qualify the reception-processing algorithm (implemented in FPGA logic) by generating the test vectors locally. The following diagram illustrates the data flow in this case:
The data can be looped back internally within the FPGA for initial tests or looped back externally through the FMC interface to test real-world implications on the algorithm.
- Trigger the playback from an external event (e.g. a PPS pulse from a GPS).
Waveform playback processing
A configuration similar to the reception path is used when the user implements the algorithm within the FPGA logic:
The Record and Playback module lets the user play back a known sequence through the algorithm and verify its performance with external equipment or the reception path of the system.
The Record and Playback module is available to all Perseus users. Part 2 of the blog post will detail the implementation of the module as well as how to integrate it within a system.