上升沿触发的边沿JK触发器vivado代码
时间: 2023-07-10 22:37:15 浏览: 280
边沿JK触发器
以下是使用Verilog语言在Vivado中实现的上升沿触发的边沿JK触发器的代码:
```verilog
module edge_triggered_JK_ff (
input clk, // 时钟信号
input j, // J输入
input k, // K输入
output reg q, // Q输出
output reg qn // Q'输出
);
reg j_prev, k_prev; // 保存上一时刻的J和K输入
always @(posedge clk) begin
if (j && !j_prev && !k) begin // 上升沿触发
q <= 1'b1;
qn <= 1'b0;
end else if (!j && !k_prev && k) begin // 上升沿触发
q <= 1'b0;
qn <= 1'b1;
end else if (j && k) begin // 翻转
q <= ~q;
qn <= ~qn;
end
j_prev <= j;
k_prev <= k;
end
endmodule
```
在这个代码中,我们定义了一个模块 `edge_triggered_JK_ff`,它有一个时钟信号 `clk`,两个输入信号 `j` 和 `k`,两个输出信号 `q` 和 `qn`。这个模块使用 `always` 块来实现状态转移逻辑,当 `j` 和 `k` 的输入状态改变时,根据 JK 触发器的真值表来改变输出状态 `q` 和 `qn`。当时钟信号上升沿到来时,根据上一个时刻的输入状态和当前输入状态,判断当前状态是否需要改变。如果需要改变,则根据 JK 触发器的逻辑进行相应的处理。
阅读全文