Repository navigation
Multi device sets
Two to five Pico boards can work as one logic analyzer, a multi device set: 48 to 120 channels captured together (Interceptor boards add 28 channels each). This page covers the wiring, connecting the boards, triggering and how openSciLab aligns the boards after every capture. It is also how a Commodore 64 is captured at its expansion port (C64 bus).
A set captures into the buffers of its boards: every board captures at the same rate and stores its channels, and openSciLab joins them into one capture. With Pico boards, board 1 has channels 1–24, board 2 channels 25–48, and so on.
A set only captures. Streams, the state mode, blast mode and bursts, test signals of the board and the pins of the boards (GPIO, PWM, analog inputs, generators) are not available for a set; use the boards one by one for those. The self-test runs on every board of the set.
- 2 to 5 boards with the openSciLab Pico firmware, all with the same version (a set with different versions is refused; see Firmware).
- Every board on USB (not WiFi).
- One ground for all boards and the device under test.
- The trigger line between the boards (below).
The inputs and the trigger input of the boards tolerate 3.3 V. A 5 V system such as a Commodore 64 needs a level shifter or a voltage divider – on the trigger input as well.
Connect the trigger output of one board to the trigger input of the others:
| Board | Trigger output → trigger input |
|---|---|
| Raspberry Pi Pico, Pico 2, Pico W, Pico 2 W | GP0 → GP1 |
| RP2040-Zero | GPIO 17 → GPIO 18 |
| LogicAnalyzer Interceptor | GPIO 0 → GPIO 1 |
On every board both pins are linked, so the trigger pins of all boards form one line. Whichever
board evaluates the trigger drives that line and starts the others. In the pin table of a board
these two pins are reserved (trigger output of a multi-board set, trigger input of a multi-board
set). The self-test checks the link between them on each board (TRIGGER_LINK).
With Multiple devices... – in the device list under Available, or in Devices → Connect... under Add by hand. The dialog Connect multiple devices lists the Available ports with their Port, Device, Serial number and USB location: identical boards differ only by their serial number (the unique board ID) and the USB socket they are plugged into. Under Device order choose the port of Device 1 (master):, Device 2: and so on (Not used for the rest), then Connect.
With Autodetect – when several boards are plugged in, the device list offers
Autodetect (2 analyzers) (or 3, 4, 5). It asks Several analyzers found: Combine into a multi device set or use only one
board. For a set, the dialog Multi device set gives each board its Position (Device 1
(master), Device 2, ...). The order is remembered for these boards by their serial numbers, so
the next autodetect connects the set at once. Devices → Forget multi device sets... forgets the
remembered orders.
Device 1 is the master: the other boards are aligned to it. The set is one device with one device card and one data view.
On the command line and in flows the address of a set lists its ports, e.g.
pico-multi:/dev/ttyACM0,/dev/ttyACM1 (the first board is the master).
The board that owns the trigger channel evaluates the trigger and starts the other boards through the trigger line. In the capture settings the channels are named with their board, e.g. Channel 25 (board 2).
| Trigger | Where it can run |
|---|---|
| Edge on a channel | on any board: that board drives the trigger output on the edge |
| Pattern | on any board, within one group of consecutive trigger inputs of that board: channels 1–21 or 22–24 of a Pico board (25–45 or 46–48 on board 2, ...), 1–16, 17–20 or 21–24 of an RP2040-Zero, 1–24 or 25–28 of an Interceptor. Up to 16 channels, 5 with Fast matching (max. 5 bits). A pattern cannot span two boards. |
| External trigger (every board) | the trigger signal goes to the trigger input of every board, and each board waits for the edge itself – all boards start together, without a trigger delay to compensate |
The board that evaluates the trigger has to capture at least one channel itself; the capture settings say so (Board 2 evaluates the trigger, so it has to capture at least one channel ...).
A pattern trigger compares levels: if the pattern already matches when the capture starts, it triggers at once.
The other boards are started through a wire. openSciLab compensates the fixed delay of the trigger, but a board can still start a sample early or late, and the crystals of the boards drift apart by a few samples over a full buffer. After every capture of a set, openSciLab corrects this:
-
Reference line (exact): connect one signal of a slave board also to a free input of the
master, and name that channel like the slave's channel plus
ref. The standard profile C64 expansion port - board B (master) + board A (slave) hasA0 (Y) refon CH15 of board B for A0 of board A. Offset and drift are measured from the two copies. -
Clock (estimate): without a usable reference line, the offset is estimated from a clock
channel on the master named
Φ2,PHI2,CLKorclock. The address lines of a synchronous bus change only after the falling clock edge, so a slave is moved by the smallest amount that leaves no address changes in the two samples before the clock edges.
After a capture the reference line is used when it is there. The status bar and the row
Alignment on the Capture tab of the data view name the method and the correction, e.g.
board 2 moved by -1 samples (reference A0 (Y) ref).
Data → Align boards measures again on the samples as captured – also for a capture of a set opened from a file. When several methods are possible, the dialog Align boards offers each board the methods it found (Reference line ... (exact), Clock ... (estimate)) or Leave unchanged; Align applies them. Without a reference line or a clock channel the boards cannot be aligned, and openSciLab says what is missing.
Simulated boards can be combined into a set as well and are captured like a real one. In the
device list open the group Simulators and
choose the multi device entry (Simulated multi device... in Devices → Connect...). The dialog
Simulated multi device asks for the Board (a simulator profile, e.g. the Pico) and the number of
Boards (2 to 5) and shows the number of channels in total. Its address is sim:pico*2 for two
simulated Picos; in flows the channels of board 2 are called B2.GP2 and so on.
- The template Multi board (Templates → Advanced) captures two simulated Picos as one analyzer with 48 channels and measures the time between the edges of the two boards.
- On the Signals tab of a simulated set of two Picos, the scenario C64 bus puts a Commodore 64 running a small program on the channels of the profile C64 expansion port. Load that profile (Profiles → Standard profiles on the device card or in the data view) and capture: the C64 bus decoder disassembles what it ran.
See Simulators for more about simulated devices.
openSciLab · 0.1 beta
Instruments
Logic analyzer
The lab
More