作者:719823597
來源:mcbbs
計數器應該是比較常用的時序電路了。計數器分很多種,在國內見的比較多的應該是“沙計數器”了,就是1=1,11=2,111=3那種
這種設計一般用在小遊戲中,如果用來計比較大的數,那就比較麻煩了,因為每擴展一位,計數器就要長兩格,相比之下,二進位計數器的優點就顯現出來了。
假如我要計127個數,那麼“沙計數器”至少要254格,但是二進位才占15格左右。
可以看到,白色的部分都是一樣的,單個的白色就是T觸發器了,T觸發器只有一個輸入,一個輸出,輸入是接收時鐘或脈衝信號的,輸入會隨著輸入端而反轉,也就是說假如原來是1,輸入有信號時輸出就變成了0。
上圖的連接方式是最簡單的,叫行波計數器(把n位的輸出連接到n+1位的輸入),也就是說他們4個T觸發器的輸入端不是同步的,你只要給第一個的輸入一個信號,後面的會隨第一個的狀態改變而做出改變。這種計數器用的材料最少,但是速度也相對較慢,最壞的情況,要等n*T的時間才能輸出最終結果(n是位數,T是T觸發器自身的延時)因為n的輸出連接著n+1的輸入,所以要逐次運算
所以呢,要解決這個問題就要用到同步計數器了,也就是一個時鐘或脈衝信號可以控制所有的T觸發器的輸入
我臨時做了一個,沒壓縮,比行波那個大很多,但是速度提高不少,下面是電路圖
這是帶了使能端的T觸發器,用D觸發器改的,我先把它編輯成模組
T就是T觸發器的時鐘輸入,EN是使能端,當使能端為0,T觸發器會忽視T端的信號,Q是輸出
Logisim裡不能很好地類比時序電路,所以我就不展示效果了。因為EN是控制是否忽視T端信號的,所以當EN為0時T端是無效的,那個及閘是用來檢測前一位是否為1的,如果少了及閘,那麼同步了T端的話,所有的T觸發器會同時亮起。
原理和行波的一樣,都是根據前一個T觸發器來判斷當前T觸發器應該怎麼變化,但是這種可以使全部T觸發器同時判斷是否變化,省去了逐位判斷的時間