📅  最后修改于: 2023-12-03 15:06:18.145000             🧑  作者: Mango
JK 触发器是由两个反馈线路组成的电路,可以被用作触发器,计数器,以及某些类型的逻辑门。当 J(标记为 J)和 K(标记为 K)两个输入都为 0(低电平)时,JK 触发器会保持上一个状态。当 J 为 1(高电平),K 为 0(低电平)时,JK 触发器会置为 1(高电平),反之同理。
JK 触发器的追溯时间相比于 D 触发器和 T 触发器都有所改善。D 触发器的追溯时间比 JK 触发器长,因为 D 触发器要完成解码和反相过程。T 触发器的追溯时间比 JK 触发器更长,因为 T 触发器需要半个时钟周期才能完成反相操作。
JK 触发器难以设计,但是它比 T 触发器更灵活。JK 触发器可以被用作 T 触发器,只需要将 J 和 K 接在一起即可。
| J | K | Q | Q' | | - | - | - | -- | | 0 | 0 | Q(t) | Not Q(t) | | 0 | 1 | 0 | 1 | | 1 | 0 | 1 | 0 | | 1 | 1 | Not Q(t) | Q(t) |
我们可以看到,当 J 和 K 都为 1 时,触发器的状态会倒转。这使得 JK 触发器成为时序电路的一个有用工具。
输入 J 和 K 被连接到各自的反馈线路。这个电路使用了两个异或门和两个与门。
module jk_flip_flop(
input wire clk, // 时钟信号
input wire j, // J 输入
input wire k, // K 输入
output wire q, // Q 输出
output wire q_n // Q' 输出
);
reg q1;
always @(posedge clk) begin
if (j & ~k)
q1 <= 1'b1;
else if (~j & k)
q1 <= 1'b0;
end
assign q = q1;
assign q_n = ~q1;
endmodule
以上是一个使用 Verilog 语言实现的 JK 触发器,该代码可以被实现在 FPGA、ASIC 和其他数字电路中。
JK 触发器是一种可用于触发器,计数器和逻辑门的有用工具。JK 触发器比 T 触发器更灵活,其追溯时间比 D 触发器稍短。实现 JK 触发器的电路比较复杂,但有很多编程语言可以用于实现 JK 触发器,例如 Verilog,VHDL 等。