4位同步双降计数器JK触发器



最近,我正在尝试学习数字设计和Verilog HDL。我目前正在研究人字拖。我试图用 jk 触发器构建一个 4 位同步双倒计时(向下计数器(。

例如: 1111 -1101 - 1011 - 1001 - ..(15 - 13 - 11 - ..)等。

当我在网上研究时,我总是发现同步下降计数器,如 1111 - 1110 - 1101 等。

如何使用 jk 触发器实现 4 位同步双倒计时(向下计数器(?

我想到的第一件事是FSM。困扰我的是使用 JK 触发器的要求。Verilog可以允许PMOS/NMOS级别的设计,但我不确定这是否是你真正想要做的。

如果实现了FSM,则此类计数器的行为描述非常简单。这是一个 3 位双倒计时。我认为您可以轻松地修改它以容纳您的 4 位计数器。

module countdown (
input wire clk,
input wire rst,
output reg [2:0] out
);
initial out = 3'd7;
always @(posedge clk or posedge rst) begin
if (rst == 1'b1) begin
out <= 3'd7;
end
else begin
case (out)
3'd7   : out <= 3'd5;
3'd5   : out <= 3'd3;
3'd3   : out <= 3'd1;
3'd1   : out <= 3'd7;
default: out <= 3'd7;
endcase
end
end
endmodule

当然,还有另一种方法:使用加法器。对于 4 位,它将是这样的:

module countdown4b (
input wire clk,
input wire rst,
output reg [3:0] out
);
initial out = 4'b1111;
always @(posedge clk)
out <= out + 4'b1110;  // -2
endmodule

最新更新