利用觸發器設計計數器

2021-07-24 15:09:22 字數 2429 閱讀 7665

前面的課程中,介紹了基本觸發器的功能特性,對觸發器的內部電路進行了分析;然後還對時序電路分析給出了基本思路,即抓住三個核心方程:輸出方程、激勵方程、次態方程。

學習組合電路和基本觸發器的目的是為了設計電路,數字邏輯這門課程的目的是能夠設計簡單的同步時序電路,並對其簡單分析,下文通過乙個模16的減1計數器進行說明。

要設計時序電路,首先必須要對功能需求進行分析,模16減1計數器的功能需求很顯然應該是: 15 –> 14 –> 13 –> 12 –> … –> 1 –> 0 –> 15 –> 14 –> …。

有了上面的遷移關係,接下來應該做的是如何實現這種轉換。顯然,上面的這種轉換關係是我們人類的頭腦意識,電路並不知情,因此,我們需要給上面的這種關係進行形式化描述,即對15,14等數字(這個例子裡直接認為是狀態)進行編碼(這個編碼是任意的,可以自由發揮,但是一般我們採用大家都認可的規範,這個例子中用二進位制數進行編碼),編碼規則為:

- 15: 1111

- 14: 1110

- 13: 1101

- …

- 0:0000

顯然,這裡需要4個觸發器來儲存需要表達的狀態。

然後,如何表述狀態之間的轉換關係呢?前面學習的狀態轉移表剛好可以表述現態和次態之間的關係,如下表所示:

q3q2q1q0

q3(t+1)q2(t+1)q1(t+1)q0(t+1)

1111

1110

1110

1101

1101

1100

1100

1011

1011

1010

1010

1001

1001

1000

1000

0111

0111

0110

0110

0101

0101

0100

0100

0011

0011

0010

0010

0001

0001

0000

0000

1111

在得到了編號後狀態的基本遷移關係的基礎上,需要進一步獲取次態和現態之間的關係。上表是乙個狀態轉移真值表,需要得到準確的次態與現態之間的關係。處理方式有兩種,一種是直接利用最小項之和,另一種是卡諾圖,通常情況下,對於6變數以下,一般採用卡諾圖。

首先尋求q3(t+1)與q3q2q1q0的關係,其對應的卡諾圖為:

q3q2\q1q0

0001

1110

00100

001000

011111

110011

1注:卡諾圖中的編號即表示了現態

利用卡諾圖化簡規則,得到:

q3(t+1) = q3 !(!q2!q1!q0) + !q3 (!q2!q1!q0) // 由於markdown中沒有異或符號,直接展開

同理,可以獲取q2(t+1)、q1(t+1)、q0(t+1)與q3q2q1q0之間的關係,得到:

q2(t+1) = q2 !(!q1!q0) + !q2 (!q1!q0)

q1(t+1) = q1 q0 + !q1 (!q0)

q0(t+1) = !q0

此時,已經得到了次態與現態的準確關係,剩下的工作就是根據所提供的觸發器來設計。假設,給定的是4個下降沿j-k觸發器,則需要根據j-k觸發器的次態方程,對上述方程進行匹配賦值。由此得到:

j3 = k3 = (!q2!q1!q0)

j2 = k2 = (!q1!q0)

j1 = k1 = (!q0)

j1 = k1 = 1

因此,最終的電路圖為:

至此,模16減1計數器已經實現了。分析上面得到的次態與現態的表示式,其實可以直接寫出模32減1的計數器;另外,也可以看出:q0的狀態每個脈衝都會跳變一次,q1的狀態每兩個脈衝跳變一次,q2的狀態每四個脈衝跳變一次,q3的狀態每8個脈衝跳變一次,這種跳變對應著脈衝的2分頻、4分頻、8分頻、16分頻。

不管是分析時序電路,還是設計時序電路,切忌簡單背誦分析和設計步驟,抓住分析和設計的關鍵點(分析電路時的三個方程、設計電路時的狀態遷移)即可。

簡單意味著複雜,計數器可以說是最基本的時序邏輯電路,利用計數器可以做出十分複雜且有用的電路。然而,本文講解的計數器除了時鐘脈衝,沒有其它輸入,即其不可控,無法靈活使用,下一節將詳細講解163計數器及其應用。

如有錯,請大家批評指正!謝謝!

計數器設計

最近看到一篇文章說要實現乙個計數器的功能,於是通過思索,設計了乙個靈活可用性高的物件計數器。裡面閃爍著 很多的火花。template class object counter object counter private static int m count template int object ...

計數器設計實驗

module cnt10 clk,rst,en,load,cout,dout,data input clk,en,rst,load input 3 0 data output 3 0 dout output cout reg 3 0 q1 reg cout assign dout q1 always...

計數器 智慧型計數器簡介

計數器主要是應用於電子科技領域,計數器是一種運用得比較多的時序邏輯電路。計數器可以對數字進行運算,它是一種沒有辦法顯示計算結果的顯示器。隨著電子科技的不斷發展,現在的計數器也實現了智慧型功能。智慧型計數器的出現幫助我們實現了很多高強度生產問題 複雜的技術問題,並且節約了生產成本和人力成本。智慧型計數...