Verilog 中的 T 型触发器
T-flip flop in Verilog
我想用 Verilog 构建一个 T 型触发器。到目前为止,我已经编写了以下代码,但我希望他们能看看它是否正确。我用来制作代码的机器在图像中。
module flopJK(q,j,k,c);
input j,k,c;
output q;
reg q;
always @(posedge c)
begin
case ({j,k})
{1'b0,1'b0}:begin q=q; end
{1'b0,1'b1}:begin q=1'b0; end
{1'b1, 1'b0}:begin q=1'b1; end
{1'b1, 1'b1}:begin q=~q; end
endcase
end
endmodule
Verilog 中的 T 型触发器:
我认为有几个改进范围。
reset
信号不存在,这是初始化您的 FF 所必需的。
- 始终对时序逻辑使用非阻塞赋值,对组合逻辑使用阻塞。
这是您的代码。
module flopJK (q,j,k,c, r);
input j,k,c, r;
output q;
reg q;
always @(posedge c, negedge r)
begin
if (r != 1)
q <= 1'b0;
else
begin
case ({j,k})
{1'b0,1'b0}:begin q <= q; end
{1'b0,1'b1}:begin q <= 1'b0; end
{1'b1, 1'b0}:begin q <= 1'b1; end
{1'b1, 1'b1}:begin q <= ~q; end
endcase
end
end
endmodule
我想用 Verilog 构建一个 T 型触发器。到目前为止,我已经编写了以下代码,但我希望他们能看看它是否正确。我用来制作代码的机器在图像中。
module flopJK(q,j,k,c);
input j,k,c;
output q;
reg q;
always @(posedge c)
begin
case ({j,k})
{1'b0,1'b0}:begin q=q; end
{1'b0,1'b1}:begin q=1'b0; end
{1'b1, 1'b0}:begin q=1'b1; end
{1'b1, 1'b1}:begin q=~q; end
endcase
end
endmodule
Verilog 中的 T 型触发器:
我认为有几个改进范围。
reset
信号不存在,这是初始化您的 FF 所必需的。- 始终对时序逻辑使用非阻塞赋值,对组合逻辑使用阻塞。
这是您的代码。
module flopJK (q,j,k,c, r);
input j,k,c, r;
output q;
reg q;
always @(posedge c, negedge r)
begin
if (r != 1)
q <= 1'b0;
else
begin
case ({j,k})
{1'b0,1'b0}:begin q <= q; end
{1'b0,1'b1}:begin q <= 1'b0; end
{1'b1, 1'b0}:begin q <= 1'b1; end
{1'b1, 1'b1}:begin q <= ~q; end
endcase
end
end
endmodule