原博客:https://blog.csdn.net/angelbosj/article/details/50170101
本篇文章主要讲一下, 输入卡的架构与作用。
输入卡就是为了 对接多种视频接口信号, 比如 HDMI, VGA, DVI, SDI等等。这样任意类型的视频信号就可以 接入到 视频拼接器。整个视频拼接器 采用插卡的方式,这样就可以第一张输入卡是 HDMI,第二张卡是VGI等等,适应多种类型的需求。
下面以一张HDMI输入卡为例:
![](https://img-blog.csdn.net/20151204092949077)
当然 VGA 、 DVI 、SDI进来,也是类似的采取这样的方法。让TTL电平 进入 FPGA,FPGA把 四路TTL(Ycbcr 4:2:2)信号 转为 serdes.然后传到 底板切换矩阵芯片。然后传到 输出卡进行处理。
文章写到这里要介绍一下:serdes
原博客:www.blog.sina.com.cn/fpgatalk
FPGA发展到今天,SerDes(Serializer-Deserializer)基本上是标配了。从PCI到PCI Express, 从ATA到SATA,从并行ADC接口到JESD204, 从RIO到Serial RIO,…等等,都是在借助SerDes来提高性能。SerDes是非常复杂的数模混合设计,用户手册的内容只是描述了森林里面的一棵小树,并不能够解释SerDes是怎么工作的。SerDes怎么可以没有传输时钟信号?什么是加重和均衡?抖动和误码是什么关系?各种抖动之间有什么关系?本篇小文试着从一个SerDes用户的角度来理解SerDes是怎么设计的, 由于水平有限,一定有不够准确的地方,希望对刚开始接触SerDes的工程师有所帮助。
Contents
1. SerDes的价值
1.1并行总线接口
在SerDes流行之前,芯片之间的互联通过系统同步或者源同步的并行接口传输数据,图1.1演示了系统和源同步并行接口。
![](http://s5.sinaimg.cn/large/aec06aacgce37af9f9f94&690)
随着接口频率的提高,在系统同步接口方式中,有几个因素限制了 有效数据窗口宽度 的继续增加。
l 时钟到达两个芯片的传播延时不相等(clock skew)
l 并行数据各个bit的传播延时不相等(data skew)
l 时钟的传播延时和数据的传播延时不一致(skew between data and clock)
虽然可以通过在目的芯片(chip #2)内用PLL补偿时钟延时差(clock skew),但是PVT变化时,时钟延时的变化量和数据延时的变化量是不一样的。这又进一步恶化了数据窗口。
源同步接口方式中,发送侧Tx把时钟伴随数据一起发送出去, 限制了clock skew对有效数据窗口的危害。通常在发送侧芯片内部,源同步接口把时钟信号和数据信号作一样的处理,也就是让它和数据信号经过相同的路径,保持相同的延时。这样PVT变化时,时钟和数据会朝着同一个方向增大或者减小相同的量,对skew最有利。
我们来做一些合理的典型假设,假设一个32bit数据的并行总线,
a)发送端的数据skew = 50 ps ---很高的要求
b)pcb走线引入的skew = 50ps ---很高的要求
c)时钟的周期抖动jitter = +/-50 ps ---很高的要求
d)接收端触发器采样窗口 = 250 ps ---Xilinx V7高端器件的IO触发器
可以大致估计出并行接口的最高时钟 = 1/(50+50+100+250) = 2.2GHz (DDR)或者1.1GHz (SDR)。
利用源同步接口,数据的有效窗口可以提高很多。通常频率都在1GHz以下。在实际应用中可以见到如SPI4.2接口的时钟可以高达DDR 700MHz x 16bits位宽。DDR Memory接口也算一种源同步接口,如DDR3在FPGA中可以做到大约800MHz的时钟。
要提高接口的传输带宽有两种方式,一种是提高时钟频率,一种是加大数据位宽。那么是不是可以无限制的增加数据的位宽呢?这就要牵涉到另外一个非常重要的问题-----同步切换噪声(SSN)
这里不讨论SSN的原理,直接给出SSN的公式 SSN = L *N* di/dt。L是芯片封装电感,N是数据宽度,di/dt是电流变化的斜率。随着频率的提高,数据位款的增加,SSN成为提高传输带宽的主要瓶颈。图1.2是一个DDR3串扰的例子。图中低电平的理论值在0V,由于SSN的影响,低电平表现为震荡,震荡噪声的最大值达610mV,因此噪声余量只有1.5V/2-610mV=140mV。
![ç解SerDes <wbr>ä¹ä¸](http://s10.sinaimg.cn/mw690/aec06aacgce37b524b019&690)
因此也不可能靠无限的提高数据位宽来继续增加带宽。一种解决SSN的办法是使用差分信号替代单端信号&#xff0c;使用差分信号可以很好的解决SSN问题&#xff0c;代价是使用更多的芯片引脚。使用差分信号仍然解决不了数据skew的问题&#xff0c;很大位宽的差分信号再加上严格的时序限制&#xff0c;给并行接口带来了很大的挑战。
1.2 SerDes接口
源同步接口的时钟频率已经遇到瓶颈&#xff0c;由于信道的非理想(channel)特性&#xff0c;再继续提高频率&#xff0c;信号会被严重损伤&#xff0c;就需要采用均衡和数据时钟相位检测等技术。这也就是SerDes所采用的技术。SerDes(Serializer-Deserializer)是串行器和解串器的简称。串行器(Serializer)也称为SerDes发送端(Tx)&#xff0c;(Deserializer)也称为接收端Rx。Figure1.3是一个N对SerDes收发通道的互连演示,一般N小于4。
![ç解SerDes <wbr>ä¹ä¸](http://s4.sinaimg.cn/mw690/aec06aacgce37ba536893&690)
可以看到&#xff0c;SerDes不传送时钟信号&#xff0c;这也是SerDes最特别的地方&#xff0c;SerDes在接收端集成了CDR(Clock Data Recovery)电路&#xff0c;利用CDR从数据的边沿信息中抽取时钟&#xff0c;并找到最优的采样位置。
SerDes采用差分方式传送数据。一般会有多个通道的数据放在一个group中以共享PLL资源&#xff0c;每个通道仍然是相互独立工作的。
SerDes需要参考时钟(Reference Clock)&#xff0c;一般也是差分的形式以降低噪声。接收端Rx和发送端Tx的参考时钟可以允许几百个ppm的频差(plesio-synchronous system)&#xff0c;也可以是同频的时钟&#xff0c;但是对相位差没有要求。
作个简单的比较&#xff0c;一个SerDes通道(channel)使用4个引脚(Tx&#43;/-,Rx&#43;/-), 目前的FPGA可以做到高达28Gbps。而一个16bits的DDR3-1600的线速率为1.6Gbps*16 &#61; 25Gbps,却需要50个引脚。此对比可以看出SerDes在传输带宽上的优势。
相比源同步接口&#xff0c;SerDes的主要特点包括:
l SerDes在数据线中时钟内嵌,不需要传送时钟信号。
l SerDes通过加重/均衡技术可以实现高速长距离传输&#xff0c;如背板。
l SerDes 使用了较少的芯片引脚
1.3 中间类型
也存在一些介于SerDes和并行接口之间的接口类型&#xff0c;相对源同步接口而言&#xff0c;这些中间类型的接口也使用串行器(Serializer)解串器(Deserializer)&#xff0c;同时也传送用于同步的时钟信号。这类接口如视频显示接口7:1 LVDS等。
2. SerDes结构(architecture)
SerDes的主要构成可以分为三部分&#xff0c;PLL模块&#xff0c;发送模块Tx&#xff0c;接收模块Rx。为了方便维护和测试&#xff0c;还会包括控制和状态寄存器&#xff0c;环回测试&#xff0c;PRBS测试等功能。见图2.1。
![ç解SerDes <wbr>ä¹ä¸](http://s1.sinaimg.cn/mw690/aec06aacgce37c1685160&690)
图中蓝色背景子模块为PCS层&#xff0c;是标准的可综合CMOS数字逻辑&#xff0c;可以硬逻辑实现&#xff0c;也可以使用FPGA软逻辑实现&#xff0c;相对比较容易被理解。褐色背景的子模块是PMA层&#xff0c;是数模混合CML/CMOS电路&#xff0c;是理解SerDes去别于并行接口的关键&#xff0c;也是本文要讨论的内容。
发送方向(Tx)信号的流向: FPGA软逻辑(fabric)送过来的并行信号&#xff0c;通过接口FIFO(Interface FIFO), 送给8B/10B编码器(8B/10B encoder)或扰码器(scambler)&#xff0c;以避免数据含有过长连零或者连1。之后送给串行器(Serializer)进行 并->串 转换。串行数据经过均衡器(equalizer)调理&#xff0c;有驱动器(driver)发送出去。
接收方向(Rx)信号的流向, 外部串行信号由线性均衡器(Linear Equalizer)或DFE (Decision Feedback Equalizer)结构均衡器调理&#xff0c;去除一部分确定性抖动(Deterministic jitter)。CDR从数据中恢复出采样时钟&#xff0c;经解串器变为对齐的并行信号。8B/10B解码器(8B/10B decoder)或解扰器(de-scambler)完成解码或者解扰。如果是异步时钟系统(plesio-synchronous system)&#xff0c;在用户FIFO之前还应该有弹性FIFO来补偿频差。
PLL负责产生SerDes各个模块所需要的时钟信号,并管理这些时钟之间的相位关系。以图中线速率10Gbps为例,参考时钟频率250MHz。Serializer/Deserializer至少需要5GHz 0相位时钟和5GHz 90度相位时钟&#xff0c;1GHz(10bit并行)/1.25GHz(8bit并行)时钟等。
一个SerDes通常还要具调试能力。例如伪随机码流产生和比对&#xff0c;各种环回测试&#xff0c;控制状态寄存器以及访问接口&#xff0c;LOS检测, 眼图测试等。
2.1串行器解串器(Serializer/Deserializer)
串行器Serializer把并行信号转化为串行信号。Deserializer把串行信号转化为并行信号。一般地&#xff0c;并行信号为8 /10bit或者16/20bit宽度&#xff0c;串行信号为1bit宽度(也可以分阶段串行化&#xff0c;如8bit->4bit->2bit->equalizerà1bit以降低equalizer的工作频率)。采用扰码(scrambled)的协议如SDH/SONET, SMPTE SDI使用8/16bit的并行宽度&#xff0c;采用8B/10B编码的协议如PCIExpress,GbE使用10bits/20bits宽度。
一个4:1的串行器如图xxx所示。8:1或16:1的串行器采用类似的实现。实现时&#xff0c;为了降低均衡器的工作频率&#xff0c;串行器会先把并行数据变为2bits&#xff0c;送给均衡器equalizer滤波&#xff0c;最后一步再作2:1串行化&#xff0c;本文后面部分都按1bit串行信号解释。
![ç解SerDes <wbr>ä¹ä¸](http://s9.sinaimg.cn/mw690/aec06aacg7b0593d4e9d8&690)
一个1:4的解串器如图2.3所示&#xff0c;8:1或16:1的解串器采用类似的实现。实现时&#xff0c;为了降低均衡器(DFE based Equalizer)的工作频率&#xff0c;DFE工作在DDR模式下&#xff0c;解串器的输入是2bit或者更宽&#xff0c;本文后面部分都按1bit串行信号解释。
![ç解SerDes <wbr>ä¹ä¸](http://s4.sinaimg.cn/mw690/aec06aacgce37c9fede23&690)
Serializer/Deserializer的实现采用双沿(DDR)的工作方式&#xff0c;利用面积换速度的策略&#xff0c;降低了电路中高频率电路的比例&#xff0c;从而降低了电路的噪声。
接收方向除了Deserializer之外&#xff0c;一般带有还有对齐功能逻辑(Aligner)。相对SerDes发送端&#xff0c;SerDes接收端起始工作的时刻是任意的&#xff0c;接收器正确接收的第一个 bit可能是发送并行数据的任意bit位置。因此需要对齐逻辑来判断从什么bit位置开始&#xff0c;以组成正确的并行数据。对齐逻辑通过在串行数据流中搜索特征码字(Alignment Code)来决定串并转换的起始位置。比如8B/10B编码的协议通常用K28.5(正码10’b1110000011&#xff0c;负码10’b0001111100)来作为对齐字。图2.4为一个对齐逻辑的演示。通过滑窗&#xff0c;逐bit比对&#xff0c;以找到对齐码(Align-Code)的位置&#xff0c;经过多次在相同的位置找到对齐码之后&#xff0c;状态机锁定位置并选择相应的位置输出对齐数据。
![ç解SerDes <wbr>ä¹ä¸](http://s12.sinaimg.cn/mw690/aec06aacgce37ce95b6bb&690)
2.2发送端均衡器( Tx Equalizer)
SerDes信号从发送芯片到达接收芯片所经过的路径称为信道(channel)&#xff0c;包括芯片封装&#xff0c;pcb走线&#xff0c;过孔&#xff0c;电缆&#xff0c;连接器等元件。从频域看&#xff0c;信道可以简化为一个低通滤波器(LPF)模型&#xff0c;如果SerDes的速率大于信道(channel)的截止频率&#xff0c;就会一定程度上损伤(distort)信号。均衡器的作用就是补偿信道对信号的损伤。
发送端的均衡器采用FFE(Feed forward equalizers)结构&#xff0c;发送端的equalizer也称作加重器(emphasis)。加重(Emphasis)分为去加重(de-emphasis)和预加重(pre-emphasis)。De-emphasis降低差分信号的摆幅(swing)。Pre-emphasis增加差分信号的摆幅。FPGA大部分使用de-emphasis的方式&#xff0c;加重越强&#xff0c;信号的平均幅度会越小。
发送侧均衡器设计为一个高通滤波器(HPF),大致为信道频响H(f)的反函数H-1(f)&#xff0c;FFE的目标是让到达接收端的信号为一个干净的信号。FFE的实现方式有很多&#xff0c;一个典型的例子如图2.5所示。
![ç解SerDes <wbr>ä¹ä¸](http://s5.sinaimg.cn/mw690/aec06aacg7b0595b596d4&690)
调节滤波器的系数可以改变滤波器的频响&#xff0c;以补偿不同的信道特性&#xff0c;一般可以动态配置。以10Gbps线速率为例&#xff0c;图2.5为DFE频率响应演示。可以看到&#xff0c;对于C0&#61;0,C1&#61;1.0,C2&#61;-0.25的配置&#xff0c;5GHz处高频增益比低频区域高出4dB&#xff0c;从而补偿信道对高频频谱的衰减。
![ç解SerDes <wbr>ä¹ä¸](http://s10.sinaimg.cn/mw690/aec06aacgce37dc67d909&690)
采样时钟的频率限制了这种FFE最高只能补偿到Fs/2(例子中Fs/2&#61;5GHz)。根据采样定理&#xff0c;串行数据里的信息都包含在5GHz以内&#xff0c;从这个角度看也就足够了。如果要补偿Fs/2以上的频率&#xff0c;就要求FFE高于Fs的工作时钟,或者连续时间域滤波器(Continuous Time FFE)。
图2.7为DFE时域滤波效果的演示&#xff0c;以10Gbps线速率为例&#xff0c;一个UI&#61;0.1 nS&#61;100ps。演示的串行数据码流为二进制[00000000100001111011110000]。
![ç解SerDes <wbr>ä¹ä¸](http://s1.sinaimg.cn/mw690/aec06aacg00e2ebccdd40&690)