2019年6月27日 星期四

打地鼠遊戲邏輯電路設計範例



前言

本電路以非編程方式實現經典打地鼠遊戲。使用邏輯 IC 取代微處理器控制流程,所構成的電路較為複雜,並涉及多個技術難點。是次回歸原始,目的為向大家示範如何運用基本邏輯閘及離散電子元件組合,製作較大型邏輯電路。從電路設計、選購元件到測試階段整個過程曾遇到大小不一的困難與喜悅,在此通過互聯網,冀與電子愛好者相互交流不吝指正、分享經驗。望透過此一有趣範例能吸引更多門外漢增加對電子學的興趣。

打地鼠遊戲說明

目的
遊戲開始後,16 個帶燈按鈕(地鼠)隨機亮起,並相隔特定時間只亮一顆。玩家需要在燈熄滅前及時按下按鈕取分,直至遊戲結束。

遊戲模式
設單關(單獨關卡)及連關(連續關卡)模式。

A. 單關模式
遊戲開始前,用「選擇等級」按鈕選擇等級 0 至 4 其中一級,以第 0 級亮燈頻率最低,第 4 級最高。每局上限隨機亮燈 20 次,擊中可取 1 分。如擊中率少於 50%,即累積打失次數達 11 次,遊戲即時結束,紅色指示燈亮起。如順利完成整個遊戲,遊戲結束後綠色指示燈亮起。

B. 連關模式
遊戲從第 0 級開始,計分方法與單關模式相同。順利完成即可晉級,晉級後累積打失次數將重設為 0。如處於任何一關,其累積打失次數達 11 次,遊戲即時結束,紅色指示燈亮起。玩家若能連續晉級並順利完成第 4 級,遊戲結束後綠色指示燈亮起。累積分數達 100 分者(連關模式下,擊中率達 100%),橙色指示燈不斷閃爍。

遊戲輸入
項目
元件
「開始 / 暫停」按鈕
按鍵開關 x 1
「選擇等級」按鈕
按鍵開關 x 1
「遊戲模式」選擇器
雙刀雙擲(DPDT)開關 x 1
基本出燈速度控制器
可調電阻 x 1
「地鼠」
帶燈按鈕 x 16

遊戲輸出
項目
元件
現時等級
七段共陰數碼管 x 1
累積分數
七段共陰數碼管 x 2
累積打失次數
七段共陰數碼管 x 2
順利完局指示燈
綠色 LED x 1
本局失敗指示燈
紅色 LED x 1
累積分數 100 分指示燈
橙色自閃 LED x 1

遊戲流程簡述
1.   使用 DPDT 開關選擇遊戲模式。
2.   如選擇單關模式,可進一步選擇遊戲級別。
3.   按一下「開始 / 暫停」按鈕開始遊戲。
4.   遊戲進行途中,可隨時按一下「開始 / 暫停」按鈕切換暫停或繼續遊戲。
5.   遊戲結束後方能按一下「開始 / 暫停」按鈕重新遊戲。在任何情況下切換遊戲模式,整個遊戲將重設,並等待新局開始。

參考電路 (可按此下載)


電路設計概略

  • 設計電路前,應先規劃遊戲大綱,然後制定規則、主要輸入與輸出數目、流程時序等,以縮減往後電路測試和修改時間。
  • 電路設計務求簡潔,選擇 IC 時需特別留意其工作電壓、扇出數及輸出電流,以免因推動力不足影響次級 IC 元件輸入位準或其他元件運作。建議統一採用同族 IC 如 4000 系列 CMOS 或 74HC 高速系列,混合使用可能因兩者特性差異(例如響應頻率),影響電路正常操作。然而,本參考電路出現不同 IC 族混合使用情況,原因是盡量運用手上現有資源,這當然會遇上一定困難。如各位有興趣進行本項目,可自行按需要適量修改電路。
  • 為增加電路穩定性,各 IC 電源 VCC 與接地 GND 腳位之間可駁接電容(如 0.1µF),或在電路正負極之間駁接一顆較大電容量的電容代替(以本參考電路為例,可使用 22µF)。
  • 電源接上片刻,整體電路處於不明狀態,必需要自動進行一次重設。
  • 如使用有 N 個輸入端的邏輯閘,而實際扇入數少於 N 時,空出的輸入端最好按情況全接至 VCC(如 AND 閘)或 GND(如 OR 閘)。
  • 留意計數器 IC 屬正緣或是負緣觸發,當兩種不同觸發類型 IC 配合使用時,需小心設計該部分電路,確定可正確計數。

電路焊接與測試

  • 繪製初版電路圖後,應先分多個小部分焊接測試。如不熟悉某種 IC 的特性,更需先查閱數據手冊(DATASHEET),並透過簡單實驗作基本了解。
  • 焊接電路後,以萬用電表檢查各焊點是否焊接妥當,沒有短路,架起電路板方開啟電源測試。
  • 留意電源電壓不可超出 IC 工作電壓,否則可導致元件銷毀。
  • 接線過長或過度堆疊,有機會對電路造成干擾,使運作不穩定,請特別留意。
  • 建議規劃電路板上的元件時,加入數個備用 IC 座及插針插座,方便在測試階段時修改電路。

相關影片

以下分別為打地鼠遊戲介紿及示範影片,希望大家進一步了解遊戲設計和製作的心路歷程:

遊戲介紹


遊戲示範

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.          現時紅色 LED(R LED)不亮著;
2.          現時沒按下「重置」鍵(RESET)不放;
3.          現時綠色 LED(G 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 構成,且待下回分解。

冬天裡的靜電 Static electricity in the winter

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