精华内容
下载资源
问答
  • 2021-04-19 20:08:30

    1.管脚图
    在这里插入图片描述
    2.异步复位

    library ieee;
    use ieee.std_logic_1164.all;
    
    entity dffyibu is
        port(d,clk,reset : in std_logic;
    	      q,qb : out std_logic);
    end dffyibu;
    
    architecture behave of dffyibu is
    begin
      process(clk,reset)
      begin  
        if(reset = '0')then
    		q <= '0';
    		qb <= '1';
    	 elsif(clk'event and clk = '1') then
    	   q <= d;
    		qb <= not d;
        end if;
      end process;
    end behave;
    

    3.同步复位

    library ieee;
    use ieee.std_logic_1164.all;
    
    entity dfftongbu is
        port(d,clk,reset : in std_logic;
    	      q,qb : out std_logic);
    end dfftongbu;
    
    architecture behave of dfftongbu is
    begin
      process(clk,reset)
      begin
        if(clk'event and clk = '1') then
          if(reset = '0') then
            q <= '0';
    		  qb <= '1';
    		else
            q <= d;
    		  qb <= not d;
    		end if;
        end if;
      end process;
    end behave;  
    
    更多相关内容
  • 74hc74双上升沿D触发器(有预置和清除端子)英文资料,原版说明书
  • Q都保持原值不变 文章至此一直讲述的都是D触发器,接下来阐述另外以一种触发器(图4),叫做上升沿D触发器 先让X4=0时,X5=1,所以X2=X1,此时X3不会因为X2的变化而变化 再让X4=1时,X5=0,所以X2的值停留在上次,X4...

    D是英文Data的意思

    之前的文章介绍了RS触发器的内部电路实现,该电路有个缺点,就是需要用R和S两个控制端输入,才能控制Q端的输出,为了减少复杂度,D触发器诞生了,D触发器通过一个输入端,控制一个输出端

    回顾一下RS触发器特性
    要使Q = 0,S=0,并且R=1;
    要使Q = 1,S=1,并且R=0

    可以发现R和S可以使用非门电路连接,那么该设想的电路图如下,该电路的确能达到上述公式的要求,但是触发器的意义也随之消失了,触发器原本的意义是:S第一次=1之后,Q=1,之后无论S为何值,只要R不=1,Q就应该一直为1,但是现在D=1,Q就=1,而D=0,Q就=0,那我要这触发器有何意义??直接干脆弄一条直线不就可以了吗,所以应该对图1继续改造
    在这里插入图片描述
    如图2所示,增加一个CP位,当CP=0的时候,无论D为何值,S和R都=0,所以Q的值保持不变,之前是什么,就是什么

    当CP=1时,此时让D=1,则Q=1,当Q=1之后,将CP=0,此时,无论D为何值,Q都=1

    如果想让Q=0,则将CP=1,然后让D=0,此时,Q=0,然后再讲CP=0,之后无论D为何值,Q都=0

    也就是说,要想改变Q的值,首先将CP=1才可以
    在这里插入图片描述
    D触发器符号如下,图3

    在这里插入图片描述
    结论:
    CP=1:D=0时Q=0,D=1时Q=1
    CP=0:无论D=0还是1,Q都保持原值不变

    文章至此一直讲述的都是D触发器,接下来阐述另外以一种触发器(图4),叫做上升沿D触发器
    先让X4=0时,X5=1,所以X2=X1,此时X3不会因为X2的变化而变化
    再让X4=1时,X5=0,所以X2的值停留在上次,X4=1导致X3=X2

    现在一切重来,我们断电,然后重新接通
    先让X4=1时,X5=0,X2不会因为X1变化而变化,但是X3=X2
    再让X4=0时,X5=1,此时X2=X1,但是X3不会有任何变化

    总结:
    (1)X4由0变1之后,X3会取X2在X4=0时候的值
    (2)X4由1变0之后,X3没什么改变
    因为结论中的(1),所以图4的触发器叫做上升沿触D触发器

    在这里插入图片描述
    上升沿D触发器电路图简化如下
    在这里插入图片描述
    结论:当CP从0变1之后,Q的值为CP=0时候的D的值

    移位寄存器
    接下来要说的是计算机中非常重要的一个内容:串行接口

    现在将数据U盘中的一个字节,值为1100 1101,通过USB口传送到电脑中,
    那么串行接口的方式是先将每个bit位按照顺序,依次,的放到位移寄存器中,然后CPU再从位移寄存器,通过总线,一次性将8个位的bit,都取走

    通过上述可知:
    U盘->位移寄存器,这个过程是串行过程
    位移寄存器->CPU,这个过程是并行过程

    一个位移寄存器的内部电路实现如下,由多个D触发器构成
    在这里插入图片描述

    下面图7中是电路初始的样子,其中绿色圆圈中的初始值是0,然后会将字节1100 1101这个值的每个bit位,从右向左依次往绿色圆圈中放

    字节剩余:1100 1101
    在这里插入图片描述

    下面图8是将最右侧的一个1放到绿色圆圈处

    字节剩余:1100 110
    在这里插入图片描述

    当按下Vcc旁边的开关键,则移位寄存器中的值如图9,之后开关弹起

    字节剩余:1100 11
    在这里插入图片描述

    当再次按下Vcc旁边的开关键,则移位寄存器中的值如图10

    字节剩余:1100 1
    在这里插入图片描述

    根据上面的原理依次类推,最终一个字节将按照如下排列

    字节剩余:没有剩余
    在这里插入图片描述

    上述的这个过程就是串行过程,然后如果谁用位移寄存器中的值,则谁就将8个bit,一次性取走,如图12这样
    在这里插入图片描述
    注意:为了方便说明,Vcc旁边是个开关,实际中Vcc旁边那个应该是个振荡器

    展开全文
  • VHDL 上升沿触发的D触发器,使用VHDL语言
  • 双边沿D触发器

    千次阅读 2021-04-02 14:46:04
    问题 遇到一个特别有意思的问题,链接: hdlbits.,其中模块描述如下: module top_module ( ...难道always语句同时在上升沿和下降沿捕捉信号d? verilog module top_module ( input clk, input d, ou

    问题

    遇到一个特别有意思的问题,链接: hdlbits.,其中模块描述如下:

    module top_module (
        input clk,
        input d,
        output q
    );
    

    在这里插入图片描述

    要求根据d信号的输入,输出q,但是d信号是在clk信号的双边沿变化,而q需要偏移d的半个周期,并跟随d的值变化。

    解决1?

    难道always语句同时在上升沿和下降沿捕捉信号d?

    verilog

    module top_module (
        input clk,
        input d,
        output q
    );
        reg q_reg;
        always@(posedge clk,negedge clk)begin
           q_reg<=d; 
        end
        assign q= q_reg;
    endmodule
    

    好家伙直接综合不了。

    ERROR: [Synth 8-91] ambiguous clock in event control。//事件控制表达式不明确
    

    意味着always语句是无法同时将上升沿和下降沿设置成敏感延,那要是设置电平敏感呢?,在d高电平时,就输出q高电平,d低电平就输出q低电平。

    解决2?

    verilog

    module top_module (
        input clk,
        input d,
        output q
    );
        reg q_reg;
        always@(clk)begin
           q_reg = d; 
        end
        assign q= q_reg;
    endmodule
    

    直接综合成q直接连接d,只是vivado插入了IBUF,OBUF,虽然q确实是随着d变化的,但是它们之间的相位根本无法控制。也就无法完成寄存器用来稳定数据的功能。

    rtl

    在这里插入图片描述

    解决3?

    verilog

    换个思路,虽然always语句无法同时设置两种敏感事件,那要是用一个always对上升沿敏感,一个always对下降沿敏感,并利用clk的电平变化,clk高电平输出always对上升沿敏感捕获的值,clk低电平输出always对下降沿敏感捕获的值,这样交替就可以输出双边沿变化d的信号。

    module top_module (
        input clk,
        input d,
        output q
    );
        reg q1,q2,q_reg;
        assign q = q_reg;
        always@(posedge clk)begin
           q1<=d; 
        end
        always@(negedge clk)begin
           q2<=d; 
        end
        always@(clk)begin
            if(clk)
            q_reg = q1;
            else 
            q_reg = q2;
        end
    endmodule
    

    rtl

    在这里插入图片描述

    sim

    module tb(
    
        );
    
    reg clk;
    reg switch;
    reg d1,d2;
    initial begin
       clk          =   0;
       switch       =   0;
       d1           =   0;
       d2           =   0;
       #1 switch    =   1;
    end 
    always #10 clk = ~clk;
        wire q;
        wire d,Q;
        always @(posedge clk)
        d1<=    $random;
        always @(negedge clk)
        d2<=    $random;
    
       ODDR #(
          .DDR_CLK_EDGE("SAME_EDGE"), // "OPPOSITE_EDGE" or "SAME_EDGE" 
          .INIT(1'b0),    // Initial value of Q: 1'b0 or 1'b1
          .SRTYPE("SYNC") // Set/Reset type: "SYNC" or "ASYNC" 
       ) orrt_test (
          .Q(Q),   // 1-bit DDR output
          .C(clk),   // 1-bit clock input
          .CE(1'b1), // 1-bit clock enable input
          .D1(d1), // 1-bit data input (positive edge)
          .D2(d2), // 1-bit data input (negative edge)
          .R(1'b0),   // 1-bit reset
          .S(1'b0)    // 1-bit set
       );
     assign d = switch?Q:1'b0;
     top_module  test(
        .clk(clk),
        .d(d),
        .q(q)
    );
    endmodule
    

    增加36行的原因,是因为在vivado 仿真的时候,ODDR原语输出Q信号有100ps的不定态,若不加上会导致解法四的仿真top_module输出q信号是x。

    36: assign d = switch?Q:1'b0;
    

    其中仿真d信号利用 ODDR原语在clk上下沿输出,可以看到模块输出的q信号确实是寄存了d信号,但是延迟了1个半周期。并不完美切合题目。

    在这里插入图片描述

    解法4

    verilog

    官方的答案

    module top_module(
    	input clk,
    	input d,
    	output q);
    	
    	reg p, n;
    	
    	// A positive-edge triggered flip-flop
        always @(posedge clk)
            p <= d ^ n;
            
        // A negative-edge triggered flip-flop
        always @(negedge clk)
            n <= d ^ p;
        
        // Why does this work? 
        // After posedge clk, p changes to d^n. Thus q = (p^n) = (d^n^n) = d.
        // After negedge clk, n changes to p^n. Thus q = (p^n) = (p^d^p) = d.
        // At each (positive or negative) clock edge, p and n FFs alternately
        // load a value that will cancel out the other and cause the new value of d to remain.
        assign q = p ^ n;
    endmodule
    

    其中利用

    • 异或运算可以随意调换异或项位置并且保持运算后结果不变。

    p ⊕ d ⊕ p = d ⊕ p ⊕ p p\oplus d\oplus p = d\oplus p\oplus p pdp=dpp

    • 0和任意项异或,依然保持任意项的原值。

    0 ⊕ 1 = 1 0 ⊕ 0 = 0 \begin{aligned} 0\oplus1&=1\\ 0\oplus0&=0 \end{aligned} 0100=1=0

    正如它所注释的,在clk上升沿
    q = ( p ⊕ n ) = ( d ⊕ n ⊕ n ) = d q = (p\oplus n) = (d\oplus n\oplus n) = d q=(pn)=(dnn)=d
    在clk下降沿
    q = ( p ⊕ n ) = ( p ⊕ d ⊕ p ) = ( d ⊕ p ⊕ p ) = d q = (p\oplus n) = (p\oplus d\oplus p) =(d\oplus p\oplus p)= d q=(pn)=(pdp)=(dpp)=d

    rtl

    在这里插入图片描述

    因此无论何时,q将始终跟随d信号的值,并延迟相对于d信号半个周期。

    sim

    由于p,n寄存器未赋初值,同样会导致在vivado里面仿真不了,这和上一个不一样,这里n是x,则p<=d^n也将是x,最终的输出也将是x。故增加一个赋初值的语句。

      module top_module (
        input rst_n,
        input clk,
        input d,
        output q
    );
       reg p ;
       reg n ;
    initial begin
       p = 0;
       n = 0;
    end
        always @(posedge clk)
            p   <= d ^ n;
            
        always @(negedge clk)
            n   <= d ^ p;
        
        assign q = p ^ n;
    
     endmodule
    

    仿真代码和解法3的一致。

    可以看到模块输出的q信号不但寄存了d信号,并且延迟了半个周期,满足题目要求。

    在这里插入图片描述

    展开全文
  • 用proteus实现上升沿D触发器做寄存器

    万次阅读 2017-10-21 00:27:46
    又R-S触发器可以做成D触发器, 由两个D触发器可以做成上升沿D触发器, 由上升沿D触发器可以做成1个bit的寄存器, 来看看: 我们看下输入信号D和输出信号Q, 要把D的值保存到Q, 怎么办呢? 从图可以看出, ...

           又R-S触发器可以做成D触发器, 由两个D触发器可以做成上升沿D触发器, 由上升沿D触发器可以做成1个bit的寄存器, 来看看:

            我们看下输入信号D和输出信号Q,   要把D的值保存到Q, 怎么办呢? 从图可以看出, CLK信号必须从低电平变成高电平才可, 这就是上升沿触发器, 实现了1bit寄存器的功能。

            

     

    展开全文
  • D触发器、D上升沿触发器、T触发器

    万次阅读 2018-03-25 13:13:16
    2,D上升沿触发器,将D触发器串联,只有当仓库管理员打开门的一瞬间,D才能进去。3,T触发器,将D上升沿触发器的下Q与D串联,形成首位相连。则每次CP触发上升沿,上Q与下Q会1和0切换。可理解为不断递增1。...
  • 基本触发器之间是可以互相转换的,JK触发器和D触发器是两种最常用的触发器,别的触发器可以通过这两种触发器转化得来,它们之间也可相互转化。  JK触发器具有两个输入控制端,它转化为别的触发器十分方便。  ...
  • CC4013 双上升沿D触发器,是较常用的触发器,这里推荐给大家一起分享。
  • 这篇文章将用场效应管设计一个D触发器(全电路只用到PMOS和NMOS) 目录 D触发器: ...
  • 双边沿D触发器(Dual edge D flip flop)

    千次阅读 2020-07-24 15:43:59
    在FPGA中不支持 always @(posedge clk or negedge clk) is not accepted as a legal sensitivity list.想要实现双边沿触发其实很简单,只要两个always块就行always @(posedge clk)和always @(negedge clk)
  • 基于Multisim14,绘制的JK触发器及D触发器构成计数型触发器仿真.
  • D触发器理解

    千次阅读 2021-02-03 16:14:04
    D触发器在FPGA里用得很多,但我经常无法理解D触发器为什么能对数据延迟一个时钟周期(打一拍)。下面从信号处理的角度来谈一下我的理解。如发现理解有误,烦请留言指正。 D触发器形如: `timescale 1ns/1ps...
  • 为了避免出现空翻,可以把状态变化时机限定在时钟信号的上升沿或者下降沿,这种类型的器件称为触发器(Trigger/Flipflop)。 下降沿触发的主从D触发器原理图(之一)如下: 其特征方程如下: Q(t+1) = D Clk下降沿...
  • 目录一、D触发器原理二、D触发器的设计三、调用D触发器并仿真四、用Verilog语言实现D触发器五、总结六、参考链接 一、D触发器原理 D触发器是一个具有记忆功能的,具有两个稳定状态的信息存储器件,是构成多种时序...
  • 使用 D 触发器的 7 位计数器设计
  • 同步上升沿触发的D触发器 异步上升沿触发的D触发器 JK触发器 高电平触发的JK触发器 异步高电平触发的JK触发器 同步上升沿触发的JK触发器 同步下降沿触发的JK触发器 异步上升沿触发的JK触发器 T触发器 同步...
  • 含有上升沿触发的D触发器含有上升沿触发的D触发器含有上升沿触发的D触发器含有上升沿触发的D触发器
  • 默认D触发器里面数据是0,假如A、B两个数据依次从D端输入,逻辑如下: 第一个时钟 上升沿之前:主锁存器输入D端数据A,从锁存器锁存前一数据0; 上升沿之后:主锁存器锁存D端数据A,从锁存器输出主锁存器中数据A。 ...
  • VHDL——D触发器

    千次阅读 2021-04-10 15:40:06
    1.端口 2.VHDL语言 ... clk,d:in std_logic; q:out std_logic ); end dff1; architecture behavior of dff1 is signal q1:std_logic; --引进内部节点信号 begin process(clk) --进程语句以及
  • EDA实验:各类D触发器

    2021-11-16 09:18:45
    1,基本D触发器 源程序: module dff_20211103(clk,d,q1); //基本D触发器 input clk,d ; output reg q1 ; always @(posedge clk) begin q1<=d; //基本D触发器 end endmodule 激励文件: module smi_dff_...
  • 用的触发器是SN74LVC1G79DCKR...实际使用是却发现CLK下降沿时Q也会输出D的状态,如下图(黄色CLK,红色D,蓝色Q): 手册如下:SN74LVC1G79D.pdf(431.28 KB ) https://bbs.elecfans.com/jishu_1814976_1_1.html ...
  • 在学习verilog之前,我们先学习一下D触发器以及它的代码。 FPGA的设计基础是数字电路,因此很多同学会认为我们要先学好数字电路之后,才学习FPGA。但是,数字电路教材的内容很多.例如:JK触发器、RS触发器、真值表...
  • 为什么D触发器需要建立时间与保持时间 定义 建立时间:时钟有效沿到来之前的某段时间内,数据必须稳定,这段时间称为建立时间,用Tsetup或者Tsu表示。 保持时间:时钟有效沿到来之后的某段时间内,数据必须稳定,这...
  • 时序逻辑电路,D触发器,JK触发器构成的异步加法器,同步加法器,异步减法器。Multisim仿真电路,里面包含三个电路。
  • D触发器

    万次阅读 2017-02-05 17:29:38
    1. 一个基本的上升沿D触发器 根据上面的电路符号和功能表不难看出,一个基本的D 触发器的工作原理为:当时钟信号的上升沿到来时,输入端口D 的数据将传递给输出端口Q 和输出端口Q。在此,输出端口Q 和输出...
  • 用场效应管搭建D触发器 用D触发器制作13进制计数器 层次模型层次带标题 同步高电平D触发器 异步D触发器 同步上升沿D触发器 异步上升沿D触发器的制作
  • 如何理解D触发器延迟一拍

    千次阅读 2019-07-02 17:04:52
    D触发器在FPGA里用得很多,但我经常无法理解D触发器为什么能对数据延迟一个时钟周期(打一拍)。下面从信号处理的角度来谈一下我的理解。如发现理解有误,烦请留言指正。 D触发器形如: `timescale 1ns/1ps ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,459
精华内容 1,783
关键字:

上升沿d触发器

友情链接: ussrpgimemaintanence.rar