Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用JK触发器实现Verilog分频器_Verilog_Computer Architecture - Fatal编程技术网

用JK触发器实现Verilog分频器

用JK触发器实现Verilog分频器,verilog,computer-architecture,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

这是我的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
这是电路:

输出不正确,始终为1:

我的代码怎么了

回答后编辑(已解决):

这么愚蠢的错误,把VCC和JND搞混了!!我将.k(0)更改为.k(1),结果是:

使用JK触发器,并且
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型完成。实际上有一点点。或其他网站


基本上每个触发器都将D连接到Q_条。Q_栏成为下一阶段的时钟。

您的测试台是什么样子的?内部信号j2如何工作?为什么模块和原理图之间的
k
连接不同?@JoeHass O!!!:-哦!!你的权利,我混淆了VCC和JND:-O!!我现在能做什么?我应该删除我的问题吗??!!这么愚蠢的问题!!:((:'(顺便说一句,谢谢Joe;)如果我将.k(0)改为.k(1)它像原理图一样吗?@DEopen,k应该以
的形式连接。k(1'b1)
.k(1)
将给出正确的结果,但应该给出宽度不匹配警告,因为它推断
.k(32'd1)
(连接到1位端口的32位输入)。建议在您的设计中使用显式宽度和基数。您应该在用于模拟触发器的always块中使用非阻塞语句。谢谢@Morgan,事实上,我的老师让我为该原理图编写verilog描述,我将.k(0)更改为.k(1),它现在可以工作了,犯了一个愚蠢的错误,将VCC与JND混淆了!!!