在數(shù)字系統(tǒng)中,使用得最多的時序電路差不多就是計數(shù)器了。計數(shù)器不僅能夠用于對時鐘脈沖計數(shù),還可以用于分頻、定時、產(chǎn)生節(jié)拍脈沖、產(chǎn)生脈沖序列以及進行數(shù)字運算等等。
其實,計數(shù)也是一種最簡單最基本的運算,就像我們心里默念的計數(shù)一樣。不過不同的是,計數(shù)器是有一定頻率的計數(shù),具有一定的時間間隔,而我們心里默念的計數(shù)的時間間隔不一樣罷了(也就是不夠準確的啦),而計數(shù)器就是實現(xiàn)這種運算的邏輯電路,主要是通過對時鐘(上升)脈沖的個數(shù)進行計數(shù)的。
計數(shù)器在我們身邊也很普遍,比如手機中自帶的跑步的計時器、電腦定時關機等等;所以,熟悉掌握計數(shù)器,不僅對于學習 Verilog 非常有用,而且,還能鍛煉我們的邏輯能力和更深刻地理解數(shù)字電路的工作原理,從而對科技更加感興趣!
一、計數(shù)器的 Verilog 代碼實現(xiàn)和 RTL 電路實現(xiàn)
下面是計數(shù)器的 Verilog 代碼實現(xiàn):
module Counters(
input Clk,
input Up, // 可增可減(可逆)計數(shù)器
output reg [7:0] Cout = 8'b0000_0000 // 8 位計數(shù)器
);
always @(posedge Clk)
if (Up)
Cout <= Cout + 1'b1;
else
Cout <= Cout - 1'b1;
endmodule
下面是計數(shù)器的 RTL 電路實現(xiàn):
計數(shù)器的 RTL 電路圖
時鐘信號:Clk(時鐘信號,就是電路的“心臟”,不可或缺);
復位信號:rst_n(復位信號,也是一個合格的電路不應該缺少的一個輸入信號,當復位信號為低電平時,輸出全部置零,這就是所謂的低電平有效)當復位信號為高電平時,開始計數(shù),每一個時鐘信號的上升沿到來就計一次數(shù),每計數(shù)滿 256 個時鐘周期為一個輸出循環(huán),輸出置零,然后重新計數(shù);當然,這里為了更好地讀懂代碼,并沒有加入復位信號啊哈哈哈嗝。
計數(shù)值信號:Cout(顯示計數(shù)值,根據(jù)自己設計的需要,可以對位數(shù)進行設置,比如最大計數(shù)值為 6,那么位數(shù)就可以設置為 3 bits)
其實,這個既是計數(shù)器,又能當分頻器,而且還能當計時器喲(再者還可以當鬧鐘功能)這三者其實都是息息相關的,但是博主并沒有把分頻器和定時器的功能加上去,其實只需要增加一兩個信號即可,小伙伴們能否想到怎么添加,從而使得這個程序既有計數(shù)器的功能,也有分頻器的功能和定時器的功能呢?
-
計數(shù)器
+關注
關注
32文章
2256瀏覽量
94574 -
時序電路
+關注
關注
1文章
114瀏覽量
21700 -
RTL
+關注
關注
1文章
385瀏覽量
59789 -
計時器
+關注
關注
1文章
420瀏覽量
32712 -
Verilog設計
+關注
關注
0文章
20瀏覽量
6523
發(fā)布評論請先 登錄
相關推薦
評論