##
'''
-AC'97 (Audio Codec '97) was specifically designed by Intel for audio and
-modem I/O functionality in mainstream PC systems. See the specification in
-http://download.intel.com/support/motherboards/desktop/sb/ac97_r23.pdf
+AC'97 (Audio Codec '97) is a protocol for audio and modem I/O functionality
+in mainstream PC systems.
AC'97 communicates full duplex data (SDATA_IN, SDATA_OUT), where bits
are clocked by the BIT_CLK and frames are signalled by the SYNC signals.
follow which carry data for three management and nine audio/modem channels.
Optionally two slots of one frame can get combined for higher resolution
on fewer channels, or double data rate.
+
+Details:
+http://download.intel.com/support/motherboards/desktop/sb/ac97_r23.pdf
'''
from .pd import Decoder
'''
This decoder stacks on top of the 'spi' PD and decodes ADNS-5020 optical mouse
-sensor commands and data. Use MOSI for the SDIO shared line.
+sensor commands and data.
+
+Use MOSI for the SDIO shared line.
'''
from .pd import Decoder
api_version = 3
id = 'adns5020'
name = 'ADNS-5020'
- longname = 'Avago ADNS-5020 optical mouse sensor'
- desc = 'Bidirectional command and data over an SPI-like protocol.'
+ longname = 'Avago ADNS-5020'
+ desc = 'Bidirectional optical mouse sensor protocol.'
license = 'gplv2+'
inputs = ['spi']
outputs = ['adns5020']
class Decoder(srd.Decoder):
api_version = 3
id = 'am230x'
- name = 'AM230x/DHTxx/RHTxx'
+ name = 'AM230x'
longname = 'Aosong AM230x/DHTxx/RHTxx'
- desc = 'Aosong AM230x/DHTxx/RHTxx humidity/temperature sensor protocol.'
+ desc = 'Aosong AM230x/DHTxx/RHTxx humidity/temperature sensor.'
license = 'gplv2+'
inputs = ['logic']
outputs = ['am230x']
##
'''
-This decoder stacks on top of the 'uart' decoder and decodes packets of
+This decoder stacks on top of the 'uart' PD and decodes packets of
the ARMv7m Embedded Trace Macroblock v3.x.
'''
api_version = 3
id = 'arm_etmv3'
name = 'ARM ETMv3'
- longname = 'ARM Embedded Trace Macroblock'
- desc = 'Decode ETM instruction trace packets.'
+ longname = 'ARM Embedded Trace Macroblock v3'
+ desc = 'ARM ETM v3 instruction trace protocol.'
license = 'gplv2+'
inputs = ['uart']
outputs = ['arm_etmv3']
id = 'arm_itm'
name = 'ARM ITM'
longname = 'ARM Instrumentation Trace Macroblock'
- desc = 'Trace data from Cortex-M / ARMv7m ITM module.'
+ desc = 'ARM Cortex-M / ARMv7m ITM trace protocol.'
license = 'gplv2+'
inputs = ['uart']
outputs = ['arm_itm']
##
'''
-This decoder stacks on top of the 'uart' decoder and decodes the frame format
-of ARMv7m Trace Port Interface Unit. It filters the data coming from various
-trace sources (such as ARMv7m ITM and ETM blocks) into separate streams that
-can be further decoded by other PDs.
+This decoder stacks on top of the 'uart' PD and decodes the frame format
+of ARMv7m Trace Port Interface Unit.
+
+It filters the data coming from various trace sources (such as ARMv7m ITM
+and ETM blocks) into separate streams that can be further decoded by other PDs.
'''
from .pd import Decoder
'''
This decoder stacks on top of the 'i2c' PD and decodes the
-Microchip ATSHA204A CryptoAuthentication protocol.
+Microchip ATSHA204A crypto authentication protocol.
'''
from .pd import Decoder
id = 'atsha204a'
name = 'ATSHA204A'
longname = 'Microchip ATSHA204A'
- desc = 'Microchip ATSHA204A CryptoAuthentication device.'
+ desc = 'Microchip ATSHA204A crypto authentication protocol.'
license = 'gplv2+'
inputs = ['i2c']
outputs = ['atsha204a']
id = 'avr_isp'
name = 'AVR ISP'
longname = 'AVR In-System Programming'
- desc = 'Protocol for in-system programming Atmel AVR MCUs.'
+ desc = 'Atmel AVR In-System Programming (ISP) protocol.'
license = 'gplv2+'
inputs = ['spi']
outputs = ['avr_isp']
'''
PDI (Program and Debug Interface) is an Atmel proprietary interface for
-external programming and on-chip debugging of the device. See the Atmel
-Application Note AVR1612 "PDI programming driver" and the "Program and
-Debug Interface" section in the Xmega A manual for details.
+external programming and on-chip debugging of the device.
+
+See the Atmel Application Note AVR1612 "PDI programming driver" and the
+"Program and Debug Interface" section in the Xmega A manual for details.
The protocol uses two pins: the RESET pin and one dedicated DATA pin.
The RESET pin provides a clock, the DATA pin communicates serial frames
id = 'avr_pdi'
name = 'AVR PDI'
longname = 'Atmel Program and Debug Interface'
- desc = 'Atmel proprietary interface for the ATxmega MCU.'
+ desc = 'Atmel ATxmega Program and Debug Interface (PDI) protocol.'
license = 'gplv2+'
inputs = ['logic']
outputs = ['pdi']
##
'''
-Consumer Electronics Control (CEC) protocol allows users to command and
+The Consumer Electronics Control (CEC) protocol allows users to command and
control devices connected through HDMI.
'''
##
'''
-This PD is a simple counter.
+This decoder is a simple edge counter.
It can count rising and/or falling edges, provides an optional reset
-signal. It can also divide the count to e.g. count the numger of
-fixed length words (where a word corresponds to e.g. 9 clock edges).
+signal. It can also divide the count to e.g. count the number of
+fixed-length words (where a word corresponds to e.g. 9 clock edges).
'''
from .pd import Decoder
id = 'counter'
name = 'Counter'
longname = 'Edge counter'
- desc = 'Count number of edges.'
+ desc = 'Count the number of edges in a signal.'
license = 'gplv2+'
inputs = ['logic']
outputs = []
id = 'dali'
name = 'DALI'
longname = 'Digital Addressable Lighting Interface'
- desc = 'DALI lighting control protocol.'
+ desc = 'Digital Addressable Lighting Interface (DALI) protocol.'
license = 'gplv2+'
inputs = ['logic']
outputs = ['dali']
id = 'dmx512'
name = 'DMX512'
longname = 'Digital MultipleX 512'
- desc = 'Professional lighting control protocol.'
+ desc = 'Digital MultipleX 512 (DMX512) lighting protocol.'
license = 'gplv2+'
inputs = ['logic']
outputs = ['dmx512']
id = 'ds1307'
name = 'DS1307'
longname = 'Dallas DS1307'
- desc = 'Realtime clock module protocol.'
+ desc = 'Dallas DS1307 realtime clock module protocol.'
license = 'gplv2+'
inputs = ['i2c']
outputs = ['ds1307']
api_version = 3
id = 'ds243x'
name = 'DS243x'
- longname = 'Maxim DS2432/2433'
+ longname = 'Maxim DS2432/3'
desc = 'Maxim DS243x series 1-Wire EEPROM protocol.'
license = 'gplv2+'
inputs = ['onewire_network']
id = 'dsi'
name = 'DSI'
longname = 'Digital Serial Interface'
- desc = 'DSI lighting control protocol.'
+ desc = 'Digital Serial Interface (DSI) lighting protocol.'
license = 'gplv2+'
inputs = ['logic']
outputs = ['dsi']
##
'''
-EDID 1.3 structure decoder.
+Extended Display Identification Data (EDID) 1.3 structure decoder.
The three-character vendor ID as specified in the EDID standard refers to
a Plug and Play ID (PNPID). The list of PNPID assignments is done by Microsoft.
-More information is available on this page:
-
- http://msdn.microsoft.com/en-us/windows/hardware/gg463195
The 'pnpids.txt' file included with this protocol decoder is derived from
the list of assignments downloadable from that page. It was retrieved in
January 2012.
-More information on EDID is available here:
-
- https://en.wikipedia.org/wiki/Extended_display_identification_data
+Details:
+https://en.wikipedia.org/wiki/Extended_display_identification_data
+http://msdn.microsoft.com/en-us/windows/hardware/gg463195
'''
from .pd import Decoder
id = 'gpib'
name = 'GPIB'
longname = 'General Purpose Interface Bus'
- desc = 'IEEE-488 GPIB / HPIB protocol.'
+ desc = 'IEEE-488 General Purpose Interface Bus (GPIB / HPIB).'
license = 'gplv2+'
inputs = ['logic']
outputs = ['gpib']
id = 'graycode'
name = 'Gray code'
longname = 'Gray code and rotary encoder'
- desc = 'Accumulate rotary encoder increments, provide timing statistics.'
+ desc = 'Accumulate rotary encoder increments, provide statistics.'
license = 'gplv2+'
inputs = ['logic']
outputs = ['graycode']
'''
This protocol decoder tries to guess the bitrate / baudrate of the
-communication on the specified channel. Typically this will be used to
-guess / detect the baudrate used in a UART communication snippet, but it
-could also be used to guess bitrates of certain other protocols or buses.
+communication on the specified channel.
+
+Typically this will be used to guess / detect the baudrate used in a UART
+communication snippet, but it could also be used to guess bitrates of certain
+other protocols or buses.
It should be noted that this is nothing more than a simple guess / heuristic,
and that there are various cases in practice where the detection of the
samplerate used to sample the respective channel. For good results it is
recommended to use a logic analyzer samplerate that is much higher than
the expected bitrate/baudrate that might be used on the channel.
+
+The last annotation emitted by the decoder will be the best bitrate guess.
'''
from .pd import Decoder
api_version = 3
id = 'iec'
name = 'IEC'
- longname = 'Commodore bus'
+ longname = 'Commodore IEC bus'
desc = 'Commodore serial IEEE-488 (IEC) bus protocol.'
license = 'gplv2+'
inputs = ['logic']
This protocol decoder retrieves the timing jitter between two digital signals.
It allows to define a clock source channel and a resulting signal channel.
+
Each time a significant edge is detected in the clock source, we calculate the
elapsed time before the resulting signal answers and report the timing jitter.
'''
class Decoder(srd.Decoder):
api_version = 3
id = 'jtag_ejtag'
- name = 'JTAG / EJTAG (MIPS)'
+ name = 'JTAG / EJTAG'
longname = 'Joint Test Action Group / EJTAG (MIPS)'
desc = 'MIPS EJTAG protocol.'
license = 'gplv2+'
##
'''
-LPC (Low-Pin Count) is a protocol for low-bandwidth devices used on
+LPC (Low Pin Count) is a protocol for low-bandwidth devices used on
some PC mainboards, such as the "BIOS chip" or the so-called "Super I/O".
'''
api_version = 3
id = 'lpc'
name = 'LPC'
- longname = 'Low-Pin-Count'
+ longname = 'Low Pin Count'
desc = 'Protocol for low-bandwidth devices on PC mainboards.'
license = 'gplv2+'
inputs = ['logic']
id = 'max7219'
name = 'MAX7219'
longname = 'Maxim MAX7219/MAX7221'
- desc = '8-digit LED display driver.'
+ desc = 'Maxim MAX72xx series 8-digit LED display driver.'
license = 'gplv2+'
inputs = ['spi']
outputs = ['max7219']
'''
This protocol decoder de-multiplexes Intel MCS-48 (8039, 8048, etc.) external
-program memory accesses. This requires 14 channels: 8 for D0-D7 (data and
-lower 8 bits of address), 4 for A8-A11 (output on port P2), ALE and PSEN.
+program memory accesses.
+
+This requires 14 channels: 8 for D0-D7 (data and lower 8 bits of address),
+4 for A8-A11 (output on port P2), ALE and PSEN.
+
An optional A12 is supported, which may be an arbitrary I/O pin driven by
software (use case is dumping ROM of an HP 3478A).
'''
id = 'mdio'
name = 'MDIO'
longname = 'Management Data Input/Output'
- desc = 'Half-duplex sync serial bus for MII management between MAC and PHY.'
+ desc = 'MII management bus between MAC and PHY.'
license = 'bsd'
inputs = ['logic']
outputs = ['mdio']
'''
Microwire is a 3-wire half-duplex synchronous serial communication protocol.
+
Originally from National Semiconductor, it is often used in EEPROM chips with
device specific commands on top of the bit stream.
id = 'mlx90614'
name = 'MLX90614'
longname = 'Melexis MLX90614'
- desc = 'Infrared Thermometer protocol.'
+ desc = 'Melexis MLX90614 infrared thermometer protocol.'
license = 'gplv2+'
inputs = ['i2c']
outputs = ['mlx90614']
api_version = 3
id = 'nrf24l01'
name = 'nRF24L01(+)'
- longname = 'Nordic Semiconductor nRF24L01/nRF24L01+'
- desc = '2.4GHz transceiver chip.'
+ longname = 'Nordic Semiconductor nRF24L01(+)'
+ desc = '2.4GHz RF transceiver chip.'
license = 'gplv2+'
inputs = ['spi']
outputs = ['nrf24l01']
- owr (1-Wire signal line)
Options:
-1-Wire is an asynchronous protocol with fixed timing values, so the decoder must
-know the samplerate.
+1-Wire is an asynchronous protocol with fixed timing values, so the decoder
+must know the samplerate.
Two speeds are available: normal and overdrive. The decoder detects when
-switching from one to another but the user can set which to start decoding with:
+switching speed, but the user can set which to start decoding with:
- overdrive (to decode starting with overdrive speed)
'''
##
'''
-Pulse-width modulation (a.k.a pulse-duration modulation, PDM) decoder.
+Pulse-width modulation (PWM) a.k.a pulse-duration modulation (PDM) decoder.
'''
from .pd import Decoder
api_version = 3
id = 'rfm12'
name = 'RFM12'
- longname = 'RFM12 control protocol'
+ longname = 'HopeRF RFM12'
desc = 'HopeRF RFM12 wireless transceiver control protocol.'
license = 'gplv2+'
inputs = ['spi']
license = 'gplv3+'
inputs = ['logic']
outputs = ['rgb_led_ws281x']
- tags = ['Display']
+ tags = ['Display', 'IC']
channels = (
{'id': 'din', 'name': 'DIN', 'desc': 'DIN data line'},
)
##
'''
-Decoder for Siemens EEPROM SDA2506.
+Decoder for Siemens EEPROM SDA 2506-5.
'''
from .pd import Decoder
The SPI (Serial Peripheral Interface) protocol decoder supports synchronous
SPI(-like) protocols with a clock line, a MISO and MOSI line for data
transfer in two directions, and an optional CS# pin.
+
Either MISO or MOSI (but not both) can be optional.
If CS# is supplied, data is only decoded when CS# is asserted (clock
##
'''
-This decoder decodes the ST7735 TFT controller protocol.
+This decoder decodes the Sitronix ST7735 TFT controller protocol.
Details:
http://www.displayfuture.com/Display/datasheet/controller/ST7735.pdf
This PD decodes the ARM SWD (version 1) protocol, as described in the
"ARM Debug Interface v5.2" Architecture Specification.
-Details:
-http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ihi0031c/index.html
-(Registration required)
-
Not supported:
* Turnaround periods other than the default 1, as set in DLCR.TURNROUND
(should be trivial to add)
* SWD protocol version 2 (multi-drop support, etc.)
+
+Details:
+http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ihi0031c/index.html
+(Registration required)
'''
from .pd import Decoder
id = 'usb_request'
name = 'USB request'
longname = 'Universal Serial Bus (LS/FS) transaction/request'
- desc = 'USB (low-speed and full-speed) transaction/request protocol.'
+ desc = 'USB (low-speed/full-speed) transaction/request protocol.'
license = 'gplv2+'
inputs = ['usb_packet']
outputs = ['usb_request']
id = 'usb_signalling'
name = 'USB signalling'
longname = 'Universal Serial Bus (LS/FS) signalling'
- desc = 'USB (low-speed and full-speed) signalling protocol.'
+ desc = 'USB (low-speed/full-speed) signalling protocol.'
license = 'gplv2+'
inputs = ['logic']
outputs = ['usb_signalling']
available for vendor-specific extensions. This decoder supports both lower
memory and table 0x01.
-The XFP specification is available here:
-
- ftp://ftp.seagate.com/sff/INF-8077.PDF
+Details:
+ftp://ftp.seagate.com/sff/INF-8077.PDF (XFP specification)
'''
from .pd import Decoder
id = 'xfp'
name = 'XFP'
longname = '10 Gigabit Small Form Factor Pluggable Module (XFP)'
- desc = 'Data structure describing display device capabilities.'
+ desc = 'XFP I²C management interface structures/protocol'
license = 'gplv3+'
inputs = ['i2c']
outputs = ['xfp']
Notes on the Z80 opcode format and descriptions of both documented and
"undocumented" opcodes are available here:
- http://www.z80.info/decoding.htm
- http://clrhome.org/table/
+Details:
+http://www.z80.info/decoding.htm
+http://clrhome.org/table/
'''
from .pd import Decoder