|
约翰逊(Johnson)计数器又称扭环计数器,是一种用n位触发器来表示2n个状态的计数器。它与环形计数器不同,后者用n位触发器仅可表示n个状态。2~n进制计数器(n为触发器的个数)有2~n个状态。若以四位二进制计数器为例,它可表示16个状态。但由于8421码每组代码之间可能有二位或二位以上的二进制代码发生改变,这在计数器中特别是异步计数器中就有可能产生错误的译码信号,从而造成永久性的错误。而约翰逊计数器的状态表中,相邻两组代码只可能有一位二进制代码不同,故在计数过程中不会产生错误的译码信号。鉴于上述优点,约翰逊计数器在同步计数器中应用比较广泛。
8位Johnson计数器的Verilog建模:
module count(rst_n,clk,out); input rst_n,clk; output out;
reg [7:0] out;
always @(posedge clk) begin
if(!rst_n)
out <= 8'b0;
else
begin
out[0] <= ~out[7];
out[7:1] <= out[6:0]; end
end
endmodule
激励
module sti;
reg clk,rst_n;
wire [7:0] out;count test(rst_n,clk,out);
initial
clk = 8'b0;
always
#10 clk = ~clk;
initial
begin
rst_n = 1;
#50 rst_n<=0;
end
endmodule
|
|