武汉理工大学毕业设计(论文)
成帧字符。
4) 错误检测
该编码方案的一个间接好处是它可以帮助检测大多数的发送错误。接收器可以检查“运行不一致状态(running disparity state)”错误,即无效符号的接收。通过该运行的不一致状态机制,所发送的数据比特流就可以保持“1”和“0”的平衡。接收器检查从链路初始化开始“1”的总和与“0”的总和之差,并确保该值尽可能为“0”。如果该值不为“0”,则检测到并报告不一致状态错误,这意味着出现了发送错误。
8B/10B编码方案也有缺点,由于在发送前将每个8比特字符扩充为10比特符号,所以实际的发送性能会降低25%,或者说总体开销增加了25%。
2.1.2 10B符号的属性
对于10B符号的发送而言,不管发送那种8B字符,其中“1”的品均数目等于“0”的数目,就说符号发送是DC平衡的。
比特流包含连续“1”和“0”绝对不会多于5个(有限运行长度)。每个10B符号包含:
(a) 4个“0”和6个“1”(必须不连续); (b) 6个“0”和4个“1”(必须不连续); (c) 5个“0”和5个“1”(必须不连续)。
每个10B符号都分成两个部分:第一部分6比特宽,第二部分4比特宽。
(d) 6比特部分包含的“1”或“0”不多于4个; (e) 4比特部分包含的“1”或“0”不多于3个。
不具备有以上属性的所有符号都被认为是无效的,并且接受器将其视为错误。编码时一个8B字符和一个信号一起被提交给8B/10B编码器,该信号指明该字符是数据(D)还是控制(K)字符。编码器输出等同的10B信号和一个当前运行不一致状态(CRD)符号,该CRD符号代表了该传输链路字链路初始化依赖所传输的“1”和“0”的总数。
2.1.3 8B字符准备
8B/10B装换查找表使用特殊标记Dxx.y(数据字符)和Kxx.y(控制字符)来代表所有的8B字符。图3展示了8B字符转换成其特殊标记的步骤。
2.1.4 不一致性(Disparity)
字符不一致性是指10B符号中“1”的数目和“0”的数目不一致。有下面几种情况: 1)符号中的“0”比“1”多时,该符号不一致性为负(-)(如10’b0101000101);
9
武汉理工大学毕业设计(论文)
2)符号中的“1”比“0”多时,该符号不一致性为正(+)(如10’b0101000101); 3)符号中“1”和“0”的数目相同时,该符号不一致性为中性(如10’b0110100101)。 每个10B符号都包含以下数目的“1”和“0”(必须不连续)之一:
(a) 4个“0”和6个“1”(正不一致性); (b) 6个“0”和4个“0”(负不一致性); (c) 6个“0”和4个“0”(负不一致性)。
8B字符
分成子部分
对调子部分
添加每个部
分的十进制值 D/K
最终标记
D/Kxx.y
D10.3
xx
.
y
D
10.3
D/K# E D C B A H G F D 01010 011
D/K# H G F E D C B A D 011 01010
D/K# 8B名称
7 6 5 4 3 2 1 0 示例数据(8’h6A) D 011 01010
图3 8B字符转换成其特殊标记步骤
2.1.5 CRD(当前运行不一致状态)
CRD反映了自链路初始化依赖在链路上所发送的“1”和“0”的总数,它具有以下特性:
1) 其当前状态指出了字链路初始化依赖所发送的“1”和“0”是否平衡; 2) CRD的初始状态(传输任何字符前)可以是正或负;
3) CRD当前状态可以为正(如果传输的“1”比“0”多)或负(如果传输的“0”比“1”多);
4) 通过一次将当前CRD状态计算在内的表查找来转换每个字符;
5) 编码每个新字符后,CRD或者保持不变(如果新生的10B字符具有中性不一致性)或者变为相反的极性(如果新生成的字符具有正或负不一致性)。
10
武汉理工大学毕业设计(论文)
2.1.6 编码过程
如图4所示,编码通过并执行两次表查找来完成。
来自扰码器的字节
8B字符
并行到串行转换器 J h g f i e d c b a 使用发送时钟将 串行流定时输出 到发送器
CRD计算器 j h g f i e d c b a K#
D 计算出 的CRD 当前运行不一致状 态(CRD)
7 6 5 4 3 2 1 0 H G F E D C B A D 用于D字符的5B/6B查找表 用于K字符的5B/6B查找表 K# D/K# D/K#
D 用于D字符的3B/4B查找表 用于K字符的3B/4B查找表 图4 8B到10B编码器
1) 首次查找,向5比特到6比特表提交3个元素,进行查找(参见附录A): (a) 8B字符的5比特部分(比特A到E); (b) 数据∕控制(D/K#)指示符; (c) CRD当前状态(正或负);
最终表查找产生10B符号的高端6比特(比特abcdei)。
2) 第二次查找,向3比特到4比特表提交3个元素,进行查找(参见附录A): (a) 8B字符的3比特部分(比特F到H);
11
武汉理工大学毕业设计(论文)
(b) 相同的数据∕控制(D/K#)指示符; (c) CRD当前状态(正或负,来自于首次查找); 最终表查找产生10B符号的低端4比特(比特abcdei)。
8B/10B编码器根据生成的10B符号来计算新的CRD,并将该CRD提供给下个字符的8B/10B使用。如果生成的10B符号是中性的(即“1”和“0”数目相等),那么CRD的极性保持不变。如果生成的10B符号是“+”或“-”,那么CRD转变成其相反状态。如果CRD当前为“+”或“-”,并且生成的下一个10B符号其极性和CRD相同,这就是一个错误。除非下一个符号具有中性不一致性,在这种情况下,该CRD应保持不变。
8B/10B编码器将符号送入并行到串行转换器,该转换器将10B符号以abcdeifghj的比特次序定时输出。
实际上,最后的并行到串行的转换与8B/10B编、解码功能并无多大联系,所以整个系统并没有涉及到这部分功能。
2.1.7 发送示例
表2展示了三个字符的编码和发送:第一个是控制字符8’hBC(K28.5),第二个字符还是8’hBC(K28.5),第三个字符是数据字符8’h6A(D10.3)。
表1 示例8B字符信息
D/K# 控制(K) 数据(D) 十六进制字节 BC 6A 二进制比特 101 11100 011 01010 字节名 K28.5 D10.3 CRD-abcdei fghj 001111 1010 010101 1100 CRD+abcdei fghi 110000 0101 010101 0011 表2 发送过程示例
所要发送字符 CRD 发送的比特流 - 字符 K28.5 (8’hBC) 生成 001111 1010 CRD为+ CRD + 字符 K28.5(8’hBC) 生成 110000 0101 CRD为+ CRD - 字符 D10.3 (8’h6A) 生成 010101 1100 CRD为中性 CRD - (a) 如果编码时初始CRD为负,则将K28.5编码为8’h001111 1010(正不一致性),从而将CRD从负变为正;
(b) 如果编码时初始CRD为正,则将K28.5编码为8’h110000 0101(负不一致性),
12
武汉理工大学毕业设计(论文)
从而将CRD从负正为负;
(c) 将D10.3编码为8’h010101 1100(中性不一致性)。因此下次编码时CRD保持不变。 注意,整个发送过程中,生成的符号流是DC平衡的。
PCI Express所定义的控制字符只有有限的几个,这些字符不会由发发送器逻辑进行加扰,但是也被编码为10B符号。因为不存在加扰,所以接收器逻辑可以轻松的在进入的符号流中检测到这些符号。这些控制字符在附录B中定义。
2.2 解码原理
2.2.1 概述
实际上,解码就是编码的反过程,原理没有太大的差异,这里只简单介绍解码的过程。
D/K# 送去扰码器的字节
8B字符 H G F E D C B A
CRD计算器 10B编号
来自弹性缓冲区
j h g f i e d c b a
用于D字符的3B/4B查找表 用于K字符的3B/4B查找表 计算出 的CRD 用于D字符的5B/6B查找表 用于K字符的 5B/6B查找表 当前运行不一致状态
(CRD)
发往错误报告
D/K# 7 6 5 4 3 2 1 0
图5 10B到8B解码器
13
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库PCIE接口8B10B编、解码的实现(4)在线全文阅读。
相关推荐: