有沒有遇到過這樣的怪事:你一直以為自己知道某件事,但當你試著向別人解釋這件事時,才發現自己的論述中存在漏洞和邏輯上的差異?這是我最近遇到的情況,當時有人問我鎖存器(latch)和觸發器(flip-flop)之間的區別,以及為什麼它們都與寄存器(register)有關…
有沒有遇到過這樣的怪事:你一直以為自己知道某件事,但當你試著向別人解釋這件事時,才發現自己的論述中存在漏洞和邏輯上的差異?這是我最近遇到的情況,當時有人問我鎖存器(latch)和觸發器(flip-flop)之間的區別,以及為什麼它們都與寄存器(register)有關。
取決於一個人的背景,這在電子學中可能是個有點主觀的領域,而隨著術語的不斷發展,我們又可能對此產生進一步混淆。因此,本文要做的就是以我的理解來解釋這些事物,然後歡迎各位專家發表評論,以便瞭解我的觀點是否獲得認同。
寄存器和寄存器文件
我們在微控制器(MCU)等電子系統中儲存資料的方式之一是在寄存器中。一些寄存器由一個位元組成,而另一些寄存器由多個位元組成;「寄存器文件」(又稱寄存器堆)一詞則是指一組共用通用功能和目的的寄存器。
寄存器的特性與半導體記憶體相類似,例如每個基元(單元)可儲存一個二進位數字或位元(以0或1的形式表示)。但是,記憶體往往用於儲存相對大量的資訊(指令和資料),而寄存器則更趨於專業化,用於實現記住配置和控制資訊、保存輸入/輸出值,以及臨時儲存邏輯或算數運算結果等任務。
另一個區別是儲存單元往往相對簡單,需要盡可能少地使用電晶體來完成工作。這是因為它們太多了,因此就功耗而言應保持小巧、快速和簡約。相比之下,寄存器由於數量要少得多,因此在大小和功耗方面約束就比較少,並且通常具有與硬體相關的更高階的特殊控制和功能。
鎖存器和觸發器
每個寄存器單元的核心都是一個雙穩態電路,據此就可以0或1的形式儲存資訊。這種電路可能有一個或多個控制輸入,可能有一個資料登錄,以及一個或兩個輸出。如果有第二個互補的QB輸出存在,那麼它將呈現與主輸出Q相反或互補的邏輯值。
就控制訊號而言,這種電路可以是電平觸發(非同步、透明或不透明)或邊緣觸發(同步或時脈)方式。前者的一個例子是置-復位鎖存器(SR鎖存器),後者的一個例子是資料型觸發器(D型觸發器),詳見圖1。
圖1 SR鎖存器和D型觸發器的圖形符號及真值表對比。
觸發器一詞通常在這種電路的背景下使用,因為這種電路在兩種狀態之間來回觸發翻轉。歷史上,「觸發器」一詞通常包含電平觸發和邊緣觸發兩種類型。但是,最近「鎖存器」一詞被用來指代電平觸發的版本,而「觸發器」一詞則用來指代邊緣觸發的版本已經變得很普遍。常見的寄存器類型如下:
順帶一題,JK型被認為是最通用的鎖存器和觸發器,因為可以將JK鎖存器修改用作SR鎖存器,同時可以將JK觸發器配置為D型或T型觸發器。
多諧振盪器(Multivibrator)
多諧振盪器是一種用於實現各種簡單兩態功能的電子電路,有以下三種類型:
之所以在此提及多諧振盪器,是因為雙穩態多諧振盪器可用於儲存1位元資訊,也即所謂的觸發器。
開始討論
所以你怎麼看?您是否同意我上面的介紹方式?另外,你有什麼希望分享或想要補充的內容嗎?
(參考原文:Registers vs. Latches vs. Flip-Flops,by Max Maxfield)
本文同步刊登於EDN Taiwan 2021月號數位版雜誌
加入LINE@,最新消息一手掌握!