serdes 8b10
时间: 2023-07-15 18:13:20 浏览: 54
SerDes是一种串行器/解串器,用于将并行数据转换为串行数据,或将串行数据转换为并行数据。其中,8b10b编码是一种常用的串行数据编码方式,它将8个数据位和2个控制位组成10位数据块,以此来保证传输的稳定性和可靠性。8b10b编码在高速串行通信中广泛使用,例如PCI Express、SATA、USB3.0等标准中都采用了该编码方式。
相关问题
serdes 8b10编码推导
SERDES(Serializer/Deserializer,串行器/解串器)技术是一种将并行数据转换为串行数据或将串行数据转换为并行数据的技术。 在数字通信系统中,SERDES 技术经常被用于高速数据传输,这是因为串行传输技术可以更好地抵抗信道干扰,同时还可以实现更高的数据传输速率。
8b10b 编码是一种常用的 SERDES 技术,它可以将每 8 位并行数据编码为 10 位串行数据。这种编码方式的主要目的是通过增加冗余位来实现更可靠的传输。在 8b10b 编码中,每个 8 位并行输入数据被映射到一个 10 位的编码字,其中包括 2 位控制位和 8 位数据位。
下面是 8b10b 编码的推导过程:
1. 将 8 位并行输入数据分成两组,每组 4 位。我们称这两组为 D[7:4] 和 D[3:0]。
2. 对 D[7:4] 和 D[3:0] 进行编码,生成两个 5 位的编码字 C[4:0] 和 C'[4:0]。
3. 将 C[4:0] 和 C'[4:0] 串联起来,生成一个 10 位的编码字,其中 C[4:0] 作为高 5 位,C'[4:0] 作为低 5 位。
4. 在生成的 10 位编码字中添加两个控制位 K 和 K'。控制位的选择基于编码字中 1 的个数,以保证编码字中 0 和 1 的数量大致相等。例如,如果编码字中有 5 个 1,则 K 和 K' 都设置为 0,否则都设置为 1。
5. 将 10 位编码字作为串行数据进行传输。
6. 在接收端,将接收到的 10 位串行数据分成两组,每组 5 位。
7. 对每组 5 位数据进行译码,得到两个 4 位的并行输出数据 D[7:4] 和 D[3:0]。
通过这样的编码和译码过程,8b10b 编码可以实现更可靠的数据传输,同时还可以支持高速数据传输。
serdes 8b10b 编码公式
SerDes 8b/10b编码器的公式如下:
对于给定的8个输入比特,编码器将其转换为10个输出比特。每个输入比特都被编码为一个5位符号,这5位符号中的前4位表示数据,最后1位表示控制字符。对于每个输入比特,编码器生成一个控制字符,这个控制字符用于检测错误和保持时钟同步。
具体来说,编码器将每个输入比特映射到一个5位符号,映射规则如下:
- 对于奇偶校验位为0的输入比特,映射为D.xx.x(D表示数据位,.表示任意控制字符);
- 对于奇偶校验位为1的输入比特,映射为K.xx.x(K表示控制字符,.表示任意控制字符)。
其中,xx是一个由输入比特和前面已经编码的比特决定的控制字符。
对于控制字符,编码器使用以下规则:
- 如果连续两个控制字符之间有至少5个数据字符,则编码器插入一个特殊控制字符(K.28.5)以保持时钟同步;
- 如果连续两个控制字符之间有不足5个数据字符,则编码器插入一个特殊控制字符(K.28.7)以检测错误。