带有JK触发器的Verilog分频器

时间:2014-05-27 13:24:35

标签: verilog computer-architecture

这是我的JK_FF代码:

module JK_FF(j,k,clk,Q);

input j,k,clk;
output reg Q;

always @(posedge clk)
begin
    if (j==0 && k==0)
        Q=Q;
    else if (j==0 && k==1)
        Q=0;
    else if (j==1 && k==0)
        Q=1;
    else
        Q=~Q;   
end
endmodule

这是我的分频器

module freqDivider(clk,Q);
input clk;
output reg Q;
reg j2;

JK_FF f1(.j(~Q),.k(0),.clk(clk),.Q(j2));
JK_FF f2(.j(j2),.k(0),.clk(clk),.Q(Q));


endmodule

这是电路:

enter image description here

输出不正确,总是1:

enter image description here

我的代码出了什么问题?

在答复后编辑(已解决):

如此愚蠢的错误,让VCC与JND混淆!!我将.k(0)改为.k(1),结果如下: enter image description here

1 个答案:

答案 0 :(得分:1)

使用JK-FlipFlop,并且k绑定为0,您只能设置输出或维持状态。

JK状态表是:

J  K | Q
--------
0  0 | Q  (Maintain)
0  1 | 0  (Reset)
1  0 | 1  (Set)
1  1 | ~Q (Toggle)

将k绑定为0,您现在拥有:

J  K | Q
--------
0  0 | Q  (Maintain)
1  0 | 1  (Set)

这就是为什么一旦你的输出达到1,它就会停留在那里。

虽然可以使用标准D类型轻松完成数字分频器。实际上是一个很好的小animation on wikipedia。或其他网站here

基本上每个翻牌都将D连接到Q_BAR。和Q_BAR成为下一阶段的时钟。