跳轉至內容

MyHDL 和 NEXYS 2 板/數字邏輯基礎

來自華夏公益教科書,開放的書籍,面向開放的世界

人們喜歡談論計算機(更一般地,所有邏輯電路)用 1 和 0 處理資訊。在一些前提下(現在大多數是歷史性的),這是真的,但它本身並沒有提供太多見解。

在 19 世紀,喬治·布林 對他稱之為“所有推理基礎的普遍思維規律”感興趣。他想要創造數學來探索這個想法,並設計了我們現在稱之為布林代數的東西。和普通代數一樣,存在可以取不同值的變數,但它們唯一可以取的值是 TRUE 和 FALSE。如果我們有兩個布林變數 X 和 Y,它們只有四種可能的取值組合。你應該看看下面的表格,並確保你無法想到 X 和 Y 的任何其他取值組合,除了列出的那些。

X Y
FALSE FALSE
FALSE TRUE
TRUE FALSE
TRUE TRUE

布林代數定義了對這些變數的一些簡單操作。讓我們先來看一些簡單的操作,AND、OR 和 NOT。

X Y X and Y X or Y not X not Y
FALSE FALSE FALSE FALSE TRUE TRUE
FALSE TRUE FALSE TRUE TRUE FALSE
TRUE FALSE FALSE TRUE FALSE TRUE
TRUE TRUE TRUE TRUE FALSE FALSE

如果你理解這個表格,那麼你已經開始完全理解數字邏輯了。還有一些其他基本知識需要了解。

  • 還有一些其他的操作,但它們都是 AND、OR 和 NOT 的簡單組合。一個有趣的練習是找到一個“最小”的邏輯操作集,它可以普遍定義任何其他的操作。一個小的操作集只包含一個運算子 NAND,它的工作方式如下:NAND(X,Y) = NOT(AND(X,Y))。你可以用 NAND 定義所有邏輯運算。
  • 如果我們為 TRUE 和 FALSE 分配電壓,我們可以構建執行這些簡單邏輯運算的電子電路。這些電路被稱為“邏輯閘”或簡稱為“門”。
  • 如果門在一個更大的電路中排列,所有訊號從左到右流動(數學家稱之為 無環有向圖),那麼整個電路沒有記憶過去,它的輸出純粹是其當前輸入的函式。計算機科學等效的是純粹的 函式式語言
  • 如果我們構建一個包含迴圈的更大電路,我們可以在稱為 觸發器 的電路中儲存布林值,它們將隨著時間推移而持久存在。
華夏公益教科書