|
約翰遜(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
|
|