http://www.sigrok.org provides opensource firmware “fx2lafw” to use cheap FX2-based logic analysers cross-platform. This projects aims at extending the functionality of this firmware and to make a small hardware modification to allow for basic triggering. The final goal is to provide the lab with a working logic analyser setup.
Status du project | |
---|---|
Date de début | 21/07/2014 |
Status | work in progress |
Initiateur | Magnus |
Extend a cheap logic analyser by:
|[fx2_logic_analyser] Interested in joining this project | |||
---|---|---|---|
Nom | participation active | participation passive | suivre de loins |
Got 8051 cross-compiler installed. Increased sampling speed to 48 MHz. This can be achieved by a recursive GPIF DP point that re-executes the data transfer.
Soldered to wires to connect RDY0 and RDY1 to D0 and D1. This allows to add trigger decision points. A proof-of-concept firmware with a 4-stage trigger seems to work. The maximum number of delay states was reduced to 255 to fit within a single state. This should be enough anyways (further downsampling can be done on the PC side…).
(see the two black wires added to the FX2)
Moved the whole configuration of states to the PC side:
struct cmd_start_acquisition { uint8_t flags; [...] + uint8_t state[32]; };
… simplifying the firmware (sigrok-firmware-fx2lafw 70b415b) side to:
bool gpif_acquisition_start(const struct cmd_start_acquisition *cmd) { [...] + /* Populate states */ + for (i=0;i<32;++i) { + pSTATE[i]=cmd->state[i]; }
Testing with some 1 MHz signal from an arduino board (see http://dzlsevilgeniuslair.blogspot.dk/2012/05/generating-high-frequencies-with-avr.html):
$ sigrok-cli --driver=fx2lafw --config samplerate=48M --samples=100 --channels=0 libsigrok 0.3.0 Acquisition with 1/8 channels at 48 MHz 0:11111000 00000000 00000000 00000111 11111111 11111111 11111111 00000000 0:00000000 00000000 11111111 11111111 1111 $ sigrok-cli --driver=fx2lafw --config samplerate=30M --samples=100 --channels=0 libsigrok 0.3.0 Acquisition with 1/8 channels at 30 MHz 0:00000111 11111111 11111100 00000000 00000111 11111111 11111100 00000000 0:00000111 11111111 11111100 00000000 0000 $ sigrok-cli --driver=fx2lafw --config samplerate=24M --samples=100 --channels=0 libsigrok 0.3.0 Acquisition with 1/8 channels at 24 MHz 0:00000001 11111111 11111000 00000000 01111111 11111100 00000000 00111111 0:11111111 00000000 00001111 11111111 1000 $ sigrok-cli --driver=fx2lafw --config samplerate=15M --samples=100 --channels=0 libsigrok 0.3.0 Acquisition with 1/8 channels at 15 MHz 0:11000000 01111111 10000000 01111111 10000000 01111111 10000000 01111111 0:10000000 01111111 10000000 01111111 1000 $ sigrok-cli --driver=fx2lafw --config samplerate=10M --samples=100 --channels=0 libsigrok 0.3.0 Acquisition with 1/8 channels at 10 MHz 0:11110000 01111110 00001111 10000011 11110000 01111110 00001111 10000011 0:11110000 01111110 00001111 10000011 1111
… looks good so far!