0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

门延迟类型介绍

CHANBAEK 来源:数字IC与好好生活的两居室 作者:除夕之夜啊 2023-03-30 11:31 次阅读

门延迟类型

前两节中所介绍的门级电路都是没有延迟的,实际门级电路都是有延迟的。

Verilog 中允许用户使用门延迟,来定义输入到其输出信号的传输延迟。

门延迟类型主要有以下 3 种。

上升延迟

在门的输入发生变化时,门的输出从 0,x,z 变化为 1 所需要的转变时间,称为上升延迟。

图片

下降延迟

在门的输入发生变化时,门的输出从 1,x,z 变化为 0 所需要的转变时间,称为下降延迟。

图片

关断延迟

关断延迟是指门的输出从 0,1,x 变化为高阻态 z 所需要的转变时间。

图片

门输出从 0,1,z 变化到 x 所需要的转变时间并没有被明确的定义,但是它所需要的时间可以由其他延迟类型确定,即为以上 3 种延迟值中最小的那个延迟。

门延迟可以在门单元例化时定义,定义格式如下:

gate_type [delay]  [instance_name]  (signal_list) ;

其中,delay 的个数可以为 0 个、1 个、2 个或 3个 。

下表为不同延迟个数时,各种类型延迟的取值情况说明。

延迟类型 无延迟 1 个延迟 (d) 2 个延迟 (d1, d2) 3 个延迟 (d1, d2, d3)
上升 0 d D1 D1
下降 0 d D2 D2
关断 0 d 最小(D1, D2) D3
to_x 0 d 最小(D1, D2) 最小(D1, D2, D3)

如果用户没有指定延迟值,则默认延迟为 0 。

如果用户指定了 1 个延迟值,则所有类型的延迟值大小均为此值。

如果用户指定了 2 个延迟值,则他们分别代表上升延迟和下降延迟,关断和“to_x”延迟均为这 2 种延迟值中最小的那个。

如果用户指定了 3 个延迟值,则他们分别代表上升延迟、下降延迟和关断延迟,“to_x”延迟为这 3 种延迟值中最小的那个。

带有延迟值的门级单元例化如下:

//rise, fall and turn-off delay are all 1
   and #(1)             (OUT1, IN1, IN2) ;
   //rise delay = 2.1, fall dalay = 2, trun-off delay = 2
   or  #(2.1, 2)        (OUT2, IN1, IN2) ;
   //rise delay = 2, fall dalay = 1, trun-off delay = 1.3
   bufif0 #(2, 1, 1.3)  (OUT3, IN1, CTRL) ;

需要说明的是,多输入门(如与门)和多输出门(如非门)最多只能定义 2 个延迟,因为输出不会是 z 。

三态门和单向开关单路(MOS 管、CMOS 管等)可以定义 3 个延迟。

上下拉门级电路不会有任何的延迟,因为它表示的是一种硬件属性,上下拉状态不会发生变化,且没有输出值。

双向开关(tran)在传输信号时没有延迟,不允许添加延迟定义。

带有控制端的双向开关(tranif1, tranif0)在开关切换的时候,会有开或关的延迟,可以给此类双向开关指定 0 个、1 个或 2 个的延迟,例如:

//turn-on and turn-off delay are all 1
   tranif0 #(1)         (inout1, inout2, CTRL);
   //turn-on delay = 1, turn-off delay = 1.2
   tranif1 #(1, 1.2)    (inout3, inout4, CTRL);

最小/典型/最大延迟

由于集成电路制造工艺的差异,实际电路中器件的延迟总会在一定范围内波动。 Verilog 中,用户不仅可以指定 3 种类型的门延迟,还可以对每种类型的门延迟指定其最小值、典型值和最大值。 在编译或仿真阶段,来选择使用哪一种延迟值,为更切实际的仿真提供了支持。

最小值:门单元所具有的最小延迟。

典型值:门单元所具有的典型延迟。

最大值:门单元所具有的最大延迟。

下面通过例化实例,来说明最小、典型、最大延迟的用法。

//所有的延迟类型:最小延迟 1, 典型延迟 2, 最大延迟 3
   and #(1:2:3)             (OUT1, IN1, IN2) ;
   //上升延迟:最小延迟 1, 典型延迟 2, 最大延迟 3
   //下降延迟:最小延迟 3, 典型延迟 4, 最大延迟 5
   //关断延迟:最小延迟 min(1,3), 典型延迟 min(2,4), 最大延迟 min(3,5)
   or  #(1:2:3, 3:4:5)        (OUT2, IN1, IN2) ;
   //上升延迟:最小延迟 1, 典型延迟 2, 最大延迟 3
   //下降延迟:最小延迟 3, 典型延迟 4, 最大延迟 5
   //关断延迟:最小延迟 2, 典型延迟 3, 最大延迟 4
   bufif0 #(1:2:3, 3:4:5, 2:3:4)  (OUT3, IN1, CTRL) ;

D 触发器

下面从门级建模的角度,对 D 触发器进行设计。

SR 触发器

SR 触发器结构图及真值表如下所示。

1> 当 S 为低电平,G1 输出端 Q 为高电平,并反馈到 G2 输入端。 如果此时 R 为高电平,则 G2 输出端 Q' 为低电平。

2> R 为低电平 S 为高电平时,分析同理。

3> S 与 R 均为高电平时,如果 Q = 1 (Q' = 0) , 则 Q 反馈到 G2 输入端后输出 Q' 仍然为 0, Q' 反馈到 G1 输入端后输出 Q 仍然是 1,呈现稳态。 如果 Q =0 (Q' = 1) 同理,Q 与 Q' 的值仍然会保持不变。 即 S 与 R 均为高电平时该电路具有保持的功能。

4> 如果 S 与 R 均为低电平,则输出 Q 与 Q' 均为高电平,不再成互补的关系。 所以此种情况是禁止出现的。

图片

图片

SR 锁存器

在基本的 SR 触发器前面增加 2 个与非门,可构成带有控制端 SR 锁存器。

SR 锁存器及其真值表如下所示。

当 EN=0 时,G3、G4 截止,SR 锁存器保持输出状态不变。

当 EN=1 时,与基本的 SR 触发器工作原理完全相同。

图片

图片

D 锁存器

基本的 SR 触发器输入端不能同时为 0, 带有控制端的 SR 锁存器输入端不能同时为 1,否则会导致输出端 Q 与 Q' 的非互补性矛盾。

为消除此种不允许的状态,在带有控制端的 SR 锁存器结构中加入取反模块,保证 2 个输入端均为相反逻辑,则形成了 D 锁存器。

其结构图和真值表如下所示。

1> 当 EN=1 时,输出状态随输入状态的改变而改变。

2> 当 EN=0 时,输出状态保持不变。

图片

图片

D 锁存器是一种电平触发。

如果在 EN=1 的有效时间内,D 端信号发生多次翻转,则输出端 Q 也会发生多次翻转。 这降低了电路的抗干扰能力,不是实际所需求的安全电路。

为提高触发器的可靠性,增强电路抗干扰能力,发明了在特定时刻锁存信号的 D 触发器。

D 触发器

将两个 D 锁存器进行级联,时钟取反,便构成了一种简单的 D 触发器,又名 Flip-flop。

其结构图和真值表如下所示。

第一级 D 锁存器又称为主锁存器,在 CP 为低电平时锁存。 第二级 D 锁存器又称为从锁存器,时钟较主锁存器相反,在 CP 为高电平时锁存。

图片

图片

1> CP=1 时,主锁存器输出端 Qm 会和 D 端信号的变化保持一致,而从锁存器处于保持状态,输出 Qs 保持不变。

2> CP由高电平变为低电平时,主锁存器锁存当前 D 的状态,传递到输出端 Qm 并保持不变。 而从锁存器输出端 Qs 会和 Qm 的变化保持一致。 此时处于锁存状态下的主锁存器输出端 Qm 会保持不变,所以 D 触发器输出端 Qs 端得到新的 Qm 值后, 也会保持不变。

综上所述,D 触发器输出端 Qs 只会在时钟 CP 下降沿对 D 端进行信号的锁存,其余时间输出端信号具有保持的功能。

将双级 D 锁存器展开为门级结构,如下图所示。

图片

对 D 触发进行门级建模,并加入门级延时,verilog 模型如下:

module D_TRI(
            input       D, CP,
            output      Q, QR);


   parameter RISE_TIME = 0.11 ;
   parameter FALL_TIME = 0.07 ;


   //part1, not gate
   wire         CPN, DN ;
   not  #(RISE_TIME, FALL_TIME)         (CPN, CP);
   not  #(RISE_TIME, FALL_TIME)         (DN, D);


   //part2, master trigger
   wire         G3O, G4O ;
   nand #(RISE_TIME, FALL_TIME)         (G3O, D, CP);
   nand #(RISE_TIME, FALL_TIME)         (G4O, DN, CP);
   wire #(RISE_TIME, FALL_TIME)         G1O, G2O ;
   nand #(RISE_TIME, FALL_TIME)         (G1O, G3O, G2O);
   nand #(RISE_TIME, FALL_TIME)         (G2O, G4O, G1O);


   //part3, slave trigger
   wire         G7O, G8O ;
   nand  #(RISE_TIME, FALL_TIME)        (G7O, G1O, CPN);
   nand  #(RISE_TIME, FALL_TIME)        (G8O, G2O, CPN);
   wire         G5O, G6O ;
   nand  #(RISE_TIME, FALL_TIME)        (G5O, G7O, G6O);
   nand  #(RISE_TIME, FALL_TIME)        (G6O, G8O, G5O);


   assign       Q = G5O ;
   assign       QR = G6O ;


endmodule

testbench 编写如下:

`timescale 1ns/1ps
module test ;
   reg  D, CP = 0 ;
   wire Q, QR ;


   always #5 CP = ~CP ;


   initial begin
      D = 0 ;
      #12 D = 1 ;
      #10 D = 0 ;
      #14 D = 1 ;
      #3  D = 0 ;
      #18 D = 0 ;
   end


   D_TRI u_d_trigger(
        .D      (D),
        .CP     (CP),
        .Q      (Q),
        .QR     (QR));


   initial begin
      forever begin
         #100;
         //$display("---gyc---%d", $time);
         if ($time >= 1000) begin
            $finish ;
         end
      end
   end


endmodule

仿真结果如下。

由图可知,Q/QR 信号均在时钟 CP 下降沿采集到了 D 端信号,并在单周期内保持不变,且输出有延迟。

图片

对 cap3 时刻进行放大,对延时进行追踪,如下图所示。

CP 端到 CPN 端有上升延迟,时间为 110ps;

CPN 端到 G8O 端有下降延迟,时间为 70ps;

G8O 端到 G6O 端有上升延迟,时间为 110ps;

G6O 端到 Q 端有下降延迟,时间为 70ps;

共 360ps,符合设置的门延迟。

图片

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 仿真
    +关注

    关注

    50

    文章

    4040

    浏览量

    133412
  • 信号
    +关注

    关注

    11

    文章

    2779

    浏览量

    76623
  • Verilog
    +关注

    关注

    28

    文章

    1343

    浏览量

    109979
  • 时钟
    +关注

    关注

    10

    文章

    1720

    浏览量

    131359
  • 门级电路
    +关注

    关注

    0

    文章

    15

    浏览量

    1955
收藏 人收藏

    评论

    相关推荐

    如何有效评估SAN网络延迟(latency)?

    SAN网络性能有着至关重要的作用,今天主要给家介绍SAN网络主要延迟类型(主要包括链路延迟和交换机延迟,主机
    发表于 01-07 16:20

    PlanAhead报告时间:路径延迟类型代表什么?

    嗨,我正在尝试为Virtex 4QV进行时序分析。有人知道报告计时选项中的路径延迟类型“最大/最小”是什么意思吗?最差温度的类型是“Max”,最佳温度是Min?如果是这样,温度是多少?最好的祝福
    发表于 02-25 09:51

    如何检查AND的逻辑

    你好。我是在FPGA上设计系统的初学者。我的fpga是XC7K325T -2 FFG900(knitex - 7系列)我想计算基本15位2输入加法器的逻辑延迟。如果我能检查AND或OR
    发表于 05-25 07:28

    2016版快速资料

    本子里各种类型的快速,详细介绍,欢迎大家下载。
    发表于 05-13 15:07 0次下载

    智能锁厂家诺托告诉你不同类型如何搭配智能锁

    每家每户类型都不同,因此在选择智能锁的时候需要根据不同类型实际情况搭配不同尺寸与风格的智能锁。下面智能锁厂家诺托来为大家简单的介绍
    发表于 01-11 14:30 894次阅读

    Xilinx Vivado I/O延迟约束介绍

    1 I/O延迟约束介绍 要在设计中精确建模外部时序,必须为输入和输出端口提供时序信息。Xilinx Vivado集成设计环境(IDE)仅在FPGA边界内识别时序,因此必须使用以下命令指定超出这些边界
    的头像 发表于 11-29 10:01 5123次阅读

    Verilog HDL提供了哪两种类型的显式时序控制

    Verilog HDL提供了两种类型的显式时序控制:一种是延迟控制,即定义执行语句的延迟时间;另一种是事件控制,只有当某一事件发生时才允许该语句继续向下执行。 Verilog仿真时,仿真时间由以下
    的头像 发表于 07-02 10:52 1747次阅读

    MOSFET级电路的深入介绍

    MOSFET级电路的深入介绍
    发表于 10-24 15:01 0次下载

    IGBT极驱动设计规范说明

    目录 定义和分类 IGBT的使用和极电路设计 各类型的驱动电路介绍 IGBT过压的产生和抑制机理
    发表于 02-24 15:15 4次下载
    IGBT<b class='flag-5'>门</b>极驱动设计规范说明

    SystemVerilog/Verilog中的各种延迟模型

    如果信号从0/1/z变化到x,那么此时的门传输延迟为上述三种延迟最小的.另外,在进行仿真时,有些逻辑的输出不可能会出现高阻态z,所以对于这些逻辑实际上就不存在关断
    的头像 发表于 04-09 10:26 5135次阅读

    基本逻辑类型及其用途

      引言:在板极的逻辑控制中,基本逻辑的使用特别广泛,包括与门,或和外置信号驱动器,缓冲器等等,基本逻辑相比于分立元件搭建的逻辑,抗干扰能力和驱动能力更强,信号质量更好。运用最
    的头像 发表于 07-04 15:06 5444次阅读
    基本逻辑<b class='flag-5'>门</b>的<b class='flag-5'>类型</b>及其用途

    python变量与基本数据类型介绍

    1、前言 熟练掌握一编程语言,最好的方法就是充分了解,掌握基础知识,并亲自体验,多敲代码,熟能生巧。本文首先介绍python基础知识的保留字与标识符,然后将介绍在python中如何使用变量以及各种数据
    的头像 发表于 07-05 15:51 729次阅读

    磁通高精度电流传感器介绍及应用

    磁通高精度电流传感器介绍及应用
    发表于 08-11 10:18 57次下载

    孔径时间、孔径抖动、孔径延迟时间介绍

    电子发烧友网站提供《孔径时间、孔径抖动、孔径延迟时间介绍.pdf》资料免费下载
    发表于 11-27 11:40 0次下载
    孔径时间、孔径抖动、孔径<b class='flag-5'>延迟</b>时间<b class='flag-5'>介绍</b>

    电阻的封装类型介绍

    电阻的封装类型介绍
    的头像 发表于 12-29 10:18 3406次阅读