集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 419|回复: 2

如何理解D触发器延迟一拍

[复制链接]
dameihuaxia 发表于 2022-6-17 11:02:17 | 显示全部楼层 |阅读模式
D触发器在FPGA里用得很多,但我经常无法理解D触发器为什么能对数据延迟一个时钟周期(打一拍)。下面从信号处理的角度来谈一下我的理解。如发现理解有误,烦请留言指正。

D触发器形如:



`timescale 1ns/1ps
module d_flip_flop(
    input clk,
    input rst_n,
    input d,
    output reg q
  );

    always@(posedge clk or negedge rst_n)
    begin
        if(!rst_n)
        begin
            q <= 1'b0;
        end else begin
            q <= d;
        end
    end
endmodule
时序图如下:



解读如下:

        D触发器在时钟CLK上升沿采样,数据D在建立保持时间Tsu和Th内需要稳定不变,否则出现亚稳态!我们在这个时间“窗口”内采样到的数据即为D触发器采样到的数据,经过Tco(其中Tco < Th)的时间后,D触发器就会输出上述采样到的数据D,并且该数据会保持一个时钟周期T不变。

       为什么会有延迟一个时钟周期(打一拍)的效果呢?原因是,如果两个D触发器分别对D和D’这两个数据采样,则这两个触发器输出的结果将会一致的,即均为上图的Q!对比D’和Q会发现:Q比D’延迟了一个时钟,所以才会说对信号D延迟了一个时钟周期。

      D触发器是无法识别数据D在时钟上升沿后肆意变化的那部分(因为D触发器在非触发沿时是保持输出不变,而不会再采样数据的),所以才导致在D触发器看来D和D’是一模一样的信号!!      

      最后,有如下结论:
            1.数据D在建立保持时间窗口内必须保持稳定,D触发器采样到的就是该稳定数据。
            2.D触发器采样后,经过Tco时间后即可输出到Q
            3.保持时间过后,如果数据变化了,D触发器无法感知
            4.Tco < Th,且 Th很小,均由fpga器件型号决定                                                                                                      

根据前3条,我们可以在仿真时认为,D触发器一直对CLK上升沿左边的信号进行采样,并保持一个时钟周期T的时间,因为一直采样的是前一刻(上一个T)数据D的值,并且保持T,所以长远来看,D触发器对数据D延迟了一个时间周期!
嘿哈嘿哈哈 发表于 2022-12-10 09:05:34 | 显示全部楼层
如何理解D触发器延迟一拍
 楼主| dameihuaxia 发表于 2022-12-10 09:19:08 | 显示全部楼层
FPGA_100天之旅_电子琴设计
http://www.fpgaw.com/forum.php?m ... 1&fromuid=58166
(出处: fpga论坛|fpga设计论坛)
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|集成电路技术分享 ( 京ICP备20003123号-1 )

GMT+8, 2024-6-26 15:14 , Processed in 0.076716 second(s), 30 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表