异步复位的串联T触发器

描述

题目描述:           

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

信号示意图:

波形示意图:

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

输出描述:

输出信号 q 
类型  logic

解答:

问题分析:

        1)异步复位

同步复位就是指复位信号只有在时钟上升沿到来时,才能有效

代码示例

always_ff @(posedge clk) begin
    if (!rst) begin 
        dout<=1'b0;
    end else begin
        dout<=din;
    end
end

异步复位是指无论时钟沿是否到来,只要复位信号有效,就对系统进行复位

代码示例

always_ff @(posedge clk or negedge rst_n) begin
    if(!rst_n) begin 
        dout <= 1’b0;
    end else begin
        dout <= din;
    end
end

        2)T触发器

 输入为1时,输出进行反转,输入为0时,输出保持。

        3)代码分析

根据T触发器的原理,相当于将此刻输入值与上一个时钟的输入值进行异或。

        4)代码如下

`timescale 1ns/1ns
module Tff_2 (
input     logic data, clk, rst,
output    logic q  
);
//*************code***********//

    logic data_1;
    always_ff @ (posedge clk or negedge rst) begin
        if (!rst) begin
            data_1 <= 1'b0;
            q     <= 'b0;
        end else begin
            data_1 <= data ^ data_1 ;
            q <= data_1 ^ q;
        end
    end
endmodule

        5)测试代码



`timescale 1ns/1ns



module testbench();
	logic clk=0;
	always #5 clk = ~clk;  // Create clock with period=10
// A testbench
logic data =0;
logic rst=0;
initial begin
    data = 0;
    rst = 0;
    #5
    rst =1;
    #25
    data =1;
    #25
    data =0;
    #25
    data =1;
end   
    
Tff_2 u1_Tff_2(
.data(data), 
.clk (clk), 
.rst (rst),
.q   (q)  
);    


endmodule

测试结果

运行时间:0ms

运行内存:0kb

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值