2019年3月16日 星期六

止於至善——經典數位電路:4 位二進制密碼鎖(進階版)

前文提要
上回講述初階版 4 位二進制密碼鎖電路,密碼核對部分以 2 輸入 XNOR 閘和 4 輸入 AND 閘構成。只要輸入正確密碼,LED 便亮著。因電路設計非常簡單,存在不少漏洞,所以不適合應用於實際生活。如此,文末建議將電路加以完善,並設定以下條件:

設計一個 4 位二進制密碼鎖。預設一組密碼〈P3, P2, P1, P0〉,使用者輸入另一組數值〈U3, U2, U1, U0〉後,按「提交」鍵核對。如兩組數值相符(每個位元對〈Ui, Pi〉的值需相同),綠色    LED 穩定亮著;如不相符,則紅色 LED 亮起後熄滅。系統接受最多連續三次錯誤輸入,之後需按「重置」鍵,以重新接受輸入。(如輸入密碼正確,亦需按「重置」鍵進行下一次核對。)

各位可有想出符合以上條件的電路?事實上,要全以邏輯元件建構電路,當中有一定挑戰性;相反,如轉用編程方法實踐,電路定必大幅簡化,但為熟習邏輯電路設計技術,諸位必須迎難而上、積極思考、夙夜練習。

進階電路剖析
設計電路前,宜先清楚列出電路組成部分:

輸入元件
l   兩組 4 位撥動開關(預設密碼和輸入密碼)
l   「提交」鍵
l   「重置」鍵

輸出元件
l   紅色 LED
l   綠色 LED

詳細執行要求
l   按下「提交」鍵後始進行密碼核對,並出現下列其一情況:
(情況一)之前輸入錯誤次數累計少於 3 次以下,並且現時綠色 LED 未有亮著:
n   如兩組密碼相符,綠色 LED 穩定亮著。
n   如兩組密碼不相符,紅色 LED 短暫亮著,輸入錯誤次數遞增一次。
(情況二)之前輸入錯誤次數累計已達 3 次:
n   不管兩組密碼是否相符,皆沒有燈號提示。
(情況三)之前輸入正確密碼,現時綠色 LED 穩定亮著:
n   必須按下「重置」鍵,始可再次輸入密碼。

l   按下「重置」鍵後,不論先前所輸入的密碼錯誤或正確,所有燈號(如有)將消除,並且將輸入錯誤記錄次數重設為零,準備接受新一次密碼核對。

參考電路
一如慣例,先提供參考電路(可按此下載)。

圖一:4 位二進制密碼鎖(進階版)參考電路


電路操作流程
邏輯電路設計如下棋佈陣,各電路部分環環相扣,比編程更難於有系統地分拆講述,大型邏輯電路設計尤甚。筆者只能嘗試解構當中重點,望諸位見諒。

參考電路的密碼輸入和核對部分,與初階版電路相若,皆使用 2 輸入 XNOR 閘和 AND 閘組成。初階版電路使用 4 輸入 AND 閘,本電路則需要第 5 AND 閘輸入,該輸入直接與「提交」(SUBMIT)鍵相接。由於坊間沒有 5 輸入 AND 閘,是次改用 8 輸入 AND 閘,只要將其中 4 個輸入直接連接,便可當成 5 輸入 AND 閘使用。

未按「提交」鍵時,第 5 AND 閘輸入「L」;按下「提交」鍵後,第 5 AND 閘輸入的位準取決於 NOR 閘(標示名稱:U3B)輸出。只有兩個 NOR 閘輸入為「L」,輸出才會為「H」。進一步觀察電路,兩個輸入皆為「L」的條件為:
1.          現時紅色 LEDR LED)不亮著;
2.          現時沒按下「重置」鍵(RESET)不放;
3.          現時綠色 LEDG LED)不亮著;及
4.          現時密碼輸入錯誤的次數未達 3

符合以上條件並按下「提交」鍵後,第 5 AND 閘輸入的位準為「H」,表示有效的提交。讓我們分開以下兩種情形講述電路的連鎖反應:

(1)   輸人密碼正確
8 輸入 AND 閘將輸出「H」,即 AND 閘(U5C)第 8 腳位為「H」。留意按下「提交」鍵前及連續輸入錯誤次數少於 3 次,令 AND 閘(U5B)第 4 腳已輸出「H」,因接至 AND 閘(U5C)第 9 腳,該輸入端同為「H」,最後令綠色 LED 亮著。AND 閘(U5C)輸出接回第 8 腳,產生閂鎖功能(參閱文章:《簡單?不簡單!:三人搶答系統(進階版)電路探討》),如「重置」鍵不按下,LED 保持長亮。

留意接至「提交」鍵的 NOR 閘(U3B)變成輸出「L」(請各位嘗試推敲原因),即不接受下一次提交密碼,直至按下「重置」鍵。

(2)   輸人密碼錯誤
8 輸入 AND 閘將輸出「L」,令 AND 閘(U5A)第 1 腳位為「H」。留意,按下「提交」鍵一剎(未復位時),亦令 AND 閘第 2 腳位為「H」,最後因輸出「H」而使紅色 LED 亮起。然而紅色 LED 亮起後短時間內會熄滅,亮著所維持的時間取決於接至該 AND 閘第 2 腳位的電容和電阻值。注意,當紅色 LED 仍然亮著時,不接受新一次密碼核對,你知道是什麼原因嗎?

AND 閘(U5A)輸出「H」亦令十進制計數器 IC 4017 加一,即密碼輸入錯誤次數累加一次。如錯誤次數少於上限,仍可繼續接受新一次密碼核對。否則當 4017 Q3 輸出「H」,表示錯誤次數已達上限,最後令 NOR 閘(U3B)輸出「L」,直至按下「重置」鍵,方可再有 3 次機會核對密碼。

電路設計要點
物盡其用
參考電路圖上的邏輯元件可進一步簡化,例如 NOR 閘(U3A)與 NOT 閘(U4A)可直接使用 OR 閘取代,又或兩個相連的 NOT 閘(U4C U4D)可改成一個緩衝(Buffer)閘。但電路設計在大多數情況下,應以精簡為原則,例如 4069 IC 包含 6 NOT 閘,我們不妨物盡其用,使用當中 4 NOT 閘。相較另加一個緩衝 IC,更能節省電路成本和縮減電路尺寸。

二極管的使用
參考電路上有 3 顆二極管 IN4148,相隔電路前後部分,令兩者不互相影響,避免操作錯誤或引致短路。

緩衝閘的作用
邏輯閘輸出端接駁至下一級邏輯閘輸入端的數量是有限制的,我們稱之為扇出數。以 TTL 為例大概扇出 10 左右,所以使用邏輯閘輸出端接駁不同的負載(如指示燈、繼電器或大量邏輯閘輸入閘等),導致輸出產生壓降,令推動下一級邏輯閘輸入端的位準電壓降低,使工作產生錯誤。此時可使用一個或多個緩衝閘負擔部份負載輸出。以本電路為例,若在紅色 LED 前不接駁緩衝閘,LED 不能點亮。

實際操作問題
完成電路焊接後,接上電源嘗試操作,你或許發現電路出現不正常狀況,例如綠色 LED 無故亮起,又或按下「提交」鍵後,LED 全沒反應。出現這個狀況,在於接上電源後,輸入各 IC 的工作電壓慢慢浮升,但因特性差異,未能同步正式工作,故此在初始階段處於不明狀態,可能令某些邏輯元件產生錯誤輸出、計數器初值不是零等。只要在每次開機後,按下「重置」鍵便回復正常操作。追求完美的你或認為這種動作帶來不便,此時我們可修改電路,強制電路在開機後自動重置,徹底解決問題。修改部分較為複雜,在此省略,如有興趣請自行研究。

圖二:設有「開機後自動重置」功能的參考實體電路

最後送上圖二的電路示範影片,以茲參考:

2019年2月22日 星期五

經典數位電路:4 位二進制密碼鎖(初階版)

筆者小廣告:喜愛電子製作的同好,本人誠意推介以下電子時鐘套件。套件為筆者與團隊共同開發,屬本地原創,外型與硬件設計以簡約為本,基本功能完善,性價比高。內附詳細焊接及使用說明書,並有YouTube影片作操作示範。要求套件及成品均可,歡迎零售或批發。

*註:套件不附外殼







前文討論如何建構搶答電路,藉此實踐邏輯元件的使用技巧。今回與大家分享密碼鎖電路,這是極為經典的數位電路應用實例,讓我們先從最基本的設計開始。要求如下:

設計一個 4 位二進制密碼鎖。如輸入的數值〈U3, U2, U1, U0〉與預設的一組密碼〈P3, P2, P1, P0〉相符(每個位元對〈Ui, Pi〉的值需相同),LED 亮著。如不相符,LED 則不亮著。

為進一步簡化電路,初階版不設「提交」鍵,故此在電源開啟後,任何時間均在核對兩組數字。

以下為參考電路(可按此下載):

圖一:4 位二進制密碼鎖(初階版)參考電路

電路設計較為簡單,當中使用兩個 4 位撥動開關設定預設密碼和輸入密碼。每個 XNOR 閘比較兩個二進制數字的相同位元,如兩個數值相同,輸出為「H」。因為密碼是 4 位數,所以 4 XNOR 閘輸出需同為「H」,才表示輸入密碼正確,令 LED 亮著。使用一個 4 輸入的 AND 閘,即能控制 LED 亮著或熄滅。

將電路圖化為實體電路後如下:

圖二:4 位二進制密碼鎖(初階版)參考實體電路

圖三:兩組密碼不符,LED 不會亮著。

圖四:兩組密碼相符,LED 亮著。

如各位有興趣,可進一步觀看示範影片:




初階版密碼鎖電路的設計簡單,亦不具實用性,漏洞頗多。4 位二進制共有 24 = 16 個組合,因不設輸入次數上限,只要最多嘗試輸入 16 次,便能破解密碼。現實生活上,密碼鎖通常具防止暴力攻擊(brute-force attack)的特點。讓我們重新思考一個更合常理的密碼鎖設計要求,如下所述:

設計一個 4 位二進制密碼鎖。預設一組密碼〈P3, P2, P1, P0〉,使用者輸入另一組數值〈U3, U2, U1, U0〉後,按「提交」鍵核對。如兩組數值相符(每個位元對〈Ui, Pi〉的值需相同),綠色 LED 穩定亮著;如不相符,則紅色 LED 亮起後熄滅。系統接受最多連續三次錯誤輸入,之後需按「重置」鍵,以重新接受輸入。(如輸入密碼正確,亦需按「重置」鍵進行下一次核對。)

這個進階版密碼鎖電路,更為貼近實際需要。輸入密碼錯誤次數超出上限,將鎖著系統,需通知系統管理人員解鎖才可再次輸入,增加安全性。功能增加令電路設計難免稍加複雜,系統需正確執行外,更要考慮穩定性。雖然我們可改用編程設計複雜的電路,但為本著熟習應用邏輯元件的初衷,參考電路將主要以數位 IC 構成,且待下回分解。

2019年2月15日 星期五

簡單?不簡單!:三人搶答系統(進階版)電路探討

上回與各位分享初階版三人搶答系統電路,文末提出應如何進一步完善系統要求,並因而設計出一個既簡單又實用的進階版搶答系統及其電子線路。

現就系統制定作出如下規範及條件:
設現在有一個搶答遊戲,我們需為此設計完善的搶答系統。遊戲有三名參賽者,各人面前有一個按鈕,連接著旁邊代表他的燈泡。當遊戲主持人發問問題後,參賽者鬥快按下搶答按鈕。第一位按下按鈕的參賽者,其燈泡長期亮著,即使放開按鈕亦然。此後即使其他參賽者按下自己的按鈕,代表他的燈泡不會亮著。主持人便藉此知道那一位有回答權。直到主持人按下重置按鈕,燈泡熄滅,即可進行第二次搶答。

此系統與初階版有以下兩點不同之處:
1.          按下按鈕後再放開,燈泡可長期亮著。
2.          設有重置按鈕,每次搶答前需按一次按鈕,方能熄滅原來亮著的燈泡,重新搶答。

以下是筆者所設計的電路(可按此下載),供各位參考:

圖一:三人搶答系統(進階版)參考電路

與初階版電路比對,電路基本結構大至相同,只加入重置(如圖二)及閂鎖(如圖三)電路。每個開關按鈕與相應
LED 之間的子電路,使用的零件和接線方法相同,邏輯元件皆包括一個 OR 閘、一個 4 輸入 AND 閘及兩個 NOT 閘。

圖二:重置電路部分

圖三:閂鎖電路部分

使
LED 亮著的條件為 AND 閘的輸出必需為「H」。未有任何 LED 亮著時,所有 AND 閘輸出「L」。兩個 NOT 閘反相輸出「H」,成為 AND 閘的其中兩個輸入。

未按下重置按鈕時(圖二),接至該按鈕的 NOT 閘輸出「H」。留意這個輸出端接至所有 AND 閘的其中一個輸入端,換句話說,現時各 AND 閘已有三個輸入端為「H」。只要按下其中一個搶答按鈕(SW 1SW 2 SW 3),OR 閘即輸出「H」,AND 閘亦因而輸出「H」,令對應的 LED 亮著。在未曾按下重置按鈕時, AND 閘的輸出位準取決於 OR 閘的輸出位準

放開搶答按鈕後,發現 LED 仍然亮著,亦即 AND 閘輸出維持「H」位準,為什麼呢?原來 AND 閘輸出端接至 OR 閘的一個輸入端(見圖三紅線),當 AND 閘輸出「H」,即令 OR 閘亦輸出「H」,而不管搶答按鈕是否再次按下,宛如擁有記憶,這就是類似閂鎖(latch)電路的結構。

當 AND 閘持續輸出「H」其餘兩個 AND 閘便持續輸出「L」阻止其餘兩顆 LED 亮著這是因 NOT 閘將 AND 閘輸出反相輸入至其餘兩個 AND 閘之故只要按下重置按鈕將所有 AND 閘輸出變成「L」即可重新下一次搶答

實踐比空談理論重要,以下是焊接後的電路和操作示範。

圖四:焊接後的電路

圖五:按下開關按鈕 A,對應的 LED 持續亮著。

圖六:按下其他開關按鈕,亦不改變 LED 狀態。

以下影片展示電路實際操作:




結語

這個三人搶答系統進階版線路設計較為繁複,實際設計可進一步簡化,但為著實踐應用不同邏輯元件原則,此作如是故。當然電路設計五花八門,各位所想像的解決方案或許與筆者相異,歡迎留言交流分享。此搶答系統仍有改進之處,現留下思考空間讓大家繼續討論。未來筆者將提出更多有趣的邏輯電路問題,但畢竟電路從設計到驗證需時,請耐心等候。如在電路設計上遇到其他疑問,請私下聯絡,筆者願盡力為大家解答。

冬天裡的靜電 Static electricity in the winter

冬天天氣乾燥 ,當身體接近金屬物體,例如門鎖、水龍頭等,會產生微細「啪」的聲響,更甚在黑暗的環境中會看見閃光,皮膚亦會感到 輕微刺痛 ,雖然一般不會對身體構成危害,但亦令人感到困擾。這種現象的成因是 身體與衣服相互磨擦而積聚過多電荷(靜電),又因天氣乾燥,身體的電荷不能通過空...