This project decodes incoming 8b10b encoded data and optionally multiplies the two decoded bytes.
After reset, the 8b10b decoders look for the K.28.5 symbol 001111 1010
or 110000 0101
. Once this sequence is detected the
decoder indicates the stream is valid and then sets its input byte after each data symbol is received.
If a K.28.5 symbol is received when the stream is valid, then the decoder remains in the valid state but does not update its output.
If any symbol other than a data symbol or K.28.5 is received the decoder returns to the reset state until a new K.28.5 symbol is sent.
The remaining inputs allow the decoded data, or the result of multiplying the decoded data to be presented on the outputs.
Send 8b10b encoded data streams, check the outputs.
While in reset, the inputs are presented on the outputs and bidirs as differential pairs, with out[0] = in[0]
, out[1] = ~in[0]
, out[2] = in[1]
, etc.
If not in reset, the output enables on the bidirectional pins are controlled by in[7]
.
None required
# | Input | Output | Bidirectional |
---|---|---|---|
0 | A 8b10b in | Out 0 | Out 8 |
1 | B 8b10b in | Out 1 | Out 9 |
2 | Decoder status | Out 2 | Out 10 |
3 | Multiply result | Out 3 | Out 11 |
4 | Multiply result (update gated) | Out 4 | Out 12 |
5 | Decoded values (registered) | Out 5 | Out 13 |
6 | Decoded values (unregistered) | Out 6 | Out 14 |
7 | Bidir output enable | Out 7 | Out 15 |