JK 触发器:
1 源代码:
module jk_ff(clk,
rst_n,
set_n,
j,
k,
q
);
input clk;
input rst_n;
input set_n;
input j;
input k;
output q;
reg q;
always@(posedge clk)
if(!rst_n)
begin
q <= 1'b0;
end
//同步清零
else if(!set_n)
//同步置位
begin
q <= 1'b1;
else
end
begin
case({j,k})
2'b00 : q <= q;
2'b01 : q <= 0;
2'b10 : q <= 1;
default : q <= ~q;
endcase
end
endmodule
2 测试代码:
`timescale 1ns/1ns
module jk_tb;
reg clk;
reg rst_n;
reg set_n;
reg j;
reg k;
initial
begin
clk=1;
rst_n=1;
set_n=1;
j = 0;
k = 1;
#1000 rst_n=0;
#1000 rst_n=1;
#1000 set_n=0;
#1000 set_n=1;
end
always #2000 clk=~clk;
always #700
begin
if({j,k} == 2'b00) {j,k} = 2'b01;
else if({j,k} == 2'b01) {j,k} = 2'b10;
else if({j,k} == 2'b10) {j,k} = 2'b11;
else {j,k} = 2'b00;
end
jk_ff dai1(.clk(clk),.rst_n(rst_n),.set_n(set_n),.j(j),.k(k),.q(q));
endmodule
仿真截图: