• 触发器(基本的SR触发器、同步触发器、D触发器)


    一、能够存储1位二值信号的基本单元电路统称为触发器(Filp-Flop)

      触发器是构成时序逻辑电路的基本逻辑部件。它有两个稳定状态:“0”和“1”。在不同的输入情况下,它可以被置0状态或1状态,当输入信号消失后,所置成的状态能够保持不变。所以触发器可以记忆1位二值的信号。根据逻辑功能的不同,触发器可以分为SR触发器、D触发器、JK触发器、T和T'触发器。按照结构形式的不同,又可分基本SR触发器、同步触发器、主从触发器和边沿触发器。

      

    其状态图:

    a、当触发器处在0状态,即Q = 0,若S'R' = 10或11时,触发器仍为0状态。若S'R' = 01,触发器翻转成为1状态。

    b、当触发器处在1状态,即Q = 1,若S'R' = 01或11时,触发器仍为1状态。若S'R' = 10,触发器翻转成为0状态。

    约束条件是S’R’不能同时为0。

    代码实现:

    module RS(rst_n,r,s,q,qn);
    input rst_n;
    input r;
    input s;
    output q;
    output qn;
    
    reg q;
    reg i;
    always @(rst_n or q)
    if(!rst_n)
        i = 0;
    else if(!q)
        i = 0;
    else
        i = 1;
        
    always @(rst_n or r or s)
    if(!rst_n)
        q = 0;
    else
        case(i)
        0://置0
        if(({r,s} == 2'b01) || ({r,s} == 2'b11))
            q = 0;
        else if(({r,s} == 2'b10))
            q = 1;
        
        1://置1
        if(({r,s} == 2'b10) || ({r,s} == 2'b11))
            q = 1;
        else if(({r,s} == 2'b01))
            q = 0;
        endcase
        
    assign qn = ~q;
    
    endmodule
    View Code

    仿真代码:

    `timescale 1ns/1ns
    module RS_top;
    reg rst_n;
    reg r;
    reg s;
    wire q;
    wire qn;
    
    initial begin
        rst_n = 0;
        #10;
        rst_n = 1;
        repeat(5) 
        begin
            r = 0;
            s = 1;
            #20;
        
            r = 1;
            s = 1;
            #20;
        
            r = 1;
            s = 0;
            #20;
            
            r = 1;
            s = 1;
            #20;
    
        end
    end
    RS rs1(
            .rst_n(rst_n),
            .r(r),
            .s(s),
            .q(q),
            .qn(qn)
            );
            
    endmodule
    View Code

    仿真波形:

    可以看到仿真结果是对的。

    二、电平触发SR触发器,即同步SR触发器。在基本的SR与非门电路上在加了一个与非门电路。

                       

    代码实现:

    module RS(rst_n,clk_en,r,s,q,qn);
    input clk_en;
    input rst_n;
    input r;
    input s;
    output q;
    output qn;
    
    reg i;
    reg q;
    reg qn;
    
    always @(rst_n or q)
    if(!rst_n)
        i = 0;
    else if(!q)
        i = 0;
    else
        i = 1;
        
    always @(rst_n or r or s or clk_en)
    if(!rst_n) begin
        q = 0;
        qn = 1;
    end
    else if(clk_en)//为1时,RS输入信号有效
        case(i)
        0://置0
        if(({r,s} == 2'b10) || ({r,s} == 2'b11))
        begin
            q = 0;
            qn = 1;
        end
        else if(({r,s} == 2'b01))
        begin
            q = 1;
            qn = 0;
        end
        
        1://置1
        if(({r,s} == 2'b01) || ({r,s} == 2'b11))
        begin
            q = 1;
            qn = 0;
        end
        else if(({r,s} == 2'b10))
        begin
            q = 0;
            qn = 1;
        end
        endcase
    endmodule
    View Code

    仿真代码:

    `timescale 1ns/1ns
    module RS_top;
    reg rst_n;
    reg clk_en;
    reg r;
    reg s;
    wire q;
    wire qn;
    
    initial begin
        rst_n = 0;
        #10;
        rst_n = 1;
        repeat(500) 
        begin
            r = 0;
            s = 1;
            #20;
            
            r = 1;
            s = 1;
            #20;
            
            r = 1;
            s = 0;
            #20;
            
            r = 1;
            s = 1;
            #20;
    
        end
    end
    initial begin
        clk_en = 0;
        #50;
        clk_en = 1;
        #500;
        clk_en = 0;
        #100;
        clk_en = 1;
        #500;
        clk_en = 0;
    end
    
    RS rs1(
            .rst_n(rst_n),
            .clk_en(clk_en),
            .r(r),
            .s(s),
            .q(q),
            .qn(qn)
            );
            
    endmodule
    View Code

    仿真波形:在clk_en低电平时,Q处于保持状态,只有在clk_en为高时,RS输入信号才有效。

    三、同步D触发器,是在同步SR触发器上演变过来的,D一端接到S,经过非门接到R:

                 

    代码实现比较简单:

    if(!d) begin
       q = 1'b0;
       qn = 1'b1;
    end
    else begin
       q = 1'b1;
       qn = 1'b0;
    end
  • 相关阅读:
    微软发布全球建筑物数据
    echarts 迁徙地图的实现
    React剖析之组件基础
    React剖析之状态管理
    日常小记微信小程序
    SpringCloud中集成OenFeign时设置请求服务超时时间
    SpringCloud中集成Hystrix后通过Dashboard实现图形化监控实现
    SpringCloud中集成Hystrix实现熔断(从实例入手)
    SpringCloud中集成Hystrix实现降级时通过FeignFallBack实现通配服务
    SpringCloud中集成OpenFeign实现服务调用
  • 原文地址:https://www.cnblogs.com/wen2376/p/3268327.html
Copyright © 2020-2023  润新知