Write a decoder for captured unipolar NRZ(Non-return-to-zero) line coded serial data. (in the form of a DLL Class library for the USBee Suite software - The USBee Suite software is available for free at [login to view URL])
These are primitive, simple code methods with a single data signal and no explicit clock signal. Data is obtained by masking one bit out of a retrieved 32-bit sample. Output after decoding will be the ASCII text or numeral representing the bit or symbol passed to an existing output function.
Digital line codes required:
NRZ
NRZ mark, NRZ space
NRZ inverted
Manchester
Differential Manchester (aka Conditioned Diphase)
Delay (aka Miller)
Coded mark inversion
Bi-phase mark
Pulse width modulation
Pulse Position modulation
## Deliverables
USBEE Decoder Plugin project
This will be a Class Library (DLL) written in any language supported by Visual Studio 2008 in the form of a plugin for the USBee Suite program for the Windows operating system.
Project Summary: Write a decoder for unipolar NRZ(Non-return-to-zero) line coded serial data. These are primitive, simple code methods with a single data signal and no explicit clock signal. Output after decoding will be the ASCII text or numeral representing the bit or symbol passed to an existing output function.
Project Background: This is intended to decode data where the line coding method is one of these listed, but which one it is may be is unknown. We will likely just re-run the plugin until the output looks correct in that case.
Digital line codes required:
NRZ
NRZ mark, NRZ space
NRZ inverted
Manchester
Differential Manchester (aka Conditioned Diphase)
Delay (aka Miller)
Coded mark inversion
Bi-phase mark
Pulse width modulation
Pulse Position modulation
Input
Outfile: File that decoded entries get written to. File write/formatting function is provided.
Data Rate: Data may be sampled at rates between 1MHz and 24MHz, and the rate value will be passed to your function. Actual signal data will probably be present at rates betweeen 500kbps and 10kbps.
Parameters: A text string will be passed from the user interface to determine which decoding method is requested, and any other relevant options that you and we together determine are necessary.
Suggested parameters:
Decoding method chosen- either short text name or numeric index, your choice.
Data channel number [0-16] (which bit you're looking for)
comma separated list of names for PWM width size classes ordered from small to large
Sampled data input: Call a provided library function with the index number of a sample, that returns 4 bytes for each sample - the data you're looking for will be present in bit position referenced by the Data Channel value passed in from the user.
Output: output the name and index number of the decoding method used sometime before the start of data. For binary data, output ASCII text 1 or 0 along with sample index values of where the encoded data for the decoded bit started and stopped. PWM will require more than 1 bit data output, but it will still be ASCII text. See PWM details.
PWM: These input PWM signals will be composed of just a few pulse widths, which represent more than just binary values. Therefore they should be treated by simply identifying the
User interface: text parameters entered in the USBee suite Custom protocol panel will be passed to your function.
The interface with the USBee suite looks very simple, and the documentation for writing a custom decoder is detailed from Page 65 to 71 of the USBee Suite help file pdf at [login to view URL] . The USBee Suite software is available for free at [login to view URL] .
Sample data captures will be provided for most of these methods. One sample capture file for use in the free USBee Suite is provided with this posting. Open this file using the USBeeSuite.