設計一個 硬體 實現的 Dictionary(字典)
Dictionary 就是 字典, 是一種可以根據 Key 來 快速 查詢 Value 的 資料結構 。
比如 我們在 C# 裡用到的 Dictionary<T>,
在 程式設計 裡, 字典 通常使用 雜湊表(Hash 表) 的 方式 實現, 也可以用 索引 的 方式 實現,
不過 索引 太佔空間 了, 所以 在 資料庫 裡 用的 很普遍, 但是 在 應用程式(記憶體) 這一層面 好像 沒有看到過用 索引 的 。
今天 我們 來 設計一個 用 硬體 實現 的 字典 : ^^
要開始研究 硬體 來 實現一個 字典 呢, 需要 先 準備 一些 基礎知識, 可以先看一下我寫的另外一篇文章 《漫談計算機硬體的設計和實現》
https://www.cnblogs.com/KSongKing/p/9866334.html
首先, 我們要引入一個 “開關門” 閘電路, 就是 除了 “與”、“或”、“非” 閘電路 外, 還需要一個 “開關門” 閘電路,
實際上, “開關門” 電路 就是 構成 “與”、“或”、“非” 閘電路 的 基礎 。
我們來看一下 “開關門” 電路 的 邏輯電路圖 :
當 控制端 輸入 0 時, 開關 關, 即 輸入端 到 輸出端 之間的 電路 接通,
當 控制端 輸入 1 時, 開關 開, 即 輸入端 到 輸出端 之間的 電路 斷開 。
這個 “開關門 ” 是不是有點像 三極體 ? 哈哈哈
接下來, 我們要設計一個 “電子開關”,
“電子開關” 就是
當 設定端 是 0 時, 輸入端 若 輸入 0 , 則 輸出端 輸出 1, 若 輸入端 輸入 1 時, 輸出端 輸入 0,
當 設定端 是 1 時, 輸入端 若 輸入 0 , 則 輸出端 輸出 0, 若 輸入端 輸入 1 時, 輸出端 輸入 1,
這是 …… ?
哈哈哈, 就是 輸入端 輸入的 值 和 設定端 相同 時, 輸出端 輸出 1 (開), 否則 輸出端 輸出 0 (關) 。
這有什麼用 ?
利用 這個 “設定” 的 功能, 可以實現 “設定 Key” 的 效果 。
我們來看一下 “電子開關” 的 邏輯電路圖 :