8b_10b编码介绍:维基百科

8b_10b编码标准:“Standard for High Performance Serial Bus (High Speed Supplement)],” in IEEE Std 1394b-2002 (Amendment to IEEE Std 1394-1995) , vol., no., pp.1-356, 14 Dec. 2002, doi: 10.1109/IEEESTD.2002.94221.

我在学习hdmi 的时候不太看得懂8b_10b编码,就上网查了一下,学到了很多,在此记录学习中遇到的难点,希望大家批评指正。

一、8b_10b编码主要逻辑就是把8b(256个状态)转换为10b,这个主要逻辑都要满足的,还有一些次要逻辑,有特征字( special characters)和控制字(control coding)等,这些次要逻辑负责错误检测,同步等。在这统称为次要逻辑是因为我看到的一些代码其将用不到的逻辑状态阉割掉了,我的理解是:这些次要逻辑按需使用就行。

例如我用quartus 例化的8b_10b coder 的IO为:信息来源:

8B10B Encoder/Decoder MegaCore Function User Guide

 然而在hifpga上看到的IO 

来源:详解FPGA实现8b10b编码原理(含VHDL及verilog源码)实在是能力有限,不会用opencore

module encode (datain, dispin, dataout, dispout) ;
  input [8:0]   datain ;
  input         dispin ;  // 0 = neg disp; 1 = pos disp
  output [9:0]  dataout ;
  output        dispout ;

两者IO存在巨大区别。

二、另一个是编码中的一个小细节,就是编码中的字母不是按字母的顺序 

来源:8b_10b编码标准:“Standard for High Performance Serial Bus (High Speed Supplement)],” in IEEE Std 1394b-2002 (Amendment to IEEE Std 1394-1995) , vol., no., pp.1-356, 14 Dec. 2002, doi: 10.1109/IEEESTD.2002.94221.

 其中的ouput 顺序是abcdei fghj,为什么要强调这一点是因为

 3b转4b中有一个逻辑是:A7 replaces P7 if the following is true:

 (rd<0)? (e==1 && i==1): (e==0 && i==0) 


版权声明:本文为m0_57113037原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/m0_57113037/article/details/120620612