問題:實現 N 位 Johnson Counter。
當 N = 4 時,輸出應該是
0000 -> 1000 -> 1100 -> 1110 ->
1111-> 0111 ->0011-> 0001 ->
0000 ->...
如下圖所示,扭環(huán)形(約翰遜)計數器最后一個觸發(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 約翰遜計數器Verilog 實現
用Verilog HDL寫一個8-bit的Johnson計數器,N = 8。
module johnson#(parameter N=8)(input clk,input rst_n,output reg [N-1:0] q);always @ (posedge clk,negedge rst_n)beginif(!rst_n)q<=?{N{1'b0}};????elseif(!q[0])q <= {1'b1,q[N-1:1]};elseq <= {1'b0,q[N-1:1]};endendmodule
仿真圖:


第二種:
module johnson#(parameter N=8)(input clk,input rst_n,output reg [N-1:0] q);always @ (posedge clk,negedge rst_n)beginif(!rst_n)q<=?{N{1'b0}};????elseq<=?{~q[0], q[N-1:1]};endendmodule
Johnson 約翰遜計數器
(1)扭環(huán)形計數器,約翰遜計數器,每次狀態(tài)變化時僅有一個觸發(fā)器發(fā)生翻轉,譯碼不存在競爭冒險,在n(n≥3)位計數器中,使用2n個狀態(tài),有2^n-2n個狀態(tài)未使用;
(2)環(huán)形計數器,正常工作時所有觸發(fā)器中只有一個是1(或0)狀態(tài),計n個數需要n個觸發(fā)器,狀態(tài)利用率低;
(3)n個寄存器的線性反饋移位寄存器LFSR可以產生的最長的隨機序列是2^n?1長度(即m序列)。LFSR常被用來生成m序列,也可產生和校驗CRC。



審核編輯 :李倩
-
FPGA
+關注
關注
1660文章
22412瀏覽量
636335 -
Verilog
+關注
關注
30文章
1374瀏覽量
114528 -
觸發(fā)器
+關注
關注
14文章
2056瀏覽量
63408
原文標題:FPGA/數字IC筆試題——Verilog實現 N 位 Johnson Counter【約翰遜計數器】【扭環(huán)形計數器】
文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
數字頻率計數器在計量檢測中的重要性 頻率計數器 高精度通用計數器
頻率計數器/定時器 時間間隔計數器的應用領域和范圍的深度解析 頻率計數器模塊
如何利用Verilog HDL在FPGA上實現SRAM的讀寫測試
雷擊計數器的種類和綜合選型部署解決方案
雷電(雷擊)計數器的原理、作用及行業(yè)應用解決方案
Johnson約翰遜計數器Verilog實現
評論