Xilinx_SERDES动态延迟加解串的使用

Xilinx SELECTIO IP核调用配作可变延迟加输入解串工作模式时信号接口如下表所示:
接口名 方向 注释
DATA_IN_FROM_PINS Input 来自外部IO数据输入引脚
DATA_IN_TO_DEVICE Output CLK_OUT同步后的输出数据
DELAY_BUSY Output IODELAY校准和相位变化正在进行忙信号
DELAY_CLK Input FPGA内部逻辑同步时钟,可接CLK_DIV_OUT
DELAY_DATA_CAL Input IODELAY相位校正信号
DELAY_DATA_CE Input 相位增加(减少)使能信号
DELAY_DATA_INC Input 相位增加(高)、减少(低)信号
BITSLIP Input 帧信号对齐命令引脚
CLK_IN Input 外部时钟输入引脚
CLK_DIV_OUT Output 时钟输出,用于FPGA内部逻辑同步信号
IO_RESET Input IO模块复位信号,高电平有效
(在ISE中从Instantation template中例化会有一个CLK_RESET信号,但在实际IP核里并没有连接该信号)
ISERDES有三种模式:NETWORKING、NETWORKING_PIPELINED、RETIMED。其中NETWORKING模式无法启用BITSLIP功能。NETWORKING_PIPELINED模式数据输出并未同步到内部全局时钟,但相比于RETIMED模式其具有更少的延迟。RETIMED模式则数据输出同步至全局时钟模块,由CLK_DIV_OUT同步。
BITSLIP用于字对齐的调整,来自DATA_IN_FROM_PINS的数据为LSB first,在调节过程中BITSLIP拉高一个CLKDIVOUT时钟周期,随后拉低至少一个全局时钟周期,其伪代码为:
After reset
If input frame data not equal to required frame pattern then
BITSLIP<=1;
ELSE
BITSLIP<=0;
BITSLIP_COMPLETE<=1;
Wait at least one global clock cycle
Repeat
值得注意的是,在实验过程中发现,在RETIMED模式下,BITSLIP应当至少拉低三个全局时钟周期方能有效进行字对齐。
对于ISERDES的控制,其控制流程如下:
(1) 上电复位
(2) 拉高DELAY_DATA_CAL进行延迟调节
(3) 等待20个全局时钟周期
(4) 置位IO_RESET一个全局时钟周期
(5) 进行BITSLIP控制字调节,若超时返回(2),完成调节则进行下一步
(6) 周期性进行延迟调节(拉高DELAY_DATA_CAL但无需进行IO_RESET)
实验代码如下
//========================================================================================================================================================
// Company: 
// Engineer: 
// Create Date: 
// Design Name:
// Module Name: 
// Target Device: 
// Tool versions: 
// Description: 
// Dependencies:
// Revision:
// Additional Comments:
//========================================================================================================================================================
module ISERDES_TEST#(
parameter DATA_WIDTH=8
)(
input IO_CLK_IN, //IO输入时钟
input IO_DATA_IN,
input reset_n, //复位信号,低电平有效
output [DATA_WIDTH-1:0] DATA_OUT,
output BITSLIP_COMPLETE //帧校准完成信号
);
//========================================================================================================================================================
//内部变量声明
//========================================================================================================================================================
wire [DATA_WIDTH-1:0] deserdes_data_w; //解串数据
wire sys_clk; //系统时钟
wire iserdes_delay_busy; //ISErDES忙标志
wire iserdes_cal; //延迟校准信号
wire iserdes_bitslip; //帧校准信号
wire iserdes_reset; //iserdes复位信号,高电平有效
reg [DATA_WIDTH-1:0] deserdes_data_r;
//========================================================================================================================================================
//ISERDES模块例化
//====================================================================================================================================================&#
  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值