1. 程式人生 > >設計一個 硬體 實現的 Dictionary(字典)

設計一個 硬體 實現的 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”  的 效果 。

 

我們來看一下 “電子開關” 的 邏輯電路圖 :