异步复位的串联T触发器

题目描述:           

用verilog实现两个串联的异步复位的T触发器的逻辑,结构如图:

信号示意图:

波形示意图:

输入描述:


输入信号   data, clk, rst
类型 wire
在testbench中,clk为周期5ns的时钟,rst为低电平复位

输出描述:

输出信号 q 
类型  reg 

题解:

解析:

T触发器:时钟触发到来时输入为1时,输出翻转,输入为0时,输出保持;

本题是两级触发器,前一级触发器的输出是后一级触发器的输入;

通过这个逻辑可以发现,除了使用条件语句之外,也可以使用异或逻辑;

另外:条件语句本质可以用三目运算符替代,但是在always语句钟少用三目运算符;

代码:

`timescale 1ns/1ns
module Tff_2 (
input wire data, clk, rst,//rst 低电平复位
output reg q  
);

    reg q0;
        always@(posedge clk&nbs***bsp;negedge rst)begin//异或逻辑
            if(!rst)begin
            q0<=1'b0;
            q<=1'b0;//时序逻辑:非阻塞赋值;
            end
            else begin
                q0 <= data^q0;
                q<= q0^q;
            end              
    end
    /*always@(posedge clk&nbs***bsp;negedge rst)begin   //条件语句
        if(!rst)
            q0<=0;//时序逻辑:非阻塞赋值;
        else begin
            if (data==1)begin
                q0<=~q0;
            end
            else begin
                q0<=q0;
            end                
        end            
    end
    always@(posedge clk&nbs***bsp;negedge rst)begin
        if(!rst)
            q<=0;//时序逻辑:非阻塞赋值;
        else begin
            if (q0==1)begin
                q<=~q;
            end
            else begin
                q<=q;
            end                
        end            
    end*/
   
endmodule

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值