📜  Verilog | JK触发器(1)

📅  最后修改于: 2023-12-03 14:48:18.390000             🧑  作者: Mango

Verilog | JK触发器

什么是JK触发器?

JK触发器是基于SR触发器开发的一种触发器,它可以解决SR触发器中可能出现的输入错误,并且可以实现SR触发器所有的功能。JK触发器共有四种方式,分别为JK正极性触发器、JK负极性触发器、JK口令触发器和JK同步置边触发器,其中JK正极性触发器和JK负极性触发器是最常见的两种。

JK正极性触发器的Verilog代码实现

以下是JK正极性触发器的Verilog代码实现:

module JK_Positive_edge_trigger(
  input J,
  input K,
  input clk,
  output reg Q
);

always@(posedge clk) begin
  if (J && K) begin
    Q <= ~Q;
  end else if (J) begin
    Q <= 1'b1;
  end else if (K) begin
    Q <= 1'b0;
  end
end

endmodule

该代码实现了一个JK正极性触发器,当J和K都为1时,Q的值将会翻转;当J为1且K为0时,Q的值为1;当K为1且J为0时,Q的值为0。这个模块还包括了时钟的输入,当时钟的上升沿到来时,触发器状态可能发生改变。

其中,input定义了输入端口,output定义了输出端口,reg定义了可寄存的变量。always@(posedge clk)表示该代码段监听时钟上升沿的变化,并在其触发时执行代码段。

JK负极性触发器的Verilog代码实现

JK负极性触发器与JK正极性触发器类似,只是在输入的逻辑取反过程中有所不同。以下是JK负极性触发器的Verilog代码实现:

module JK_Negative_edge_trigger(
  input J,
  input K,
  input clk,
  output reg Q
);

always@(negedge clk) begin
  if (J && K) begin
    Q <= ~Q;
  end else if (J) begin
    Q <= 1'b0;
  end else if (K) begin
    Q <= 1'b1;
  end
end

endmodule

与JK正极性触发器不同的是,这个触发器监听的是时钟下降沿的变化,其他部分与JK正极性触发器实现类似。

总结

JK触发器是一种非常有用的数字电路,在数字系统设计中经常用到。Verilog可以方便实现JK触发器模块,有助于我们更方便地在FPGA上调试复杂的电路。