基于Xilinx bitslice原语实现delay可调整的MIPI DPHY

背景

        Xilinx自带的DPHY在1.5G时无法调整data line的delay值,在需要调整数据线延时的场景可使用文中方案,且有较少的资源占用。使用IBUFDS_DPHY,BITSLICE,BITSLICE_CONTROL实现MIPI DPHY。包含1条clock lane,4条 data lane。参考《UG571 ultralscale selectio》。

1 时钟域

       随路时钟由时钟RX_BITSLICE_0转给BITSLICE_CONTROL,根据设置是否偏移90°(DDR时钟数据边沿对齐时需要),再转入所有数据RX_BITSLICE用于采样;同时时钟RX_BITSLICE_0给出字节时钟,用于后续逻辑处理用;

        PLL_CLK:1000M仅用于CONTROL的校准、延时控制;

        RIU_CLK用于访问CONTROL内部的64个reg,实践中并未访问;

       CLK:延时控制接口的参考时钟,延时调整也有时序要求,tap的步进需要通过两条数据线计算得到。

       BISC与RIU接口不需要直接操作,仅用延时接口调整延时即可。

基于Xilinx bitslice原语实现delay可调整的MIPI DPHY_第1张图片

2 管脚

        一个Bank共52pins,分为4组字节(每字节13pins),每字节又分为上下两个半字节(6,7pins).每个半字节对应一个CONTROL(有7个控制口对应7个IO),使用时按照管脚顺序一一对应,差分管脚在CTL上仅使用p脚,n脚空出。故每个byte组中,MIPI的clk+/-,data0+/-,data1+/- 占6个pin0~5对应在第一个bitslice_control上,data2+/-, data3+/-占4个pin6~9对应在第二个bitslice_control上。

       若MIPI使用了两个半字节管脚,则要使用两个CONTROL,且接收随路时钟所在的CTL需要把PCLK/NCLK转发给另一个CTL(PCLK_NIBBLE_OUT)。

基于Xilinx bitslice原语实现delay可调整的MIPI DPHY_第2张图片

3 slice原语模块pins

clock RX_BITSLICE配置为.DATA_TYPE("DATA_AND_CLOCK"),data RX_BITSLICE配置为 .DATA_TYPE("DATA ").

基于Xilinx bitslice原语实现delay可调整的MIPI DPHY_第3张图片

clk slice的FIFO_WRCLK_OUT输出byte_clk,加BUFG后用于读取slice自带深度为8的FIFO;

基于Xilinx bitslice原语实现delay可调整的MIPI DPHY_第4张图片

每个slice的FIFO_EMPTY信号取反后用作读FIFO使能;

基于Xilinx bitslice原语实现delay可调整的MIPI DPHY_第5张图片

40bits信号用户不用关心,按照收对发连接两个CTL即可,未使用的接0。

基于Xilinx bitslice原语实现delay可调整的MIPI DPHY_第6张图片

第二个CTL中开启接收来自第一个CTL的采样时钟PCLK/NCLK.

基于Xilinx bitslice原语实现delay可调整的MIPI DPHY_第7张图片基于Xilinx bitslice原语实现delay可调整的MIPI DPHY_第8张图片

多个bitslice对其的建议:

To ensure that all RX bit slices start aligned, the rx_clk_in (FIFO_RD_CLK) [(rx_clk_in in the above example)] should be stopped until the RX VTC_RDY signal is asserted(对齐使用的1500M,rd_clk要上位机开启clk才会有,实践中后给出clk仍然会出现不对齐,待clk出现后复位所有slice能明显改善)

为输入clk和生成clk添加约束:

create_clock -name rx_clk -period 2.000 -waveform {0.000 1.000} [get_ports rx_clk_in] create_generated_clock -divide_by 2 -source [get_ports rx_clk_in] -name fifo_wrclk rx_clock_bitslice_inst/FIFO_WRCLK_OUT

4 复位逻辑

基于Xilinx bitslice原语实现delay可调整的MIPI DPHY_第9张图片

   ​​基于Xilinx bitslice原语实现delay可调整的MIPI DPHY_第10张图片

5 增加delay

load_var步骤:

基于Xilinx bitslice原语实现delay可调整的MIPI DPHY_第11张图片

基于Xilinx bitslice原语实现delay可调整的MIPI DPHY_第12张图片

须知:

基于Xilinx bitslice原语实现delay可调整的MIPI DPHY_第13张图片

计算tap步骤:

基于Xilinx bitslice原语实现delay可调整的MIPI DPHY_第14张图片

基于Xilinx bitslice原语实现delay可调整的MIPI DPHY_第15张图片

第一个带clk的control默认延时小0x38=201ps,第二个CTL默认延时大0x46=248ps.

你可能感兴趣的:(FPGA,fpga开发)