大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全家桶1年46,售后保障稳定
理解SerDes
FPGA发展到今天,SerDes(Serializer-Deserializer)基本上是标配了。从PCI到PCI Express, 从ATA到SATA,从并行ADC接口到JESD204, 从RIO到Serial RIO,…等等,都是在借助SerDes来提高性能。SerDes是非常复杂的数模混合设计,用户手册的内容只是描述了森林里面的一棵小树,并不能够解释SerDes是怎么工作的。SerDes怎么可以没有传输时钟信号?什么是加重和均衡?抖动和误码是什么关系?各种抖动之间有什么关系?本篇小文试着从一个SerDes用户的角度来理解SerDes是怎么设计的, 由于水平有限,一定有不够准确的地方,希望对刚开始接触SerDes的工程师有所帮助。
Contents
2.1串行器解串器(Serializer/Deserializer) 6
1. SerDes 的价值
1.1并行总线接口
在SerDes流行之前,芯片之间的互联通过系统同步或者源同步的并行接口传输数据,图1.1演示了系统和源同步并行接口。
因此也不可能靠无限的提高数据位宽来继续增加带宽。一种解决SSN的办法是使用差分信号替代单端信号,使用差分信号可以很好的解决SSN问题,代价是使用更多的芯片引脚。使用差分信号仍然解决不了数据skew的问题,很大位宽的差分信号再加上严格的时序限制,给并行接口带来了很大的挑战。
源同步接口的时钟频率已经遇到瓶颈,由于信道的非理想(channel)特性,再继续提高频率,信号会被严重损伤,就需要采用均衡和数据时钟相位检测等技术。这也就是SerDes所采用的技术。SerDes(Serializer-Deserializer)是串行器和解串器的简称。串行器(Serializer)也称为SerDes发送端(Tx),(Deserializer)也称为接收端Rx。Figure1.3是一个N对SerDes收发通道的互连演示,一般N小于4。
也存在一些介于SerDes和并行接口之间的接口类型,相对源同步接口而言,这些中间类型的接口也使用串行器(Serializer)解串器(Deserializer),同时也传送用于同步的时钟信号。这类接口如视频显示接口7:1 LVDS等。
2. SerDes结构(architecture)
SerDes的主要构成可以分为三部分,PLL模块,发送模块Tx,接收模块Rx。为了方便维护和测试,还会包括控制和状态寄存器,环回测试,PRBS测试等功能。见图2.1。
串行器Serializer把并行信号转化为串行信号。Deserializer把串行信号转化为并行信号。一般地,并行信号为8 /10bit或者16/20bit宽度,串行信号为1bit宽度(也可以分阶段串行化,如8bit->4bit->2bit->equalizerà1bit以降低equalizer的工作频率)。采用扰码(scrambled)的协议如SDH/SONET, SMPTE SDI使用8/16bit的并行宽度,采用8B/10B编码的协议如PCIExpress,GbE使用10bits/20bits宽度。
一个4:1的串行器如图xxx所示。8:1或16:1的串行器采用类似的实现。实现时,为了降低均衡器的工作频率,串行器会先把并行数据变为2bits,送给均衡器equalizer滤波,最后一步再作2:1串行化,本文后面部分都按1bit串行信号解释。
SerDes信号从发送芯片到达接收芯片所经过的路径称为信道(channel),包括芯片封装,pcb走线,过孔,电缆,连接器等元件。从频域看,信道可以简化为一个低通滤波器(LPF)模型,如果SerDes的速率大于信道(channel)的截止频率,就会一定程度上损伤(distort)信号。均衡器的作用就是补偿信道对信号的损伤。
发送端的均衡器采用FFE(Feed forward equalizers)结构,发送端的equalizer也称作加重器(emphasis)。加重(Emphasis)分为去加重(de-emphasis)和预加重(pre-emphasis)。De-emphasis降低差分信号的摆幅(swing)。Pre-emphasis增加差分信号的摆幅。FPGA大部分使用de-emphasis的方式,加重越强,信号的平均幅度会越小。
发送侧均衡器设计为一个高通滤波器(HPF),大致为信道频响H(f)的反函数H-1(f),FFE的目标是让到达接收端的信号为一个干净的信号。FFE的实现方式有很多,一个典型的例子如图2.5所示。