随着大数据的兴起以及信息技术的快速发展,数据传输对总线带宽的要求愈来愈高,并行传输技术的发展受到了时序同步困难、信号偏移严重,抗干扰能力弱以及设计复杂度高等一系列问题的阻碍。与并行传输技术相比,串行传输技术的引脚数量少、扩展能力强、采用点对点的链接方式,并且能提供比并行传输更高带宽,所以现已普遍用于嵌入式高速传输领域。前端
Xilinx公司的许多FPGA已经内置了一个或多个MGT(Multi-Gigabit Transceiver)收发器,也叫作SERDES(Multi-Gigabit Serializer/Deserializer)。MGT收发器内部包括高速串并转换电路、时钟数据恢复电路、数据编解码电路、时钟纠正和通道绑定电路,为各类高速串行数据传输协议提供了物理层基础。MGT收发器的TX发送端和RX接收端功能独立,并且均由物理媒介适配层(Physical Media Attachment,PMA)和物理编码子层(Physical Coding Sublayer,PCS)两个子层组成,结构以下图所示编程
PMA子层内部集成了高速串并转换电路,预加剧电路、接收均衡电路、时钟发生电路和时钟恢复电路。串并转换电路的做用是把FPGA内部的并行数据转化为MGT接口的串行数据。预加剧电路是对物理链接系统中的高频部分进行补偿,在发送端增长一个高通滤波器来放大信号中的高频份量进而提升信号质量,但预加剧电路会致使功耗和电磁兼容(Electro Magnetic Compatibility,EMC)增长,因此如非必要通常状况下都把它屏蔽掉。接收均衡电路主要用来补偿由频率不一样引发的阻抗差别。时钟发生电路与时钟恢复电路在发送端把时钟和数据绑定后发送,在接收端再从接收到的数据流中恢复出时钟,这样能够有效地避免在高速串行传输的条件下时钟与数据分开传输带来的时钟抖动问题。api
PCS子层内部集成了8B/10B编/解码电路、弹性缓冲电路、通道绑定电路和时钟修正电路。8B/10B编/解码电路能够有效的避免数据流中出现连续的‘0’或者‘1’,以保证数据传输的平衡性。通道绑定电路的做用是经过在发送数据流中加入K码字符,把多个物理上独立的MGT通道绑定成一个时序逻辑上同步的并行通道进而提升传输的吞吐率。弹性缓冲电路用来解决恢复的时钟与本地时钟不一致的问题并能够经过对缓冲区中的K码进行匹配对齐来实现通道绑定功能。安全
下面将详细讨论SERDES用到的各类关键技术。数据结构
简化的SERDES结构图以下图所示ide
SERDES的优点在于其带宽很高,引脚数目较少并且支持目前多种主流的工业标准,好比Serial RapidIO ,FiberChannel(FC),PCI-Express(PCIE),Advanced Switching Interface,Serial ATA(SATA),1-Gb Ethernet,10-Gb Ethernet(XAUI),Infiniband 1X,4X,12X等。它的线速度能达到10Gb/s甚至更高,主要缘由是由于它采用了多种技术来实现这些功能。工具
若是输入的串行数据流比特率为x, 那么可使用多重相位以x/4的低速时钟来从新组织数据流。输入的数据流直接链接到4个触发器,每个触发器运行在时钟的不一样相位上(0、90、180以及270)。多重相位技术的数据提取电路以下图所示性能
对应的时序图以下图所示学习
每一个触发器的输出链接到时钟相位小90度的触发器,直到到达时钟相位为0 的触发器。这样,输入数据流就被分解成了1/4输入速率, 4bit宽度的并行数据流。测试
在上述的示例电路中,相位等差排列,时钟频率严格等于输入数据流速率的1/4。怎样才能实现呢?咱们必须和输入的数据流保持锁定。咱们可使用典型的锁相环来实现这一点,可是锁相环须要一个全速率的时钟,这是很难知足的。锁相环是高速SERDES设计中最重大的改进之一,它主要用于时钟和数据恢复。通常的锁相环须要有运行在数据速率上的时钟,不过能够经过多种技术来避免这种要求,包括分数鉴相器、多重相位锁相环、并行采样以及过采样数据恢复。
线路编码机制将输入的原始数据转变成接收器能够接收的格式,并保证有足够的切换提供给时钟恢复电路。编码器还提供一种将数据对齐到字的方法,同时线路能够保持良好的直流平衡。线路编码机制也可选择用来实现时钟修正、块同步、通道绑定和将带宽划分到子通道。线路编码机制主要有两种方式,分别为数值查找机制和扰码机制。
8b/10b编码机制是由IBM开发的,已经被普遍采用。 8b/10b编码机制是Infiniband,千兆位以太网, FiberChannel以及XAUI 10G以太网接口采用的编码机制。它是一种数值查找类型的编码机制,可将8位的字转化为10位符号。这些符号能够保证有足够的跳变用于时钟恢复。下表是两个8-bit数据编码为10-bit数据的例子。
在上面的例子中8-bit数据会致使线路很长时间不出现切换而丢失同步信息。 因此8B/10B编解码电路采用了一种叫作运行不一致(Running Disparity)的技术来保证线路良好的直流平衡性能。
8B/10B编解码机制中的直流平衡是经过一种称做“运行不一致性”的方法来实现的。实现直流平衡的最简单办法是:只使用有相同个数0和1的符号,可是这将限制符号的数量。而8B/10B则为各个数值分配了两个不一样的符号。其中一个符号有6个0和4个1,这种状况称为正运行不一致符号,简写为RD+,另外一个符号则有4个0和6个1,这种状况称为负运行不一致符号,简写为RD-。编码器会检测0和1的数量,并根据需求选择下一个符号,以保证线路的直流平衡。下表给出了一些符号示例
“运行不一致性”技术的另外一个优势是若是数据违反了运行不一致性规则,那么接收器能够经过监控输入数据的运行不一致性规则来检测数据中的错误。
8B/10B编解码技术将12个特殊字符编码成12个控制字符,一般也称做“K”字符。这些控制字符用于数据对齐,控制以及将带宽划分红为子通道。下表是12种控制字符的编码状况
Comma指的是用于对齐序列的一个7-bit符号。数据的对齐是解串器的一项重要功能,下图给出了串行流中的有效8B/10B数据示例。
在Serdes中,数据被Comma序列隔开,Comma序列能够自行设置,也能够预先定义好。接收器在输入数据流中扫描搜寻特定的比特序列。若是找到序列,解串器调整字符边界以匹配检测到的Comma字符序列。扫描是连续进行的,一旦对齐肯定,全部后续的Comma字符均会发现对齐已经肯定。固然,在任意的序列组合里comma字符序列必须是惟一的。
例如,若是咱们使用符号K28.7做为Comma字符,则咱们必须确保任意有序符号集xy中都不包含比特序列K28.7。使用预约义协议时是不会出现这个问题的,由于Comma字符都是已经定义好的。
经常使用的K字符是所有控制字符中的一个或多个特定子集。这些子集中包含K28.1,K28.5,K28.7,这些字符的头7位都是1100000。这种比特序列模式只能够在这些控制字符中出现。其余任意的字符序列或者其余K字符都不包含这一比特序列。所以,这些控制字符是很是理想的对齐序列。在使用自定义协议的状况下,最安全且最经常使用的解决方案是从比较著名的协议中“借”一个序列。千兆位以太网使用K28.5做为Comma字符。鉴于这个缘由,尽管在技术上还有其余的选择,这个字符仍是常常被看成Comma字符。
控制字符的命名方式源于编码器和解码器构建方式,例如: D0.3和K28.5,下图描述了这种方法。
输入的8位比特被分红5位和3位的数据分别进行5B/6B编码和3B/4B编码,这就是其名字的来源。举例说明, Dx.y表示最低5位的数值对应十进制值x,而最高3位的数值对应十进制值y的输入字节。字母D表示数据字符,而字母K表示控制字符。另外一种命名方式中, 8位比特对应于HGF EDCBA,而10位比特对应于abcdei fghj。开销是8b/10b机制的一个缺陷。为了得到2.5Gbit的带宽,须要3.125Gb/s的线路速率。但使用扰码技术能够很容易地解决时钟发送和直流偏置问题,而且不须要额外的带宽。
扰码是一种将数据从新排列或者进行编码以使其随机化的方法,可是必须可以解扰恢复。咱们但愿打乱长的连0和长的连1序列,将数据随机化。显然,咱们但愿解扰器在解扰时不须要额外的对齐信息。具备这种特性的码称做自同步码。
一个简单的扰码器包含一组排列好的触发器,用于移位数据流。大部分的触发器只须要简单地输出下一个比特便可,可是某些触发器须要和数据流中的历史比特相与或者相或。下图描述了此概念。
扰码方法一般是伴随着多项式出现的,由于扰码的数学原理中使用了多项式。多项式的选择一般是基于扰码的特性,包括生成数据的随机度,以及打乱长的连0、连1的能力。扰码必须避免生成长的连0或连1序列。
咱们但愿可以加快触发器的时钟速率。可是想要达到诸如10Gb/s的高速率不是能轻易办到的。可是,仍是有方法能够将任意形式的串行数据并行化为y位宽度的并行数据,从而加快进程。以下图所示。
扰码器消除了长连0、连1序列以及其余会对接收器接收能力有负面影响的序列。可是线路编码机制(例如: 8B/10B)的其余功能不是由扰码器提供的,包括:
一、 字对齐(Word Alignment)
二、 时钟修正机制(Clock Correction Mechanism)
三、 通道绑定机制(Channel Bonding Mechanism)
四、 子通道生成(Sub-Channel Creation)
某些状况下后三种功能多是不须要的,而字对齐一般是必要的。若是线路编码使用了扰码,那么字对齐也必须采用相应的方法。例如,咱们能够将某些数值排除在允许的数据(或者有效载荷)数值以外。此后,咱们可使用这些禁用的值来建立一个比特流,这个比特流不会在序列的数据部分中出现。以下图所示
一般,由于存在不容许的数值,因此须要设计数据流中不能出现连0或连1的长度。长的连0、连1会被扰码器打乱,并在解扰时进行恢复。接收数据流的解扰逻辑在数据流中搜寻这些符号并对齐数据。相似的技术还可用于创建其余特性。
4B/5B和8B/10B是相似的。顾名思义,这种机制将4个比特编码成5个比特。4B/5B的编码器和解码器要比8B/10B简单一些。4B/5B的控制字符要少一些,而且不能处理直流平衡和运行不一致性问题。因为编码开销相同可是功能却比较少,因此4B/5B编码机制并不常用。它的最大优点是设计的尺寸,不过随着逻辑门价格的下降这个优点也再也不明显。4B/5B仍用在各类标准中,包括低速率版本的FiberChannel、音频工程协会-10(AES-10)以及多通道数字音频接口(MADI,一种数字音频复接标准)。
还有一种新的编码方式称做64B/66B 。咱们能够认为64B/66B是8B/10B的简化版本,它具备更低的编码开销,可是实现细节至关不一样。在现有的技术用户需求下,人们开发出了64B/66B机制。10G以太网协会要求实现基于以太网的10Gb/s通讯。他们能够经过使用4条有效载荷速率为2.5Gb/s、线路速率为3.125Gb/s的链路来实现,但此时SERDES已经能够在单个链路上实现10Gb的解决方案。此时新型SERDES的运行速率已经能够略高于10Gb/s了,但还不能达到12.5Gb/s以支持8B/10B的开销。
更多的64B/66B编解码技术的实现细节请查看参考文献1。
包是一种确切定义的字节集合,包括头部、数据和尾部。
注意,定义中没有包括源地址和目的地址、 CRC校验码、最小长度、或者开放系统互连协议层。包只不过是一个定义了起点和终点的数据结构。局域网的包一般有不少特性,可是其余用途的包则一般要简单得多。
包用于各类场合下的信息传递。例如汽车动力布线、手机以及家庭娱乐中心等等。可是,包和千兆位串行链路有什么关系呢?
经过千兆位串行链路传输的数据多数都是嵌入在某种类型的包中的。Serdes天然须要一种将输入的数据流对齐成字的方法。若是系统须要时钟修正,还必须发送特殊的比特序列或者Comma字符。 Comma字符是指示帧的开始和结束的自然标识。若是须要时钟修正,时钟修正序列经常是比较理想的字符。加入有序集合用于指示包的开始、结束以及包的特殊类型以后,咱们就有了一个简单而又强大的传输通道。
idle符号或序列是包的概念的另外一要点。若是没有信息须要发送,则发送idle符号。数据的连续传输保证链路可以维持对齐,同时PLL能够保持恢复时钟锁定。下图给出了一些不一样标准的包格式。
千兆位级收发器的输入时钟、或是参考时钟的规格定义是很是严格的。其中包含很是严格的频率要求,一般用每百万次允许频率错误的单位PPM来定义。抖动要求也是十分严格的,一般用时间(皮秒)或者时间间隔(UI)定义。
如此严格的规定才使得PLL和时钟提取电路可以正常工做。一般系统的每个印刷电路板都须要有一个精确石英晶体振荡器供MGT使用。这些晶体振荡器的精确度比大多数用在数字系统中的晶体振荡器要高一个级别,并且价格也要高出一截。不少状况下,通常的时钟发生芯片和PLL由于带有很大的抖动,而不能用于MGT。
千兆位Serdes对传输时钟有很是严格的抖动要求,因此一般不能将恢复时钟做为传输时钟。每个PCB集合都有惟一的振荡器和惟一的频率。若是两个1GHz的振荡器仅仅有1PPM的频差,同时提供1/20th的参考时钟,则数据流的时钟每秒钟可能会增长或者缺失20,000个周期。所以,在8B/10B编码的系统中,每秒将会额外增长或者损失2万个符号。
大多数的Serdes都有时钟修正功能。时钟修正须要使用惟一的符号或者符号序列,它们在数据流中是不会出现的。由于时钟修正是对齐的后续处理,因此能够比较容易地经过保留一个K字符、或者一组有序的K字符、或者一个时钟修正数据序列来实现。
某些状况须要使用4个符号的时钟修正序列。时钟修正经过检测接收FIFO来完成其工做。若是FIFO接近于满,则查找下一个时钟修正序列而不将数据序列写入FIFO。这种操做称做丢弃。相反地,若是FIFO接近于空,则查找下一个时钟修正序列,同时它会被两次写入FIFO。这种操做一般也称做重复。
时钟修正进行的频数必须足够多,从而能够经过丢弃或者重复来补偿时钟的差别。时钟修正序列和idle序列一般也是同样的。
有些系统并不须要时钟修正。例如,在不少芯片到芯片(chip-to-chip) 的应用中,同一个振荡器为全部收发器提供参考时钟。相同的参考时钟和相同的速率意味着不须要进行时钟修正。一样,若是全部接收电路的时钟都来自恢复时钟,那么时钟修正也是不须要的。若是FIFO的写入速率和读出速率相等,也没有必要进行时钟修正。
若是全部的传输参考时钟都是经过一个外部的PLL锁定在一个公共的参考频率上,那么也不须要时钟修正。对于高精确度的串行数字视频链路来讲,这是经常使用的一种结构。全部的传输时钟都是从一个公共的视频参考中获取的。没法锁定到这个信号每每将致使自由滑动的视频流,相对于其余的锁定信号。在1G或2G速率上实现是比较简单的,可是设计一个可以用于10Gb链路且有足够精度的参考时钟是很是有挑战性的。
下表给出了在不一样晶振频率和晶振精度下时钟修正序列之间的最大时钟周期数。
接收和发送缓冲器,即FIFO,是千兆位级收发器的主要数字接口。 FIFO一般是数据写入和读出的地方。发送端一般有一个小型的FIFO,它要求读取和写入的时钟是等时同步(isochronous)的(等时同步是指频率匹配但相位不必定匹配)。
若是tx_write和tx_read选通讯号不是工做在精确相同的频率,则一般采用另外的方法。此时,须要使用一个较大的FIFO,同时要求持续不断地检测FIFO的当前状态。若是FIFO被不断地填充,将最终致使溢出。在这种状况下,必须在输入数据流中检测idle符号。若是检测到idle符号,则不把idle符号写入FIFO。
反过来,若是FIFO运行较慢则在输出数据流会出现idle符号,数据被传送给用户。此时写指针保持不动,不断重复idle符号。使用idle符号而不使用字节对齐、 Comma字符、时钟修正序列或者通道绑定序列,这一点是很是重要的。为了保证必定的发送速率,全部这些序列都是必需的。
相对于发送缓冲器而言, MGT内建的接收FIFO一般须要有更深层次的考虑。它的主要目的是为了实现时钟修正和通道绑定。
有时候咱们须要传送的数据会超过一条串行链路的承载能力。在这种状况下,能够同时使用多条链路来并行传输数据。若是使用这种方式,则输入的数据流必须是对齐的。这个过程一般称做通道绑定。通道绑定能够吸取两个或多个MGT之间的误差,将数据提交给用户,就像只使用一条链路进行传送同样。通道绑定的过程以下图所示
不一样MGT间数据误差的一些主要缘由:
一、 传输通道长度的误差
二、 传输通道的有源中继器
三、 时钟修正引发的误差
四、 锁定和字节对齐引发的时间误差
由于通道绑定须要涉及到收发器之间的通讯,因此具体的细节因厂家、器件而异。可是它们有一些共同的特性,例如:指定一个通道做为主通道,指定从通道,还可能须要指定前向从通道。三级通道绑定包括一个主通道和前向从通道,因此一般也称为两-跳通道绑定。
通道绑定序列必须是惟一的并且是可扩展的,由于可能会添加或丢弃通道绑定序列,因此下行链路中必须忽略。一般时钟修正序列和通道绑定序列之间会有最小间隔符号数。不少基于8B/10B的标准协议规定时钟修正序列和通道绑定序列之间至少须要间隔四个符号。所以,四个符号或字节是比较经常使用的间隔距离。
千兆位级Serdes的物理实现广泛采用基于差分的电气接口。经常使用的差分信号方法有三种:低电压差分信号(LVDS)、低电压伪射级耦合逻辑(LVPECL)和电流模式逻辑(CML)。千兆位链路一般使用CML。CML采用最经常使用的接口类型,而且一般都会提供AC或DC端接以及可选的输出驱动。部分输入还提供了内建的线路均衡和/或是内部端接。一般端接的阻抗也是可选的。
下图给出了一个CML型的驱动电路。这些高速驱动电路的原理很是简单。两个电阻中的一个始终都有电流经过,而且此电流和经过另外一个电阻的电流不一样。
下图给出了一个MGT接收器的示意图。
千兆位级驱动器最重要的特性可能就是预加剧的能力。预加剧是在转变开始前的有意过量驱动。若是没有相关的经验,这看起来会像是一个缺陷;看起来就象是一个很差的设计可能发生的上冲和下冲。为了弄懂这么作的意图,咱们须要理解符号间干扰。
若是串行流包含多个比特位时间的相同数值数据,而其后跟着短比特位(1或2)时间的相反数据数值时,会发生符号间干扰。介质(传输通道电容)在短位时间过程当中没有足够的充电时间,所以产生了较低的幅度。符号间干扰的示意图以下:
在符号间干扰的状况下,长时间的恒定值将通道中的等效电容彻底的充电,在紧接着的相反数据数值位时间内没法反相补偿。因此,相反数据的电压值有可能不会被检测到。这个问题的解决方法是:转变开始时加入过量驱动,而在任意的连续相同数值时间内减小驱动量,这种过程有时也称做去加剧。
数字设计工程师和PCB设计师们曾经一度认为布线只不过是简单的互连或连线。实际上,原型建造时一般采用一种叫作蛇行布线的技术。实际中并非必定要运用传输线和传输线理论。若是线路的传输延时只是信号上升时间中的很小一部分,咱们能够不使用传输线理论。
可是随着信号的传输速率的增大,PCB设计过程当中就必须使用传输线理论。对于千兆位级操做而言,不只包括传输线和阻抗控制,还包括差分线路对的阻抗控制。差分线路对阻抗匹配的两条线路是相邻的。两条线路之间的间隔使得两线路相互耦合。若是两线路相隔较远,则称做弱耦合。若是相隔较近,则为强耦合。
若是给定线路的长度以及叠层结构(会带来给定的阻抗),耦合还会影响线路的阻抗。相同几何形状的差分线路对也会有不一样的阻抗。阻抗的精确大小因材料而异,可是板制做厂商一般会提供精确的数据。下表给出了受控阻抗差分线路的各类类型。
均衡主要用于补偿由频率不一样而引发的阻抗/衰减差别。均衡器有不少种形式,但整体上能够分为有源和无源两种。
无源均衡器是无源电路,其频率响应能够补偿传输衰减。无源均衡器能够认为是一个滤波器。若是咱们的滤波器可使传输线所使用的各频率经过,而将传输线没有使用的其余频率滤除,那么总体的频率响应就会变得平坦许多。
有源均衡器能够认为是依赖频率的放大器/衰减器。有源均衡器主要有两种:固定形式有源均衡器和自适应有源均衡器。对于任意的输入数据流,固定形式有源均衡器的频率响应都是同样的。
固定形式均衡器的增益/衰减量一般是用户可选择的,或者可编程的。部分均衡器有一个简单的控制参数—n 用于设置高增益或低增益,相似于简单音响系统中的低音设置。还有一些均衡器能够独立设置不一样频率的增益/衰减量,这和复杂音响系统中的均衡设置是相似的。
自适应均衡器(也称学习型均衡器)要复杂的多,自适应均衡器须要分析输入信号并检测哪些频率在传输通道中被削弱。测量和调节是以闭环形式实现的。自适应均衡器的频率响应取决于输入的比特流。
自适应均衡器一般和特殊形式的线路编码机制协同工做。自适应均衡器对于可变通道的链路来讲是最合适的,可变通道能够是可变的电缆长度,或是显著的位置依赖的背板系统。固定形式均衡器比较适合于不变系统中,例如:芯片到芯片,平衡化的背板系统以及固定长度电缆的系统。均衡器一般包含在SERDES的模拟前端,或者做为系统的一个独立部分。
若是系统中电缆要传输的距离很远(远大于相邻底板的距离),那么一般采用光解决方案。使用光纤能够实现多种长距离传输,例如:楼下到楼上,楼与楼之间,街区之间或者城镇之间。
光纤系统使用光信号取代电信号来传输信息。最基本的光纤系统包括发送器或信号源、光纤以及接收器,接收器将光脉冲从新转变为电信号。信号源一般是注入型激光二极管(ILD)或者发光二极管(LED),以下图所示。
光纤中的光脉冲传输是基于全反射定理的。全反射定理:若是入射角大于临界值,则光线不会透射而会所有反射回来。简单的说,光纤能够看做是一个内部全是镜子的弹性管线。光线在管道中不停反射前进,就算管道发生了弯曲,光线也能一直前进到达末端。
光线有两种类型——单模光纤和多模光纤。单模的价格较高,能够传输的距离也较长。多模光纤的价格较低,只能用于短距离传输。
单模光纤的示意图以下图所示
多模光纤的示意图以下图所示
基本的光链接器以下图所示
设计师仍是须要设计一个稳健的系统。首先,他须要检查系统的要求,看是否可以使用经常使用的方法来解决问题。
一种方法是错误检测数据重传。检查输入数据中是否有错。若是发现错误,则发送信息给发送者要求重传数据。错误检测的首选方法是CRC。由于CRC十分经常使用,因此许多SERDES内部都有CRC发生器和检测逻辑。一般重传请求是由上层协议定义的。若是协议支持CRC和重传,或者数据要求正是其所能知足的,那么这种方法将会是最好的选择。
若是状况不是这样的话,设计师还能够有其余的选择。设计师能够建造并测试所设计的系统,以观察其可否正常工做。SERDES发布的BER能够用来肯定测试须要进行到什么程度,因此设计师仍是有一些机动空间的。设计师不可能设计出一个远优于发布数据的系统。除了持续测试直到达到发布的BER,设计师还须要在各类极限状况下进行测试(例如,输入抖动十分靠近容限)。若是给系统设计提供更好的输入流,那么结果会更好。
数据还提供了另外一种值得考虑的选择。多数的数据流都是有模式的,和用于BER测试的伪随机比特流相比,数据流更容易预测。这一点多是好处也多是坏处,这取决于传输通道和均衡器适配数据流的状况。因此必须进行测试和调整。因此建造一个系统并观察其可否正常工做,这种方法并非十分牵强的。尽管如此,若是这种方法会出现操做上的问题,那么前向纠错(FEC)可能会有所帮助。
因为设计师知道可能会发生错误,因此能够经过提供冗余数据位来恢复这些错误。经常使用的方法就是利用一些前向纠错码来对数据流中的错误进行纠正。
前向纠错的定义:添加额外的位,用于帮助恢复错误数据。
考虑一个待传输的数据块,其大小为NxR字节,分为R行,每行N字节。如今给矩阵的每一行附加额外的一个字节,并给矩阵附加额外的一行。这些地方就是额外的位置。
数据块的附加信息就保存在这些额外的位置中。此例中,额外的信息是奇偶位。附加字节的每一位表明此行中各字节对应位的奇偶性。也就是说,P[1][0]是D[1.1][0] D[1.2][0]D[1.3][0] …. D[1.N][0]的奇偶性。而对于额外的行而言,其中的每一位就是对应列中各位的奇偶性。也就是说, P[R+1.0][0]是 D[0.0][0], D[1.0][0] D[2.0][0] ….D[N.0][0]的奇偶性。矩阵的示意图以下图所示。
数据和附加位同时经过链路传输。在另外一侧,接收器会检查矩阵的奇偶性。若是数据的任一位是错误的,那么它会标记出来,并经过行值和列值来肯定位置。只须要简单的取反,便可纠正该位的错误。多位的错误便可能被纠正,也可能会致使混乱并且会阻止其余错误的纠正,这取决于错误发生的位置。
这种方法一般称做简单矩阵奇偶性法,并且也是FEC的最初类型。这也是多数FEC方法基本模块。这个例子是简单易懂的,可是它有局限性。针对恶劣环境和性能很差的传输通道,已经开发出多种FEC 方法,例如Viterbi,Reed-Soloman 和 Turbo 编码。全部这些方法都有强大的纠错能力,可是纠错也是有代价的:
1、运行速度不够快: 与大多数能够在常规结构下发挥做用的方法相比,千兆位级 SERDES的速度较快。
2、编解码器太过庞大: 编码器和解码器的电路逻辑数量可能会是MGT及其剩余部分的十倍。
3、编码开销过大: 编码开销就是那些附加的位。编码开销过大经常可使一种 FEC方法不可行。
Serdes技术中的各类可用功能极大地促进了I/O设计的发展。 SERDES的各类功能例如RX定位、时钟管理器、发送/接收FIFO、线路编码器/解码器等被普遍用于提升速度和精确度。SERDES在将来I/O设计中扮演着重要角色,它提供的各类功能也将是高效 I/O器件设计的重要工具。
一、ug476_7Series_Transceivers,下载连接:https://www.xilinx.com/support/documentation/user_guides/ug476_7Series_Transceivers.pdf
二、High-speed serial IO made simple,下载连接:https://pan.baidu.com/s/1Is8oZznS4MCHEOPK5Qwufg 密码:rttp