SRIO DRP动态速率配置阐明(具体讲授)
目录一、SRIO IP时钟结构
1、时钟内部结构
2、时钟直接的关系
3、时钟盘算原理
二、SRIO DRP介绍
1、MMCM DRP配置(xapp888)
2、CPLL DRP配置(ug476)
关于CPLL DRP配置具体介绍:
GTX中CPLL、QPLL DRP动态配置方法(详解)-CSDN博客
关于MMCM DRP配置具体介绍:
MMCM DRP动态配置方法(超具体讲授)-CSDN博客
一、SRIO IP时钟结构
1、时钟内部结构
从下图可以看出IP的时钟结构紧张分为3个部分:时钟分频模块、SRIO IP模块和GTX模块。其中紧张由时钟分频模块产生时钟输出给SRIO IP模块和GTX模块。
https://i-blog.csdnimg.cn/direct/34cc7e0b302c41089a16044815eac1b3.png
2、时钟直接的关系
时钟分频模块紧张产生4个时钟log_clk/cfg_clk 、 phy_clk 、gt_pcs_clk和gt_clk。在SRIO动态速率重配置(DRP)过程中必要log_clk/cfg_clk 、 phy_clk 、gt_pcs_clk和gt_clk和线速率line rate相匹配,时钟与线速率之间的关系如下:
https://i-blog.csdnimg.cn/direct/9d6a57d9c3c84ba2ad35e36043245f9f.png
在进行IP配置时,选择Shared Logic in Example Design ,将时钟分频模块放到外部模块,而不放在IP内部,这样方便我们进行时钟的更改。
https://i-blog.csdnimg.cn/direct/0bbeca95399f47d4acc9bfacd306bc34.png
https://i-blog.csdnimg.cn/direct/1ef9a8fd49f04861a83eb6d2426e4c25.png
3、时钟盘算原理
从时钟结构中可以看出gt_pcs_clk和RXUSERCLK2/TXUSERCLK2相连,gt_clk和RXUSERCLK/TXUSERCLK相连,refclk与GTREFCLK0相连,refclk由外部时钟引脚经过IBUFDS(差分转单端)后产生,以是sys_clk_p/n必要毗连到GTX专用参考时钟引脚上。
https://i-blog.csdnimg.cn/direct/cfba4ccb15e940cb81c90f042d2f3506.png
https://i-blog.csdnimg.cn/direct/ef768544ae2e421c8c0451c8a751ad7d.png
https://i-blog.csdnimg.cn/direct/f588f663e8314cf1a24197a5f9d024ee.png
https://i-blog.csdnimg.cn/direct/b78157e613ca4b0e98fddd71fe72e8df.png
关于RXUSERCLK/TXUSERCLK的盘算公式如下:
https://i-blog.csdnimg.cn/direct/560a4de5c8a74769a0ef37ba1a5fa978.png
https://i-blog.csdnimg.cn/direct/9cbd88727053480fa8ac0b2aa6ebbbb3.png
RXUSERCLK2/TXUSERCLK2和RXUSERCLK/TXUSERCLK关系如下:
https://i-blog.csdnimg.cn/direct/6d670361272e4a05b52c1931510e6104.png
https://i-blog.csdnimg.cn/direct/8eb7ae4cdbcf44b3b00094c9fab5ced4.png
影响RXUSERCLK/TXUSERCLK和RXUSERCLK2/TXUSERCLK2的几个参数分别为line rate、
Internal Data Width和RX_DATA_WIDTH。
https://i-blog.csdnimg.cn/direct/d4b1ecd9c10a45178ac811a55d5bc5c1.png
使能8B10B编码时,RX_INT_DATAWIDTH =0时Internal Data Width为20bit;RX_INT_DATAWIDTH =1时Internal Data Width为40bit。
打开IP核里面的模块,可以看到最底层调用了 GTXE2_CHANNEL源语,利用了 GTXE2资源。
https://i-blog.csdnimg.cn/direct/132e5dc00bb74f42b171ea76d3b56999.png
可以从模块代码中可以看到关于RX8B10BEN/TX8B10BEN、RX_DATA_WIDTH/TX_DATA_WIDTH、RX_INT_DATAWIDTH/TX_INT_DATAWIDTH的配置。
https://i-blog.csdnimg.cn/direct/7de1500f3e8941adbb39c39851638a6b.png
https://i-blog.csdnimg.cn/direct/38573f7762fa4a03b20af07ed89074c3.png
https://i-blog.csdnimg.cn/direct/465c0a670e134efa8c3ab3c0f9c2ea8d.png
https://i-blog.csdnimg.cn/direct/392fc04f944f4eed8f3ae0bf577de709.png
https://i-blog.csdnimg.cn/direct/91483364e1df4dd6b340a984219ee514.png
根据上面的公式和GTX配置的参数我们可以盘算出RXUSERCLK/TXUSERCLK和RXUSERCLK2/TXUSERCLK2的值,以线速率1.25G为例:
RXUSERCLK=TXUSERCLK=1250M/20=62.5M;
https://i-blog.csdnimg.cn/direct/106508f5e8814900a4f3da4de95d71bd.png
RXUSERCLK2=TXUSERCLK2=62.5M/2=31.25M。
gt_clk和gt_pcs_clk的时钟分别等于RXUSERCLK/TXUSERCLK和RXUSERCLK2/TXUSERCLK2。下面分析log_clk和phy_clk的时钟盘算原理。可以从顶层结构中看出,发送数据活动方向为LOG------>BUF-------->PHY------->GTX,接收数据活动方向为GTX------>PHY-------->BUF------->LOG。
https://i-blog.csdnimg.cn/direct/ca7c788cb0304942b32e8460f9380996.png
LOG逻辑层紧张和用户逻辑接口进行数据交换。逻辑层输入、输出数据位宽为64bit。
https://i-blog.csdnimg.cn/direct/8fa9d6a2c6104feb896a566875804c89.png
https://i-blog.csdnimg.cn/direct/e591473285b84529a36dd7a7dbfd2d8f.png
https://i-blog.csdnimg.cn/direct/8d1db797758d4bad9320bc282177b1cc.png
https://i-blog.csdnimg.cn/direct/eb599b6a4c4742ceabf70e6c5354808b.png
BUF缓冲层是对发送和接收的包进行缓冲,另一个作用是处理跨时钟域的问题。缓冲层输入、输出数据位宽也为64bit。
https://i-blog.csdnimg.cn/direct/84233e56cc8243bb8aaab48bb4cf3518.png
https://i-blog.csdnimg.cn/direct/08b01051776a47fea06ba644d7d5ebec.png
https://i-blog.csdnimg.cn/direct/fc8345d81a1740738739e07c7137eabd.png
https://i-blog.csdnimg.cn/direct/9241cb85b4ee4bbc98db02f19e380175.png
https://i-blog.csdnimg.cn/direct/6210b9fead0a4bf792e1b1e6ddbc3a57.png
PHY物理层用来处理链路训练(Link Training), 初始化(Initialization) 和协议(Protocol),物理层接口与高速串行收发器相连。物理层和缓冲层数据交互数据位宽为64bit,物理层与高速串行收发器(GTX)数据交换位宽为32*LW(LW = link width)。
https://i-blog.csdnimg.cn/direct/a66630512d7a4d2e9a9b8b2cef68d839.png
https://i-blog.csdnimg.cn/direct/633a6789f6bb4523972318ad3e02be47.png
https://i-blog.csdnimg.cn/direct/7ceef83c94734b258b6c5420ed6c4479.png
https://i-blog.csdnimg.cn/direct/b9df56bc8a5642d8b43941a2d8b7385e.png
线速率line_rate=1.25G条件下:
链路位宽为X1模式:GTX接口数据位宽为32bit,log和phy数据位宽都为64bit,而且GTX接口数据是在RXUSERCLK2/TXUSERCLK2时钟下进行接收和发送。以是log_clk=phy_clk=TXUSERCLK2/2=15.625M。
链路位宽为X2模式,最大物理层训练链路为X2:GTX接口最大数据位宽为64bit,log和phy数据位宽都为64bit,log_clk=TXUSERCLK2=31.25M。若实际物理层训练链路为x2,GTX接口数据位宽为64bit,phy_clk=TXUSERCLK2=31.25M;若实际物理层训练链路为x1,GTX接口数据位宽为32bit,phy_clk=TXUSERCLK2/2=15.625M。
链路位宽为X4模式,最大物理层训练链路为X4:GTX接口最大数据位宽为128bit,log和phy数据位宽都为64bit,log_clk=TXUSERCLK2 * 2=62.5M。若实际物理层训练链路为x4,GTX接口数据位宽为128bit,phy_clk=TXUSERCLK2*2==62.5M;若实际物理层训练链路为x1,GTX接口数据位宽为32bit,phy_clk=TXUSERCLK2/2=15.625M。
这里为什么逻辑层的时钟log_clk不根据链路位宽变化而变化,而物理层的时钟phy_clk却要根据实际训练链路的宽度而改变。
从顶层结构中可以看出逻辑层LOG和物理层PHY直接有一个缓冲层BUF,而物理层到GTX之间没有缓冲。由于有了缓冲层BUF的原因,逻辑层就没有必要进行降速,可以按照最高速率进行数据传输,数据到了缓冲层BUF中由缓冲层BUF进行控制输出给物理层PHY的速率;物理层则必要根据GTX实际训练链路宽度来调整输出频率,否则会造成数据丢失。缓冲层BUF还具有跨时钟域处理作用,log_clk和phy_clk频率差别时就必要利用该功能。
https://i-blog.csdnimg.cn/direct/0f432cc5a49c4e3bb101582c8b1ed9b1.png二、SRIO DRP介绍
SRIO IP进行DRP时,必要进行MMCM DRP和CPLL DRP。MMCM DRP紧张配置log_clk/cfg_clk 、 phy_clk 、gt_pcs_clk和gt_clk,CPLL DRP配置线速率Line Rate。配置序次为先辈行MMCM DRP配置,然后进行CPLL DRP配置。在配置过程中必要进行复位,配置完成后取消复位。
从手册提供的速率表中可以看出线速率Line Rate紧张有5种:1.25Gb/s,2.5Gb/s,3.125Gb/s,5Gb/s,6.25Gb/s。差别线速率下gt_pcs_clk、gt_clk、phy_clk和log_clk也必要改变。输入参考时钟频率可以选择125M和156.25M。
https://i-blog.csdnimg.cn/direct/aeda458db3b449cebd05e86eb80c94a4.png1、MMCM DRP配置(xapp888)
相同线速率,差别链路位宽下gt_pcs_clk和gt_clk都相同。只有phy_clk和log_clk会根据链路位宽进行变化。利用MMCM输出3个时钟分别为clk_out0,clk_out1和clk_out2。
https://i-blog.csdnimg.cn/direct/12b818b1b19541e18803ce59fd4f8a14.png
根据链路位宽差别gt_pcs_clk、gt_clk、phy_clk、log_clk和MMCM输出时钟对应关系如下:
https://i-blog.csdnimg.cn/direct/224498f220de464db88facde9e6a5771.png
天生IP时选择Shared Logic in Example Design,天生IP的 Example Design,双击打开srio_clk模块,将MMCM的DRP端口引出进行控制。
https://i-blog.csdnimg.cn/direct/57f56a4aaa584789946fc2252db2ca1a.png
https://i-blog.csdnimg.cn/direct/a86eb76b08e149c0814432d07ad333dc.png
https://i-blog.csdnimg.cn/direct/521006011a73403d892803962ae00ec3.png
关于MMCM DRP配置参考官方文档xapp888.紧张利用以下寄存器:
https://i-blog.csdnimg.cn/direct/1734e7f5f21741b293d6525081caf286.png
https://i-blog.csdnimg.cn/direct/5209f5dbf22f4614adff3cd91db6414b.png
https://i-blog.csdnimg.cn/direct/4db36ee2788a47cab8c85331869d69c9.png
其中0x14,0x15,0x16用于配置VCO频率;0x08,0x09配置clk_out0输出频率;0x0A,0x0B配置clk_out1输出频率;0x0C,0x0D配置clk_out2输出频率。
所需时钟都能由1250MHz整数分频得到,第一步将VCO倍频到1250M,再分频输出所需时钟,寄存器配置如下:
https://i-blog.csdnimg.cn/direct/36f426d361ef4d4bb60fd02e19584dd2.png
https://i-blog.csdnimg.cn/direct/b9421c81f97548a8ae12cd5512de2f44.png
https://i-blog.csdnimg.cn/direct/60068d3dcab141beae06fd421717028d.png
https://i-blog.csdnimg.cn/direct/d056af288b4348918f8ccc8fae089454.png
关于MMCM DRP具体介绍可以看这篇文章:
MMCM DRP动态配置方法(超具体讲授)-CSDN博客
2、CPLL DRP配置(ug476)
IP配置时勾选Additional transceiver control and status ports功能,将DRP端口开放出来以便后续利用。
https://i-blog.csdnimg.cn/direct/1a86df07413e4dcba60b576fe589b7fc.png
SRIO中默认利用CPLL时钟,CPLL DRP配置用于动态配置GTX线速率,盘算公式为:
https://i-blog.csdnimg.cn/direct/003f767a18c9448ca92800b804473053.png
https://i-blog.csdnimg.cn/direct/da0cc975c497405ca0a83b82de612c6a.png
对应的寄存器如下:
https://i-blog.csdnimg.cn/direct/4cf06e1c08864a44b2f9c8b8dfb49f79.png
https://i-blog.csdnimg.cn/direct/cf911958d1b946d09df04783a33aa6e2.png
https://i-blog.csdnimg.cn/direct/7203430ad1a54cdf8a30778bbc8c73c6.png
线速率line rate和参数配置对应关系如下:
https://i-blog.csdnimg.cn/direct/5968ab411af04c75bff474100ae49328.png
https://i-blog.csdnimg.cn/direct/6687991b025440df99b2ce2ccd985add.png
https://i-blog.csdnimg.cn/direct/b2916b43f9c849f386ee9bd95df1ceb8.png
https://i-blog.csdnimg.cn/direct/046c2344dd5b489f946a435a4c815a23.png
关于CPLL DRP具体介绍可以看这篇文章:
GTX中CPLL、QPLL DRP动态配置方法(详解)-CSDN博客
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]