問題:實現(xiàn) N 位 Johnson Counter。
當 N = 4 時,輸出應(yīng)該是
0000 -> 1000 -> 1100 -> 1110 ->
1111-> 0111 ->0011-> 0001 ->
0000 ->...
如下圖所示,扭環(huán)形(約翰遜)計數(shù)器最后一個觸發(fā)器的輸出取反~Q3,然后輸入回第一個觸發(fā)器的輸入 D(0)= ~Q(N-1),其余觸發(fā)器的輸入來自前級的輸出 D(i+1) = Q(i)。
D(0)= ~Q(N-1)
D(i+1) = Q(i)
Johnson 約翰遜計數(shù)器Verilog 實現(xiàn)
用Verilog HDL寫一個8-bit的Johnson計數(shù)器,N = 8。
module johnson
#(
parameter N=8
)
(
input clk,
input rst_n,
output reg [N-1:0] q
);
always @ (posedge clk,negedge rst_n)
begin
if(!rst_n)
q<=?{N{1'b0}};????
elseif(!q[0])
q <= {1'b1,q[N-1:1]};
else
q <= {1'b0,q[N-1:1]};
end
endmodule
仿真圖:
第二種:
module johnson
#(
parameter N=8
)
(
input clk,
input rst_n,
output reg [N-1:0] q
);
always @ (posedge clk,negedge rst_n)
begin
if(!rst_n)
q<=?{N{1'b0}};????
else
q<=?{~q[0], q[N-1:1]};
end
endmodule
Johnson 約翰遜計數(shù)器
(1)扭環(huán)形計數(shù)器,約翰遜計數(shù)器,每次狀態(tài)變化時僅有一個觸發(fā)器發(fā)生翻轉(zhuǎn),譯碼不存在競爭冒險,在n(n≥3)位計數(shù)器中,使用2n個狀態(tài),有2^n-2n個狀態(tài)未使用;
(2)環(huán)形計數(shù)器,正常工作時所有觸發(fā)器中只有一個是1(或0)狀態(tài),計n個數(shù)需要n個觸發(fā)器,狀態(tài)利用率低;
(3)n個寄存器的線性反饋移位寄存器LFSR可以產(chǎn)生的最長的隨機序列是2^n?1長度(即m序列)。LFSR常被用來生成m序列,也可產(chǎn)生和校驗CRC。
審核編輯 :李倩
-
FPGA
+關(guān)注
關(guān)注
1629文章
21738瀏覽量
603464 -
Verilog
+關(guān)注
關(guān)注
28文章
1351瀏覽量
110107 -
觸發(fā)器
+關(guān)注
關(guān)注
14文章
2000瀏覽量
61160
原文標題:FPGA/數(shù)字IC筆試題——Verilog實現(xiàn) N 位 Johnson Counter【約翰遜計數(shù)器】【扭環(huán)形計數(shù)器】
文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論