牛客网Verilog刷题——VL2
牛客网Verilog刷题——VL2
- 题目
- 答案
题目
要求用verilog实现两个串联的异步复位的T触发器的逻辑,如下图所示。
模块的输入输出信号如下表,需要注意的是:这里rst是低电平复位,且采用异步复位的方式复位。
信号 | 类型 | 输入/输出 |
---|---|---|
clk | wire | Intput |
rst | wire | Intput |
qt | reg | Output |
模块的输入输出时序如下图所示。
在数字电路中,我们学过,T触发器的次态 Q ∗ Q^* Q∗取决于现态 Q Q Q和输入T,当T=0时, Q ∗ = Q Q^*=Q Q∗=Q,当T=1时, Q ∗ Q^* Q∗=~ Q Q Q。其真值表如下。
T T T | Q Q Q | Q ∗ Q^* Q∗ |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
答案
根据T触发器的原理,可以编写Verilog代码。
`timescale 1ns/1ns
module Tff_2 (
input wire data, clk, rst,
output reg q
);
//*************code***********//
reg data_1;
always @(posedge clk or negedge rst)if(!rst)data_1 <= 1'b0;else if(data)data_1 <= ~data_1;elsedata_1 <= data_1;always @(posedge clk or negedge rst)if(!rst)q <= 1'b0;else if(data_1)q <= ~q;elseq <= q;//*************code***********//
endmodule