On file DEC8B10B.vhd there is a long lookup table. There are comments near certain characters, for instance: -K19.7+. Superficially I would say it is a control character, but it does not appear of the control symbols on wikipedia: http://en.wikipedia.org/wiki/8B10B#Control_symbols I have compared it to the 8b10b character list on a Xilinx manual (I have the Virtex-5 FPGA RocketIO GTX Transceiver User Guide UG198 November 17, 2008, but I assume it is the same on any other guide). What I find is that -K19.7 has the same bit pattern (apart some reverse ordering) of character D19.7 in the xilinx document. So my question: is this a valid data word or a control character ?
The same consideration applies to many other characters of file DEC8B10B.vhd
Is is not valid just mentionly.
"-K19.7+" is just show a combination of running disparity, and control code with 8b Data. the first '-' means running disparity is -1 the second 'K' means the signal value of control code is '1' the 3rd "19" means 5b/6b code value is 19 the 4th '7' means 3b/4b code value is 7 the last '+' means the new result of running disparity is +1
for example -K19.7 what you point. running disparity -1, and you give a value "11110011"("111"(D7) & "10011"(D19)) with Control signal '1' to encoder. obviously, the combination of "11110011"(D19 + D7) with Control is illegality. but it is possable to generate 10bit sequence of that combinations.
my suggestion about the enc/dec for 8b/10b has maximum capability for any possable user inputs and signals.
the Control Signal = '1' use with only K28(001111 or 110000).
Dear Ryu,
thank for you answer but I still do not understand.
Line 120 of DEC8B10B.vhd is:
"111110011", -- "0001010011", -K19.7+, 4,1
What is the 10-bit code "0001010011" ? An error, a control character or a valid word ?
Plus the bit ordering is not clear to me. For the decoded words, do you use the order "HGF EDCBA" or the opposite ? For the encoded words, do you use the order "abcdei fghj" or the opposite ?
I show you a reading example for "-K19.7+" in DEC8B10B.vhl
"111110011", -- "0001010011", -K19.7+, 4,1
the first "111110011" is combined with the one control signal('1') in MSB and eight user data bits in (7 downto 0(LSB))
"111110011" => '1'(as a Ctrl) & "111"(HGF) &" 10011"(EDCBA).
I feel need to talk about the control signal. when the control signal is 1 means that the data field is not a data but a control(for exam. comma char) data.
the second "0001010011" in a comment, that is the input 10b code. also it can be read as the index of the look-up table for decoding."jhgfiedcba"
"0001010011" => "0001"(jhgf) & "010011"(iedcba).
the 3rd "-K19.7+" means that I show before time.
the 4th 4,1 in a comment means that 4th index of the total code table and the first index of the control code table;
another example of "x,y" is shown as follows.
-K28.1+, 180,35 => 180th of the total code table, and 35th of the control table. +D10.6+, 213,178 => 213th of the total code table, and 178th of the data table.