我曾經說過,電子系的本科課程,可以串成一條宏偉的線索,它們從單個電子的運動規律出發,教你一層又一層地搭建出五彩繽紛的硬體、軟體與網路世界。當我在大四悟到這一點的時候,是心潮澎湃的。但是,在這條線索上,卻有一個關鍵的環節我一直沒搞懂,這是我本科時代的一個遺憾。
這關鍵的一環,就是「數字電路」課程中的「D 觸發器」。「D 觸發器」是計算機系統中存儲器的基本組成單元。它有「時鐘」和「數據」兩個輸入,功能是這樣的:
1. 當時鐘的上升沿到來時[1],根據外界輸入的數據,改變自身的內部狀態;
2. 在其它時候,保持自身的內部狀態不變。
「D 觸發器」有多種實現方式。有一種實現方式使用了 8 個與非門,下面這篇文章言簡意賅地介紹了它的設計思路,十分值得一讀:
三郎:計算機數學小書2-D觸發器的進化之路?zhuanlan.zhihu.com
但還有一種更加「節省」的實現方式,只用了 6 個與非門,這就是我長久以來沒有搞懂的東西。它的電路圖長這樣: