-
Notifications
You must be signed in to change notification settings - Fork 15
Multichannel notes
The development of MIMO firmware for MaRCoS devices has enabled the configuration of multiple SDRLabs in parallel, extending multichannel capabilities to more than two channels. MaRGE has been updated to support these multichannel features, but only for sequences implemented using the PyPulseq framework and Rx. This document provides notes on configuring and using these capabilities.
To configure MaRGE for multichannel operation, follow these steps:
-
Select the Required Branches:
-
MaRGE Repository: Select the
multichannel
branch. -
marcos_client Repository: Select the
mimo
branch. -
marcos_server Repository: Select the
mimo
branch. -
marcos_extras Repository: Select the
mimo_all_sata
branch. - Follow instructions in MaRCoS wiki for mimo
-
MaRGE Repository: Select the
-
Configure Hardware Settings:
In theconfigs/hw_config.py
file, configure the IP and ports of the SDRLabs. The relevant parameters are:-
rp_ip_list
: A list of the IP addresses of the Red Pitaya devices. -
rp_port
: A list of ports corresponding to the devices, with the same size asrp_ip_list
.
Example hardware configuration:
# Red Pitaya connection configuration rp_ip_list = ["192.168.1.101", "192.168.1.102", "192.168.1.103"] rp_port = [11111, # list of ports with same size as the rp_ip_list 11111, 11111] rp_version = "rp-122" rp_max_input_voltage = 225 # mV grad_board = "gpa-fhdo" # gpa-fhdo or ocra1 fpga_clk_freq_MHz = 122.88 # RP-122
-
When coding sequences for multichannel operation, follow the updated method provided in sequence_template.py
. The
process remains nearly identical to the standard approach, with one exception: Step 4, which calculates the true
acquisition bandwidth.
-
Step 4 can be copied directly from the template, so no significant modifications are required for the
sequenceRun
method. - The final step in
sequenceRun
,runBatches
, will produce a list of arrays—each array corresponds to data from a different Rx channel. - Output data will be stored in:
-
mapVals['data_over']
: Oversampled data. -
mapVals['data_decimated']
: Decimated data.
-
The GUI now includes a new input parameter called "Channels" located in the "Others" tab. This parameter lets
you specify the Rx channels to use, and its value determines the length of the output lists:
mapVals['data_over']
and mapVals['data_decimated']
By default, the first time you run a new sequence, all available channels will be used. You can modify the "Channels" parameter as needed for subsequent runs.
If the Channels parameter is set to [1, 4, 5, 6]
, the data_over
and data_decimated
outputs will each be a list
containing four NumPy arrays. Each array will represent the acquired data measured from channels 1, 4, 5, and 6,
respectively.