非同步計數器透過級聯觸發器計數時脈脈衝,只有第一級接收外部時鐘,後續每級從前一輸出觸發。這種漣波傳播保持設計簡單,但會引入累積延遲 - - 在標準74HC系列邏輯下每級通常為5-15納秒 - - 使其適合頻率分割和低速事件計數,但當所有輸出位元必須同時更新時會成為問題。以下我將介紹漣漪機制、實際時序限制,以及這種架構仍有意義的地方。
重點摘要:
- 漣漪延遲會隨階段數線性調整;由 74HC73 觸發器組成的 4 位元非同步計數器,最壞情況傳播約 40 奈秒,限制在 ~10 MHz 以下的可靠運作。
- 非同步計數器在頻率分割方面表現優異(每級將輸入頻率減半),且不需要將高速時鐘樹路由到每個觸發器。
- 多位元轉換期間的暫時性故障狀態(例如 0111→1000)可能導致下游邏輯出現誤觸發,除非穩定後輸出被閃爍。
- 同步計數器消除漣漪延遲與故障,但需更多路由資源,且在分配時脈至各階段時消耗更多電力。
漣漪傳播的運作原理
第一個觸發器會切換每個輸入時鐘邊緣。其輸出接著會時脈第二個觸發器,該觸發器切換頻率減半。這個輸出會帶動第三級時脈,依此類推。由於每個階段等待前一階段穩定,最終輸出位元更新最後 - - 這種連鎖延遲即為特徵波紋效應。
從實務角度來看,你可以在示波器上清楚看到:探測最低有效位元(LSB),它會追蹤輸入時鐘;探測一個 4 位元計數器的最高有效位元(MSB),你會看到它大約在四個傳播延遲後發生轉換。這種錯開的時序對於產生 /16 時鐘分頻器這類應用來說沒問題,但它會破壞那些平行取樣所有位元的電路 - - 像是微控制器讀取計數值或比較器檢查終端計數。
類型與數量 方向
上行計數器: 每個觸發器由前一階段的非反轉輸出時脈控制,計數依標準二進位序列遞增(0000、0001、0010、...、1111,然後環繞至0000)。
下行計數器: 每個觸發器由前一階段的互補輸出(Q̄)時脈控制,順序反轉(1111, 1110, 1101, ..., 0000)。
選擇取決於你接哪個觸發器輸出接到下一個時脈輸入。J-K 和 T 觸發器很常見,因為它們的切換模式對外部邏輯需求極少 - - 只要將 J 和 K 綁高或保持 T 高即可。D 觸發器可行,但需要將反向輸出回饋到 D 輸入,並增加閘極。
你無法忽視的時間限制
累積傳播延遲: 每個觸發器會加上其時脈到輸出的延遲(tp)。對於 n 位元計數器,最壞情況的漣漪時間為 n × tp。在74個HC73觸發器(TP在5 V時≈10納秒)時,4位元計數器穩定在~40納秒;8位元計數器推送80納秒。如果你的應用程式在計數穩定前就取樣了,那你讀到的就是垃圾。
故障狀態: 在翻轉多個位元的轉換過程中(如 0111→1000),中間輸出會短暫顯示非法狀態(依序為 0110、0100、0000、1000)。我在微控制器專案中見過這種錯誤、假觸發中斷邏輯。解決方法是用延遲啟用訊號閃爍輸出,等待漣波補全,或切換到同步計數器,讓所有位元一起變化。
最大時脈頻率: 輸入時鐘週期必須超過任何下游邏輯的總漣漪延遲加上設定時間。對於 4 位元 74HC 計數器,實際最大輸入頻率約為 10-12 MHz;超過這個範圍就會產生亞穩態或漏克計數。

當非同步計數器仍然有意義時
頻分: 如果你只在意 MSB 輸出,忽略中間位元,漣波延遲就沒差。一個 4 位元計數器搭配 1 MHz 時脈,在 MSB 傳送乾淨的 62.5 kHz 方波 - - 無故障,也不需要同步。我經常在時鐘預分頻電路中使用這個。
慢輸入事件計數: 計數機械開關閉合器、感測器脈衝或任何低於 100 kHz 的訊號很少能達到時序限制。74HC393 雙 4 位元計數器的成本僅為同步機的一小部分,且不需要 PCB 空間來分配時脈。
ASIC/FPGA 的低閘數: 雖然 FPGA 偏好同步設計,但非同步計數器能在超低功耗或面積受限的區塊中節省觸發器,這些時機需要手動管理時序。
他們不擅長什麼: 任何平行讀取完整計數的應用程式(位址產生、顯示多工、終端計數偵測)或運作超過幾兆赫的應用程式。在這些情況下,漣波延遲會造成功能錯誤,或迫使你加入大量外部邏輯(輸出鎖存、頻閃產生),導致同步計數器變得更簡單。
設計清單
→ 計算最壞情況漣波延遲:n × tp,其中 n 是級數,tp 取自觸發器資料表。 → 驗證輸入時脈週期≥漣漪延遲 + 下行設定時間 + 裕度(我用 20% 裕度)。 → 如果有任何邏輯取樣計數,請加入至少延遲漣波時間的輸出頻衝,或使用同步計數器。 → 對於除以2ⁿ的應用,抽頭最後階段並忽略中間輸出 - - 漣波不重要。 → 確認觸發器系列(HC、AC、LV)是否符合您的速度與電壓要求;舊款 74LS 零件的 TP 頻率≈ 20 ns,且在 4 位元配置下無法達到 10 MHz。 → 用邏輯分析儀測試完整計數序列,而非僅用示波器;在設定為減慢時間基準的瞄準鏡上,漏洞很容易被忽略。
非同步與同步:真正的取捨
| 相位 | 非同步 | 同步 |
|---|---|---|
| 時脈分布 | 僅至第一階段 | 致所有拖鞋 |
| 輸出時序 | 漣漪延遲,位元依序更新 | 所有位元都在同一邊更新(時鐘偏斜範圍內) |
| 最高速度 | 限制為 n × tp(通常為 <20 MHz 對應 4 位元) | 受限於單一 TP + 組合邏輯(可超過 100 MHz) |
| 故障狀態 | 多位元轉換期間的存在 | 若設計全程同步,則不存在 |
| 門檻數 | N 拖鞋 | n 個觸發器 + 下一狀態的組合邏輯 |
| 權力(動態) | 較低 - - 只有切換級會消耗電流 | 更高 - - 時鐘樹,所有人字拖每個週期都會切換 |
| 最佳使用情境 | 頻率分頻器、緩慢的事件計數器、最小的板面空間 | 處理器匯流排、高速資料路徑、任何平行讀出 |
表格說明了為什麼非同步計數器在特定角色中仍然存在,儘管速度較慢。如果你把 10 MHz 的系統時脈分成 UART 的 1 MHz,非同步計數器就能用三個觸發器完成任務,且沒有路由擁擠。但如果你是在打造 DRAM 刷新的位址計數器,或是 CPU 直接讀取的定時器周邊,同步是唯一實際的選擇。

實用電路筆記
預設與清場: 大多數計數器 IC(74HC393、74HC4040)包含非同步清道輸入;有些則會增加同步負載。我發現用非同步清除設定非二冪的模數(例如十年計數器)可行,但需要閘門來解碼終端計數並脈衝清除 - - 注意清除在所有階段尚未波及終端狀態之前的競爭條件。
串接超過 4 位元: 你可以將 MSB 進位輸出接到下一個封裝的時鐘輸入端,串接 4 位元計數器 IC。每增加一個 4 位元階段,會增加 40 奈秒的延遲,因此由兩顆 74HC393 組成的 8 位元計數器有約 80 奈秒的漣波,實際輸入頻率最高約為 5 MHz。
與微控制器介面: 若必須用微控制器讀取非同步計數器,請使用由 MSB 觸發的輸入擷取計時器(只關心一個位元),或用 74HC373 透明鎖存鎖存輸出,保持鎖存啟用直到漣波完成。我花了好幾個小時除錯「隨機」計數錯誤,結果發現是 MCU 在波波中取樣。
產業的走向
非同步計數器仍出現在成本敏感設計中 - - 尤其是LED驅動器、家電計時器和汽車達板電路 - - 但同步架構主導了任何使用微處理器或FPGA的應用。74HC590(8位元二進位計數器帶輸出暫存器)和74HC4040(12位元漣波計數器)仍在生產中,這表示需求依然存在,但新的IC系列(像是TI的SN74AUP系列)更重視同步拓撲,因為行動和物聯網應用更重視低延遲勝過閘數。
如果你教數位設計,非同步計數器值得理解,因為它們能以具體的方式揭示傳播延遲和亞穩態 - - 這些概念即使在完全同步系統中也很重要。如果你在設計產品,請只在不影響其限制的地方使用:頻率分割、孤立事件計數,或任何你能容忍(或永遠不會觀察)漣波延遲的地方。其他方面,同步計數器的乾淨時序值得額外的觸發器時鐘負載。