計算機數學小書2-D觸發器的進化之路
84 人贊了文章
關於D觸發器,其實《編碼》這本書的第14章《反饋與觸發器》已經寫得很通俗易懂了,從電鈴開始講起,很是佩服大師寫出如此簡單流暢的文章。
不過呢,我準備重新換一個角度梳理一下,將非門一直到邊沿性D觸發器,全部從邏輯上講通,確保你只看一遍,理解了這輩子都不會忘記這玩意。
數字邏輯里,最美妙的設計就是觸發器!
那就讓我們開始旅程吧!
首先,放張圖鎮一下,hahaha
1.從非門講起
請盯著這個非門電路圖看30秒,你會想到什麼:
吾非吾。
對,就是自相矛盾,邏輯錯誤,那最後到低是輸出真呢還是假呢,答案是,不真不假。
也就是輸出的電平不斷地01010101交替變化,輸出震蕩波形。
那我們有沒有辦法,讓這個系統穩定住呢???
2.穩定記憶
接著看這張圖
我們把兩個非門串在一起,是不是就能夠穩定了,邏輯自洽啦,既可以存儲狀態0也可以存儲狀態1。
吾亦是吾
結論:兩個非門反饋串聯,產生記憶。
遺憾的地方:我們沒有辦法改變這個系統的記憶,因為沒有控制介面。
3.控制記憶狀態
於是有了這張圖
用與非門替代上圖的非門,這樣就可以給系統添加兩個控制端。
如果我把下面的與非門翻轉180度,會變成下面的圖:
哈哈哈哈,有沒有一種似曾相識的感覺。沒錯,這就是RS觸發器呀!
還記不記得RS觸發器的四種狀態
- 輸入全為1就是保持,也就退化為兩個非門反饋串聯。
- 其中一個為0,就會控制記憶和輸出
- 兩個全為0,就會非法態。
備註:當然也可以用或非門玩,於是就產生了兩種RS觸發器呀。
Bug:1. 能夠控制記憶,但是有非法態。
2.整個系統不受控,一直都在工作。
4.自控給我自由
在輸入端添加了兩個或門,這樣的話,中間這個輸入引腳為1的話,那就自動屏蔽外部輸入,也就是老子不想幹活了。只有中間這個引腳為0的時候,才工作。
我們這樣的設計,解決了3中的第二個bug2,但是依然存在非法態,那我們怎麼幹掉呢?
5.化繁為簡
既然中間引腳解決了保持記憶的問題,那我們最後只要保證輸入的兩個引腳不同,就可以避免全0的情況,加個非門不就完事了。兩個輸入,永遠都不會同時為0.
仔細看一下,這是不是電平型D觸發器。
電平型D觸發已經可以保存數據,修改數據,但是存在bug,就是使能的時候,一旦輸入數據發生干擾變化,輸出也會受干擾。
那有沒有可能,我們精確控制數據只在某一時刻改變,其他時候都是可靠地保持數據。
6.繼續串聯,終極觸發器
將兩個D觸發器串聯,其中使能端CP用非門保證互斥,
於是第一個傳輸數據的時候,第二個D觸發器保持
第二個傳輸數據的時候,第一個觸發器保持。
最後的結果就是,只在邊沿觸發的那一刻傳輸數據!
於是邊沿性D觸發器誕生了。
我們可以在某一時刻同步觸發所有讀寫動作,然後其他時候數據一致可靠保存記憶。
此文,很短,如果細講的話,可能要好一會兒。
點到為止,大家細細理解。
推薦閱讀:
※計算機論文精選-20180530
※資料庫事務隔離標準分析
※關於C++,你了解這些嗎?
※從mSATA到M.2,新生代固態硬碟介面優勢解讀
※Android 64 bit的一些兼容性分析