锁存器与触发器
锁存器
module latch (
// input
input clk,//50MHz
input a,
input b,
// output
output reg y
);
always @(*) begin
//if 完整与否
/*
if(a == 1)
y = b;
// 加上else,就不产生latch
else
y = 0;
*/
//case 完整与否
case(a)
0:y = b;
//加上default,不产生latch
default:y = 0;
endcase
end
endmodule
触发器
// dw20221015
// 使用Verilog语言设计一个触发器电路
module flip_flop (
//input
input clk,//50MHz
input rst_n,
input a,
// output
output reg y
);
// main code
always @(posedge clk or negedge rst_n) begin
if(rst_n == 1'b0)
y <= 1'b0;
else
y <= a;
end
endmodule
`timescale 1ns/1ns
module tb_flip_flop();
// input
reg sys_clk;
reg sys_rst_n;
reg a;
// output
wire y;
initial begin
sys_clk = 1'b0;
sys_rst_n = 1'b0;
a = 1'b0;
#200
sys_rst_n = 1'b1;
#100
a = 1'b1;
#60 a = 1'b0;
end
always #10 sys_clk = ~sys_clk;
flip_flop flip_flop_inst0(
.clk(sys_clk),
.rst_n(sys_rst_n),
.a(a),
.y(y)
);
endmodule
仅作记录。