Difference between revisions of "Input output formats"

From sigrok
Jump to navigation Jump to search
m
(add "protocoldata" input file format)
 
(43 intermediate revisions by 10 users not shown)
Line 1: Line 1:
== Input formats ==
[[libsigrok]] supports a number of different input modules (a.k.a. file formats) and output modules, and has a generic API which allows easily adding more input/output modules.


=== Logic analyzer ===
== Supported input/output formats ==


TODO
{| border="0" style="font-size: smaller" class="alternategrey sortable sigroktable"
|-
! style="width: 12em;" | Name
!Input
!Output
!Description
|-
| [[File format:analog|Analog]]
| bgcolor="yellow" | —
| bgcolor="lime" | supported
| Text output of analog data and types.
|-
| [[File format:ascii|ASCII]]
| bgcolor="yellow" | —
| bgcolor="lime" | supported
| ASCII art.
|-
| [[File format:binary|Binary]]
| bgcolor="lime" | supported
| bgcolor="lime" | supported
| Raw binary data output without any metadata attached.
|-
| [[File format:bits|Bits]]
| bgcolor="yellow" | —
| bgcolor="lime" | supported
| 0/1 digits.
|-
| style="white-space: nowrap;" | [[File format:chronovu_la8|ChronoVu LA8]]
| bgcolor="lime" | supported
| bgcolor="lime" | supported
| [[ChronoVu LA8]] software file format (usually with .kdt file extension).
|-
| [[File format:csv|CSV]]
| bgcolor="lime" | supported
| bgcolor="lime" | supported
| Comma-separated values (also usable for generating data and config files for gnuplot).
|-
| [[File format:hex|hex]]
| bgcolor="yellow" | —
| bgcolor="lime" | supported
| Hexadecimal digits.
|-
| [[File format:logicport|Intronix Logicport LA1034]]
| bgcolor="lime" | supported
| bgcolor="yellow" | —
| [[Intronix Logicport LA1034]] *.lpf files.
|-
| [[File format:ols|ols]]
| bgcolor="yellow" | —
| bgcolor="lime" | supported
| The file format used by the [http://www.lxtreme.nl/ols/ "Alternative" Java client] for the [[Openbench Logic Sniffer]].
|-
| [[File format:protocoldata|protocoldata]]
| bgcolor="lime" | supported
| bgcolor="yellow" | —
| Re-creates logic trace waveforms from a sequence of data values and optional control instructions.
|-
| [[File format:saleae|saleae]]
| bgcolor="lime" | supported
| bgcolor="yellow" | —
| Files exported by the Saleae Logic application.
|-
| [[File format:srzip|srzip]]
| bgcolor="lime" | supported
| bgcolor="lime" | supported
| The current (v2) sigrok session file format (*.sr).
|-
| [[File format:stf|STF]]
| bgcolor="lime" | supported
| bgcolor="yellow" | —
| "Sigma Test File". Native format of the Asix Sigma/Omega vendor software.
|-
| [[File format:vcd|VCD]]
| bgcolor="lime" | supported
| bgcolor="lime" | supported
| The [http://en.wikipedia.org/wiki/Value_change_dump Value Change Dump] format (can also be visualized in [http://gtkwave.sourceforge.net/ gtkwave], for instance).
|-
| [[File format:wav|WAV]]
| bgcolor="lime" | supported
| bgcolor="lime" | supported
| The [http://en.wikipedia.org/wiki/WAV waveform audio] (WAV) file format.
|-
| [[File format:raw_analog|Raw analog]]
| bgcolor="lime" | supported
| bgcolor="yellow" | —
| Analog signals without header (configurable sample size, format, and endianness).


=== Binary ===
|-
| [[File format:trace32_ad|Lauterbach Trace32]]
| bgcolor="lime" | supported
| bgcolor="yellow" | —
| The Lauterbach Trace32 logic analyzer data file format.


Raw, binary input format without any metadata.
|-
| [[File format:wavedrom|WaveDrom]]
| bgcolor="yellow" | —
| bgcolor="lime" | supported
| Digital timing diagrams in JSON syntax


=== sigrok session ===
|}


TODO.
The output formats apply only to unprocessed raw data. Data processed by decoders can't be saved into output file by argument, only by redirection of <code>STDOUT</code>.


See [[Input output formats/sigrok session]].
== Supported transform modules ==


=== ChronoVu LA8 ===
{| border="0" style="font-size: smaller" class="alternategrey sortable sigroktable"
|-
! style="width: 8em;" | Name
!Description
|-
| nop
| Do nothing.
|-
| scale
| Scale analog values by a specified factor.
|-
| invert
| Invert values.
|}


See below.
== Possible candidates for future input/output formats ==


== Output formats ==
{| border="0" style="font-size: smaller" class="alternategrey sortable sigroktable"
 
|-
=== sigrok session ===
!Name
 
!Description
TODO
|-
 
| Scanalogic
=== Bits ===
| Used by the [[IKALOGIC Scanalogic-2]] and [[IKALOGIC ScanaPLUS]] logic analyzers.
 
|-
<small>
| [[File format:rigol_rof|Rigol ROF]]
$ '''sigrok-cli --samples 1000 -f bits'''
| Used by the [[Rigol DP800 series]] power supplies.
Acquisition with 8/8 probes at 200 KHz
|-
1:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
| [[File format:rigol_raf|Rigol RAF]]
2:00000000 00011111 11111111 11100000 00000000 00011111 11111111 11110000
| Used by the Rigol DG1000Z, DG4000, and DG5000 series signal generators. See [http://www.batronix.com/pdf/Rigol/UserGuide/DG1000Z_UserGuide_EN.pdf DG1000Z User Guide] page 2-75, also [http://www.eevblog.com/forum/testgear/rigol-dg4000-series-raf-file-format/msg559443/ this post] at eevblog.
3:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
|-
4:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
| [[File format:rigol_wfm|Rigol WFM]]
5:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
| Used by the Rigol DS series oscilloscopes. See https://github.com/mabl/pyRigolWFM/blob/master/wfm.py
6:01111000 01001100 01111100 01100000 00011100 01101100 00011100 00100011
|-
7:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
| [[File_format:Rigol_WFM4|Rigol WFM4]]
8:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
| Used by the Rigol DS4000 series oscilloscopes.
1:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
|-
2:00000000 00001111 11111111 11110000 00000000 00000111 11111111 11111000
| Vector MDF (v3.3) / ASAM MDF (v4.x)
3:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
| Automotive industry standard format. Docs can be found [http://vector.com/vi_mdf_de.html here] and [http://vector.com/downloads/mdf_specification.pdf here]. Validator is [http://vector.com/downloads/MDFValidator2.1.8.zip here]. Some code is [https://code.google.com/p/mdfreader/ here] and [http://sourceforge.net/p/mdfdatafile/code/HEAD/tree/ here].
4:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
|-
5:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
| [http://en.wikipedia.org/wiki/Comtrade COMTRADE]
6:00011110 00100111 00001110 00110000 01001110 00110010 01101110 00010000
| File format used by devices in power engineering (e.g. protective relays, fault recorders). Can contain digital and analog data with constant or variable sample rate.
7:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
|-
8:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
| [[File format:pwl|PWL]]
[...]
| Trivial file format that can be used to define the signal of voltage/current sources in a SPICE simulation.
</small>
|-
 
| [[File format:tektronix_wfm|Tektronix WFM]]
=== ASCII ===
| Used by the Tektronix TDS series oscilloscopes. A parser for Matlab can be found [http://www.mathworks.com/matlabcentral/fileexchange/5873-tektronix-binary-file-readers/content/wfmread.m here].
 
|-
<small>
| EVCD/IDX/FST/GHW
$ '''sigrok-cli -d 0 --time 10 -p 1,2 -o samplerate=1M -f ascii'''
| File formats generated by hardware simulation tools. See the [http://gtkwave.sourceforge.net/gtkwave.pdf GtkWave manual] for some of them, and conversion utilities.
Acquisition with 2/16 probes at 1 MHz
|-
1:/""""""""\.........../""""""""\.........../""""""""\.........../""""""""\.
| [https://www.ni.com/hu-hu/support/documentation/supplemental/06/the-ni-tdms-file-format.html NI TDMS]
2 :........../"""""""""""""""""""\...................../"""""""""""""""""""\.
| File formats used by various National Instruments software like LabVIEW or DAQExpress.
1:........./"""""""""\........../"""""""""\........../"""""""""\........../"
|-
2:..................../"""""""""""""""""""\..................../""""""""""""
| IMC data format
1:""""""""\........../""""""""\.........../""""""""\.........../""""""""\...
| File formats used by imc GmbH softwares. File format description can be found in the [https://www.imcdataworks.com/secure-dl/?file=fileadmin/Download-Center/Manuals/imc_FAMOS/imcSharedComponents.pdf imc Software Shared Components documentation]. (Registration required.)
2:"""""""\...................../"""""""""""""""""""\...................../""
|}
1:......../""""""""\........../"""""""""\........../"""""""""\........../"""
2:"""""""""""""""""\...................../"""""""""""""""""""\..............
1:""""""\........../"""""""""\........../""""""""\.........../""""""""\.....
2:....../"""""""""""""""""""\...................../"""""""""""""""""""\.....
</small>
 
=== Hex ===
 
<small>
$ '''sigrok-cli --samples 1000 -f hex'''
Acquisition with 8/8 probes at 200 KHz
1:ff ff ff ff ff ff ff ff
2:00 7f ff c0 00 3f ff c0
3:ff ff ff ff ff ff ff ff
4:ff ff ff ff ff ff ff ff
5:ff ff ff ff ff ff ff ff
6:71 b2 71 8f 70 9f 78 c0
7:ff ff ff ff ff ff ff ff
8:ff ff ff ff ff ff ff ff
1:ff ff ff ff ff ff ff ff
2:00 3f ff e0 00 1f ff e0
3:ff ff ff ff ff ff ff ff
4:ff ff ff ff ff ff ff ff
5:ff ff ff ff ff ff ff ff
6:f8 d8 f8 c0 3c 4c 1c 63
7:ff ff ff ff ff ff ff ff
8:ff ff ff ff ff ff ff ff
[...]
</small>
 
=== Binary ===
 
Raw, binary output format without any metadata. In the example below every byte contains one sample consisting of 8 probe values (each bit denotes the high or low value of one probe; bit 0 corresponds to probe 0, and so on). In the example, probe 6 is tied to GND (i.e., low), all others are high.
 
<small>
$ '''sigrok-cli --samples 1000 -f binary > somefile.dat'''
$ '''hexdump -Cv somefile.dat'''
00000000  bf bf bf bf bf bf bf bf  bf bf bf bf bf bf bf bf  |................|
00000010  bf bf bf bf bf bf bf bf  bf bf bf bf bf bf bf bf  |................|
00000020  bf bf bf bf bf bf bf bf  bf bf bf bf bf bf bf bf  |................|
00000030  bf bf bf bf bf bf bf bf  bf bf bf bf bf bf bf bf  |................|
[...]
</small>
 
=== VCD (Value Change Dump) ===
 
[[File:Sigrok vcd output in gtkwave.png|thumb|320px|right|sigrok VCD output viewed in gtkwave]]
 
<small>
$ '''sigrok-cli --samples 1000 -f vcd'''
$date Wed Apr  2 00:01:40 2011 $end
$version sigrok 0.2 $end
$comment
  Acquisition with 8/8 probes at 200 kHz
$end
$timescale 1 ns $end
$scope module sigrok $end
$var wire 1 ! channel1 $end
$var wire 1 " channel2 $end
$var wire 1 # channel3 $end
$var wire 1 $ channel4 $end
$var wire 1 % channel5 $end
$var wire 1 & channel6 $end
$var wire 1 ' channel7 $end
$var wire 1 ( channel8 $end
$upscope $end
$enddefinitions $end
$dumpvars
#0
1!
#0
0"
#0
1#
#0
1$
#0
1%
#0
0&
#0
1'
#0
1(
#3
1&
[...]
$dumpoff
$end
</small>
 
=== Gnuplot ===
 
[[File:Sigrok gnuplot output.png|thumb|right|320px|sigrok gnuplot output format, PNG format]]
 
<small>
$ '''sigrok-cli --samples 1000 -f gnuplot'''
# Sample data in space-separated columns format usable by gnuplot
#
# Generated by: sigrok 0.2 on Fri Apr 15 20:25:58 2011
# Comment: Acquisition with 8/8 probes at 500 kHz
# Period: 500 ms
#
# Column        Probe
# -----------------------------------------------------------------------------
# 0            Sample counter (for internal gnuplot purposes)
# 1            1
# 2            2
# 3            3
# 4            4
# 5            5
# 6            6
# 7            7
# 8            8
0              1 0 1 1 1 0 1 1
6              1 0 1 1 1 1 1 1
11              1 0 1 1 1 0 1 1
14              1 0 1 1 1 1 1 1
[...]
</small>
 
=== OLS ===
 
[[File:Ols output in jawis client.png|thumb|right|320px|sigrok OLS output format in jawi's OLS client]]
 
The [https://github.com/jawi/ols/wiki/OLS-data-file-format OLS file format], as supported by [http://www.lxtreme.nl/ols/ jawi's "Alternative" OLS client] (>= 0.9.4-rc1).
 
<small>
$ '''sigrok-cli -d demo:patternmode=random --samples 1000 -f ols'''
;Rate: 200000
;Channels: 8
;EnabledChannels: -1
;Compressed: true
;CursorEnabled: false
00000067@0
000000c6@1
00000069@2
00000073@3
00000051@4
000000ff@5
0000004a@6
000000ec@7
00000029@8
000000cd@9
000000ba@10
000000ab@11
000000f2@12
000000fb@13
000000e3@14
00000046@15
0000007c@16
[...]
</small>
 
=== ChronoVu LA8 ===
 
[[File:Chronovu la8 software.png|thumb|right|320px|sigrok chronovu-la8 output format in the [[ChronoVu LA8]] software]]
 
This is the file format understood by the [[ChronoVu LA8]] software. The usual file name extension is '''.kdt'''.
 
<small>
$ '''sigrok-cli -d 0 --samples 1000 -f chronovu-la8 -o foo.kdt'''
</small>
 
'''Limitations:'''
* The file size must be exactly 8388613 bytes (8 MB samples + 5 bytes metadata).

Latest revision as of 20:27, 12 July 2023

libsigrok supports a number of different input modules (a.k.a. file formats) and output modules, and has a generic API which allows easily adding more input/output modules.

Supported input/output formats

Name Input Output Description
Analog supported Text output of analog data and types.
ASCII supported ASCII art.
Binary supported supported Raw binary data output without any metadata attached.
Bits supported 0/1 digits.
ChronoVu LA8 supported supported ChronoVu LA8 software file format (usually with .kdt file extension).
CSV supported supported Comma-separated values (also usable for generating data and config files for gnuplot).
hex supported Hexadecimal digits.
Intronix Logicport LA1034 supported Intronix Logicport LA1034 *.lpf files.
ols supported The file format used by the "Alternative" Java client for the Openbench Logic Sniffer.
protocoldata supported Re-creates logic trace waveforms from a sequence of data values and optional control instructions.
saleae supported Files exported by the Saleae Logic application.
srzip supported supported The current (v2) sigrok session file format (*.sr).
STF supported "Sigma Test File". Native format of the Asix Sigma/Omega vendor software.
VCD supported supported The Value Change Dump format (can also be visualized in gtkwave, for instance).
WAV supported supported The waveform audio (WAV) file format.
Raw analog supported Analog signals without header (configurable sample size, format, and endianness).
Lauterbach Trace32 supported The Lauterbach Trace32 logic analyzer data file format.
WaveDrom supported Digital timing diagrams in JSON syntax

The output formats apply only to unprocessed raw data. Data processed by decoders can't be saved into output file by argument, only by redirection of STDOUT.

Supported transform modules

Name Description
nop Do nothing.
scale Scale analog values by a specified factor.
invert Invert values.

Possible candidates for future input/output formats

Name Description
Scanalogic Used by the IKALOGIC Scanalogic-2 and IKALOGIC ScanaPLUS logic analyzers.
Rigol ROF Used by the Rigol DP800 series power supplies.
Rigol RAF Used by the Rigol DG1000Z, DG4000, and DG5000 series signal generators. See DG1000Z User Guide page 2-75, also this post at eevblog.
Rigol WFM Used by the Rigol DS series oscilloscopes. See https://github.com/mabl/pyRigolWFM/blob/master/wfm.py
Rigol WFM4 Used by the Rigol DS4000 series oscilloscopes.
Vector MDF (v3.3) / ASAM MDF (v4.x) Automotive industry standard format. Docs can be found here and here. Validator is here. Some code is here and here.
COMTRADE File format used by devices in power engineering (e.g. protective relays, fault recorders). Can contain digital and analog data with constant or variable sample rate.
PWL Trivial file format that can be used to define the signal of voltage/current sources in a SPICE simulation.
Tektronix WFM Used by the Tektronix TDS series oscilloscopes. A parser for Matlab can be found here.
EVCD/IDX/FST/GHW File formats generated by hardware simulation tools. See the GtkWave manual for some of them, and conversion utilities.
NI TDMS File formats used by various National Instruments software like LabVIEW or DAQExpress.
IMC data format File formats used by imc GmbH softwares. File format description can be found in the imc Software Shared Components documentation. (Registration required.)