为了提高串行数据传输的可靠性,现在很多更高速率的数字接口采用对数据进行编码后再做并/串转换的方式。编码的方式有很多,如8b/9b编码、8b/10b编码、64b/66b编码、128b/130b编码等,下面以当下流行的ANSI8b/10b编码为例进行介绍。
在ANSI8b/10b编码方式中,8bit的数据先通过相应的编码规则转换成10bit的数据,再进行并/串转换;接收端收到信号后先把串行数据进行串/并转换得到10bit的数据,再通过10bit到8bit的解码得到原始传输的8bit数据。因此,如果发送端并行侧的数据速率是8bit×100Mbps,通过8b/10b编码和并/串转换后的串行侧的数据速率就是1bit×1Gbps。8b/10b编码方法早由IBM发明,后来成为ANSI标准的一部分(ANSIX3.230-1994,clause11),并在通信和计算机总线上广泛应用。表1.1是ANSI8b/10b编码表的一部分,以数据0x00为例, 数字信号常用的编码方式有哪些?河北数字信号测试执行标准
值得注意的是,在同步电路中,如果要得到稳定的逻辑状态,对于采样时钟和信号间的时序关系是有要求的。比如,如果时钟的有效边沿正好对应到数据的跳变区域附近,可能会采样到不可靠的逻辑状态。数字电路要得到稳定的逻辑状态,通常都要求在采样时钟有效边沿到来时被采信号已经提前建立一个新的逻辑状态,这个提前的时间通常称为建立时间(SetupTime);同样,在采样时钟的有效边沿到来后,被采信号还需要保持这个逻辑状态一定时间以保证采样数据的稳定,这个时间通常称为保持时间(HoldTime)。如图1.6所示是一个典型的D触发器对建立和保持时间的要求。Data信号在CLK信号的有效边沿到来t、前必须建立稳定的逻辑状态,在CLK有效边沿到来后还要保持当前逻辑状态至少tn这么久,否则有可能造成数据采样的错误。USB测试数字信号测试HDMI测试数字信号的建立/保持时间(Setup/Hold Time);
反映的是一个5Gbps的信号经过35英寸的FR-4板材传输后的眼图,以及经过CTLE均衡后对眼图的改善。
FFE均衡的作用基本上类似于FIR(有限脉冲响应)滤波器,其方法是根据相邻比特的电压幅度的加权值进行当前比特幅度的修正,每个相邻比特的加权系数直接和通道的冲激响应有关。下面是一个三阶FFE的数学描述:
e(t)=cor(t-(0Tp))+cir(t-(1Tp))+czr(t-(2Tp))
式中,e(t)为时间t时的电压波形,是经校正(或均衡)后的电压波形;Tp为时间延迟(抽头的时间延迟);r(t-nTp)为距离当前时间n个抽头延迟之前的波形,是未经校正(或均衡)的波形;c,为校正系数(抽头系数)。
我们经常使用到的总线根据数据传输方式的不同,可以分为并行总线和串行总线。
并行总线是数字电路中早也是普遍采用的总线结构。在这种总线上,数据线、地址线、控制线等都是并行传输,比如要传输8位的数据宽度,就需要8根数据信号线同时传输;如果要传输32位的数据宽度,就需要32根数据信号线同时传输。除了数据线以外,如果要寻址比较大的地址空间,还需要很多根地址线的组合来不同的地址空间。图1.7是一个典型的微处理器的并行总线的工作时序,其中包含了1根时钟线、16根数据线、16根地址线以及一些读写控制信号。 数字信号取值是散的,通过数学方法对原有信号处理,编码成二进制信号后,再载波的方式发送编码后的数字流。
数字信号测试串行总线的8b/10b编码(8b/10bEncoding)
前面我们介绍过,使用串行比并行总线可以节省更多的布线空间,芯片、电缆等的尺寸可以做得更小,同时传输速率更高。但是我们知道,在很多数字系统如CPU、DSP、FPGA等内部,进行数据处理的小单位都是Byte,即8bit,把一个或多个Byte的数据通过串行总线可靠地传输出去是需要对数据做些特殊处理的。将并行数据转换成串行信号传输的简单的方法如图1.19所示。比如发送端的数据宽度是8bit,时钟速率是100MHz,我们可以通过Mux(复用器)芯片把8bit的数据时分复用到1bit的数据线上,相应的数据速率提高到800Mbps(在有些LVDS的视频信号传输中比较常用的是把并行的7bit数据时分复用到1bit数据线上)。信号到达接收端以后,再通过Demux(解复用器)芯片把串行的信号分成8路低速的数据。 数字信号的预加重(Pre-emphasis);河北数字信号测试执行标准
数字信号是由“0”和“1”。河北数字信号测试执行标准
伪随机码型(PRBS)
在进行数字接口的测试时,有时会用到一些特定的测试码型。比如我们在进行信号质量测试时,如果被测件发送的只是一些规律跳变的码型,可能不了真实通信时的恶劣情况,所以测试时我们会希望被测件发出的数据尽可能地随机以恶劣的情况。同时,因为这种数据流很多时候只是为了测试使用的,用户的被测件在正常工作时还是要根据特定的协议发送真实的数据流,因此产生这种随机数据码流的电路比较好尽可能简单,不要额外占用太多的硬件资源。那么怎么用简单的方法产生尽可能随机一些的数据流输出呢?首先,因为真正随机的码流是很难用简单的电路实现的,所以我们只需要生成尽可能随机的码流就可以了,其中常用的一种数据码流是PRBS(PseudoRandomBinarySequence,伪随机码)码流。PRBS码的产生非常简单,图1.21是PRBS7的产生原理,只需要用到7个移位寄存器和简单的异或门就可以实现。 河北数字信号测试执行标准
采用并行总线的另外一个问题在于总线的吞吐量很难持续提升。对于并行总线来说, 其总线吞吐量=数据线位数×数据速率。我们可以通过提升数据线的位数来提高总线吞吐 量,也可以通过提升数据速率来提高总线吞吐量。以个人计算机中曾经非常流行的PCI总 线为例,其**早推出时总线是32位的数据线,工作时钟频率是33MHz,其总线吞吐量= 32bit×33MHz;后来为了提升其总线吞吐量推出的PCI-X总线,把总线宽度扩展到64位, 工作时钟频率比较高提升到133MHz,其总线吞吐量=64bit×133MHz。是PCI插槽 和PCI-X插槽的一个对比,可以看到PCI-X由于使用了更多的数据线,其插槽...