IO132 - DMA Loopback
This example demonstrates how the first two inputs and outputs present on the IO132 I/O module communicate using DMA (Direct Memory Access), as well as how the first and the fifth DIO pins communicate. The model is triggered by the IO132's DMA interrupt.
The IO132 is a fast, simultaneous-sampling, 16-bit analog input and output module, complete with dedicated Simulink® driver blocks.
Setup
Prerequisites
You will require the following to run this example:
- Speedgoat real-time target machine with one IO132 I/O module installed
- Connector cable from the I/O module to the terminal board
- 68-pin terminal board with jumper wires
Test Setup
On the terminal board of the analog I/O module, connect the positive (+) pins of Analog Inputs 1 and 2 to the pins of Analog Outputs 1 and 2, and connect the negative (-) pins of Analog Inputs 1 and 2 to GND.
Initialize and Open the Simulink model
modelName = 'sgMdl_IO132_DMALoopback';
Model Description
Build, Download, and Run the Example
To run the example, either run the following code section or click the Run on Target button in the REAL-TIME tab in the Simulink model.
% Build the Simulink model
slbuild(modelName); % this will create the real-time application file (.mldatx)
% Create and connect to the Speedgoat real-time target machine
% Download and install the real-time application on the target machine
% Connect the Simulink model with external mode to the real-time application on the target machine
set_param(modelName,'SimulationMode', 'external') % put model into External Mode
set_param(modelName,'SimulationCommand','connect') % connect with External Mode
set_param(modelName,'SimulationCommand','Start') % connect with External Mode
% Start the real-time application
% Wait a few seconds and then stop the real-time application on the target machine
Check the Results
By clicking on the scope after the model has terminated, you should be able to see the input signals of both channels.
If you zoom in horizontally, you can see the increased sample rate thanks to the active DMA on the module.
Ensure that in the scope, under View > Configuration Properties > Main, the Input Processing option is set to Columns as channels (frame based).
Additional References