clock data 相位

1. 相位关系

外部器件发送数据的时钟沿,与fpga采样数据所用的时钟沿是不是都是相同类型的时钟边沿。

同沿捕获:外部器件在时钟的上升沿发送数据,fpga在时钟的上升沿捕获数据;

相反沿捕获:外部器件在时钟的上升沿发送数据,fpga在时钟的下降沿捕获数据。

通常用相反沿捕获,即RX在clock posedge接收数据,则TX在clock negedge发送数据,这样可以保证数据最好的采样效果。

ex. 可以配置外部AD,以满足相反沿捕获。

 

2. 源同步输出

在FPGA的源同步的系统设计中,常常我们会碰到把随路时钟和数据一同输出的情形。

在这样的系统中,要求输出时钟o_clk和o_dat要由严格的相位对齐关系,一般是边沿对齐或者中心对齐。

那么如何才能保证上述相位对齐关系呢?

(1) 第一种做法(这样用的人不少)。

对于数据,通常用系统时钟打一拍或者不打拍,组合逻辑直接输出。

对于时钟,通常直接把FPGA内部的系统时钟赋值到IO PAD的输出管脚上。

如下所示:
assign O_CLK = sys_clk;
always@(posedge sys_clk)
o_dat= data_i;
// or assign O_dat =data_i;

这样的处理方式,需要约束文件里面通过offset out(UCF,SDC类似)约束输出时钟和数据的相位关系。

上面的处理方式其实对于FPGA不是最优选择。而且对于时钟直接赋值输出的处理方式,在某些器件上还会产生错误!更好的处理方式是下面第2中:

(2) 第二种做法

对于输出的数据,无论如何都要做到最终送到IO PAD时,是寄存器输出。这样我们可以把寄存器约束到IOPAD里面的IO LOGIC里面,保证所有数据输出延迟的一致性。

对于时钟,通过类似ODDR2的元件来产生一个时钟镜像输出,以保证时钟是寄存器输出;

这样的处理方式,不管是数据,还是时钟,实际上都是寄存器输出,而且都可以把它们放置到IO PAD里面,保证了时钟和所有数据相对相位关系的一致性。

转自 http://xilinx.eetrend.com/d6-xilinx/blog/2015-12/9644.html

 

3. ODDR

在xilinx的FPGA中,要实现高频时钟的输出,并保证时钟质量,最有效的方案是使用ODDR来产生。

ODDR位于IOB里面,如果CLK是由BUFG驱动的,那么从CLK到ODDR的路径在每次实现中都是确定的,从OODR到FPGA芯片PAD的路径和延迟也是确定的,由ODDR产生的时钟是一个稳定的高质量时钟。

下面是原语使用实例。

ODDR2 #(
        .DDR_ALIGNMENT("NONE"), // Sets output alignment to "NONE", "C0" or "C1" 
        .INIT(1'b0),    // Sets initial state of the Q output to 1'b0 or 1'b1
        .SRTYPE("SYNC") // Specifies "SYNC" or "ASYNC" set/reset
        ) CLOCK_OUT(
          .Q(clk_out),   // 1-bit DDR output data
          .C0(clk_in),   // 1-bit clock input
          .C1(~clk_in),   // 1-bit clock input
          .CE(1'b1), // 1-bit clock enable input
          .D0(1'b1), // 1-bit data input (associated with C0),C0上升沿输出D0
          .D1(1'b0), // 1-bit data input (associated with C1),C1上升沿输出D1
          .R(1'b0),   // 1-bit reset input
          .S(1'b0)    // 1-bit set input
    );

--------------------- 
原文:https://blog.csdn.net/skyplain1984/article/details/62045436 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值