每一个收发器拥有一个独立的发送端,发送端有pma(physical media attachment,物理媒介适配层)和pcs(physicalcoding sublayer,物理编码子层)组成,其中pma子层包含高速串并转换(serdes)、预/后加重、接收均衡、时钟发生器及时钟恢复等电路。pcs子层包含8b/10b编解码、缓冲区、通道绑定和时钟修正等电路。对于gtx的发送端来说,结构如图1所示。
图1
fpga内部并行数据通过fpgatx interface进入tx发送端,然后经过pcs和pma子层的各个功能电路处理之后,最终从tx驱动器中以高速串行数据输出,下面将介绍各个功能电路。
fpga tx interface用户接口:tx interface是用户数据发往gtx的接口,该接口的信号如表1所示。
表1
发送数据接口是txdata,采样时钟是txusrclk2,在txusrclk2的上升沿对txdata进行采样。txusrclk2的速率由线速率、tx interface接口位宽和8b/10b是否使能决定(txusrclk2频率= 线速率/ tx_data_width ;比如线速率是10gb/s,tx_data_whdth等于80,那么txusrclk2的频率是125mhz)。txdata的位宽可以配置成16/20/32/40/64/80位宽,通过tx_data_width 、tx_int_datawidth、tx8b10ben三个属性设置可以配置成不同的位宽,具体属性如表2所示。
表2
gtx的tx interface分成内部数据位宽和fpga接口位宽,其中内部数据归属于txusrclk时钟域,fpga接口数据归属于txusrclk2时钟域,而内部数据位宽支持2byte/4byte,fpga接口数据位宽支持2byte/4byte/8byte,因此,决定了txusrclk和txusrclk2有一定的时钟倍数关系,txusrclk和txusrclk2的时钟倍数关系如表3所示,其中tx_int_datawidth属性设置为“0”,表示内部数据位宽为2byte,如果设置为“1”,则表示内部数据位宽为4byte(线速率大于6.6gb/s的时候应当置“1”)。
表3
txusrlk和txusrclk2时钟是相关联的,在时钟这两个时钟时应该遵循下面两个准则:
1.txusrclk和txusrclk2必须是上升沿对齐的,偏差越小越好,因此应该使用bufgs或者bufrs来驱动这两个时钟(因为tx interface和pcs子层之间没有相位校正电路或者fifo,所以需要严格对齐,本人自己的理解)。
2.即使txusrclk、txusrclk2和gtx的参考时钟运行在不同的时钟频率,必须保证三者必须使用同源时钟。
发送端的时钟结构:为了能够更好的理解gtx的发送端如何工作,理解发送端的时钟结构很有必要,图2是发送端的时钟结构图。
图2
其中红框部分和黄底部分的内容是我们需要重点了解的地方,图中的mgtrefclk是上一篇中提到的gtx的参考时钟,经过一个ibufds_gte2源语之后进入gtx,用以驱动cpll或者qpll。对于tx pma来说,主要实现的功能是并串转换,其并串转换的时钟可以由cpll提供,也可以由qpll提供,由txsysclksel选择,tx pma子层里面有三个红色方框部分是串行和并行时钟分频器,作用是产生并行数据的驱动时钟,其中d分频器主要用于将pll的输出分频,以支持更低的线速率。
÷2/÷4这个选项由tx_int_datawidth决定,如果tx_int_datawidth为“0”,则选择÷2,反之选择÷4。
对于÷4/÷5,则由tx_data_width决定,如果是位宽是16/32/64,则选择÷4,如果位宽是20/40/80,则选择÷5。
对于txusrclk和txusrclk2由谁驱动呢,官方推荐使用txoutclk驱动,这样做能精简设计,同时稳定,如何使用txoutclk来做txusrclk和txusrclk2的驱动时钟呢,根据txusrclk和txusrclk2的频率关系,以一个lane为例,图3表示txusrclk=txusrclk2的驱动方式,图4表示txusrclk = 2*txusrclk2的驱动方式。
图3
图4
对于图4,clkout0的值为clkout1的2倍。
tx 8b/10b encoder:高速收发器的发送端一般都带有8b/10b编码器。目的是保证数据有足够的切换提供给时钟恢复电路,编码器还提供一种将数据对齐到字的方法,同时线路可以保持良好的直流平衡。在gtx应用中,如果发送的是d码,则需要将txcharisk拉低,如果是k码,则将相应的txcharisk拉高。
tx buffer:了解发送的txbuffer的作用,首先得搞清楚tx发送端的时钟域,tx发送端的时钟域如图5所示。
图5
图5中红色方框就是txbuffer,我们都知道fifo具有隔离时钟域的功能,在这里也不例外,我们从图中可以知道,tx buffer连接着两个不同的时钟域xclk和txusrclk,在发送端的pcs子层内部包含两个时钟域,xclk(pma并行时钟域)txusrclk时钟域,为了数据发送的稳定,xclk和txusrclk必须是速率匹配,相位差可以消除的,tx buffer主要用于匹配两时钟域的速率和消除两时钟域之间的相位差。
tx buffer也可以被旁路,tx发送端提供了一个相位对齐电路,可以解决xclk和txusrclk时钟域之间的相位差,但是tx_xclk_sel需设置为“txusr”来保持xclk时钟域和txusrclk保持同频。
tx pattern generator:gtx拥有伪随机数列产生电路,伪随机数列是之中看似随机,但是是有规律的周期性二进制数列,有良好的随机性和接近白噪声的相关函数,所以伪随机数列可以用来做误码率测量、时延测量、噪声发生器、通信加密和扩频通信等等领域,在gtx中可以用来测试高速串行通道传输的误码率,图6是gtx的prbs生成电路。
图6
可以使能或者旁路这个prbs生成电路,如果旁路的话txdata会传输到发送端的pma。一般使用prbs模式测试模型如图7所示。
图7
tx polarity control:tx发送端支持对tx发送的数据进行极性控制,从pcs子层输出的编码数据在进入piso串行化之前进行极性翻转,这部分功能主要是用来弥补pcb的设计错误,如果pcb设计时不慎将txp和txn交叉连接的话,可以通过设置txpolarity为“1”来翻转信号的极性,。
魅族李楠的七分功三分过
8031单片机的定时器和计数器是怎么工作的
随着医疗行业的成熟,AI医疗保健迎来新发展
2020年中国AI公有云服务整体市场规模达24.1亿元人民币
手电筒电路板如何接线
FPGA高速收发器的GTX发送端解析
什么是HSDPA?
荣耀V30 PRO新更新版本推送,优化了系统稳定性
夏普重建,成败看苹果
基于令牌储存技术实现数据存储电路的软硬件设计
firefox,os,小米或将利用此技术自主研发新系统
过程能力分析01—不要忽略“稳定”
搭载高通骁龙865的工程机现身跑分库,多核性能明显提升
一加5全面评测:尽管它复制了iPhone,但依旧最好的一加手机
压力变送器和差压变送器的区别
安防与GIS技术的结合点在哪?发展趋势又如何?
LG Display展示了OLED前沿科技产品 宣告了中国OLED时代的来临
加快5G基础设施建设,促进5G产业发展
锁控防盗报警电路图
工业机器人控制柜使用方法