简介8 b / 10 b是许多高速串行总线使用的编码机制,例如USB 3.0、1394b,串行ATA,PCI Express,Infini-band,光纤通道,RapidIO和其他总线或网络。
8b / 10b编码方法最初是由IBM在1983年发明的,并应用于ESCON(200M互连系统),并在2000年出版了“ Research and Development”。
Al Widmet和Peter Franaszek的IBM出版物。
8 b / 10 b编解码器可以广泛使用,主要具有以下优点:使用嵌入式时钟,可以保持DC平衡;可以更有效地检测错误;隔离数据符号和控制符号。
为了在USB 3.0中实现8b / 10b的数据编码和解码,使用查找表方法和组合逻辑的组合将8b / 10b的编码和解码分解为5b / 6b的编码和解码以及3b / 10b的编码和解码。
b / 4 b对于编码和解码,使用Verilog HDL语言实现算法的描述,并通过Modelsim进行仿真,然后在FPGA上实现特定的硬件电路。
它使用500 MHz时钟信号进行了测试,可满足5 Gb / s的USB 3.0传输速率。
这种创新的方法使用少量逻辑来实现8 b / 10 b编解码器,并满足USB 3.0高速数据传输的要求。
1 USB 3.0中8 b / 10 b编码和解码的原理。
在USB 3.0的层次结构中,发送方首先对数据或控制字(K)进行加密,然后将加密后的8b数据编码为10b并发送出去。
接收端首先解码接收到的10b数据以获得8b数据,然后解扰以获得原始数据。
8 b / 10 b编码包含256个数据字符和12个控制字符的编码。
数据字符和控制字符分别用Dx,y和Kx,y表示,其中x代表对应于8b的低5位数字(EDCBA)的十进制值; y代表对应于8 b(HGF)的高3位的十进制值。
当发送方进行编码时,根据编码表,低5位变为6位,高3位变为4位。
编码完成后,将10个并行字符转换为串行字符并发送出去。
解码时,接收端首先进行串并转换,得到10b个字符,然后将这些字符分解为6b和4b,并根据相应的编码表检查其是否有效,最后完成解码。
编解码器转换过程如图1所示。
视差(disparity)表示“ 1”与“ 1”之间的差。
以及“ 0”和“ rdquo”的数量编码后在一个码字中。
“ 1”表示+1表示+1,“ 0”表示+1。
用-1表示。
所有“ +1”的总和为0。
和“ -1”表示在代码字中显示。
8 b / 10 b编码的显示采用3种状态:“ + 2”和“ +2”。
(6 1s和4 0s),“ 0”和“ rdquo”; (5 0和5 1s),“ -2& rdquo; (6 0和4 1)。
运行视差RD(Running Disparity)是一个二进制参数,只有两个状态,正和负,用于编码模式控制。
在8 b / 10 b编码表中,将10 b字符分为两个代码表(RD-和RD +)。
在编码过程中,通过判断正RD值或负RD值来选择相应的代码表。
如果当前RD为负(RD-),则编码器将在RD编码表中选择相应的输出值,并检测相应的输出10 b值。
如果disp = 0,则RD将保持不变,而RD-,否则为RD-。
值将变为RD +;如果当前RD为正(RD +),则在RD +编码表中选择相应的输出值,并检测与该输出值相对应的disp;如果disp = 0,则RD保持不变并保持RD +,否则RD为负RD-。
简而言之,当disp为正或负时,RD交替变换。
这种方法是为了使0和1分布更均匀,并减少差分信号的DC分量。
2 8b / 10b编码器8b / 10b编码器的设计是将输入的8b数据分别分为5b / 6b和3b / 4b的低5位和高3位,并根据编码表。
由于存在一些特殊的3b / 4 b编码,因此需要特殊的3 b / 4 b编码模块。
选择编码后的数据以通过RD控制模块输出,此时的RD状态将反馈到下一轮编码。
对于8 b控制输入,由于只有12个有效的K控制代码,因此需要用于无效K代码的识别模块。
因此,编码器分为5个模块:5 b / 6 b编码,3 b / 4 b编码,特殊3 b / 4 b编码,无效K代码检测,RD_controller,前4个部分在RD_controller的控制下并行编码,如图2所示。
在该图中,kin是8 b控制输入,而data_in是8 b