用書:Digital Number WITH AN INTRODUCTION TOTHE VERILOG 5thEdition
作者:Mani Ciletti
習題解答:第四版解答(注意版本不一樣)
筆記作者:曾理碩/啾咪喵
分享模式:創用cc 姓名標示-相同方式分享 (cc分享限筆記,不包括連外文件、投影片、作業、作業解答)
歡迎分享本文
部格相關連結:
前言:
因為是筆記,通常以自己不會的地方做加強
主要寫概念
而較多複雜邏輯推理的地方會略過
因此使用時請作為導引手冊
請務必搭配課本使用(上方有連結)
內文提到頁碼以紙本課本為主與電子書誤差為16頁[建議以章節翻找]
4-1 簡介
Combinational
logic (chapter 4)
Output只與Input有關
Sequential
logic (chapter 5)
包含記憶元件(狀態)
Output是由狀態和Input組合而成
相當於Output也受過去的Input影響
4-2 Combinational
logic(組合電路)
當有n個輸入
就會有個輸出
應用:加法器、減法器、乘法器、比較器、解碼器、編碼器
4-3 分析步驟 (分析一個邏輯電路)
先確定這不是Sequential logic (沒有回受[Feedback]或記憶體元件)
寫出Output的函式
標記Input跟Output的代數
將所有Output賦予有意義的名字
將每個電路段都標記符號
將每個符號都用Input表示出來
寫出truth table
整理函式
4-4 設計流程 (設計一個邏輯電路)
了解問題
確定有哪些Input跟Output
標記Input跟Output的代數
寫出truth table
簡化方程式(用K’s map)
畫邏輯電路圖
(例子見p.148[電子書p.132])
4-5 二進制加、減法器
(用4-4做出來)
加法器有兩種:
Half adder:只能做2 input的相加
只有兩個input跟兩個output
S
= x⊕y
C
= xy
Full adder:能處理3 input的相加(多了前一位”進位”)
有三個input跟兩個output
S
= x⊕y⊕z (實作時使用)
= xy’z’ + x’yz’ + xyz + x’y’z
C = xy + yz + xz
=
(x⊕y)z + xy (實作時使用,可重複使用邏輯匣)
之後只要使用加法器串在一起就能進行多位數加法
進位傳播(延遲):
然而上方的加法器有個缺點:進位傳輸要經過兩個邏輯匣
也就是每進一次未就會有兩個邏輯匣的delay
到第n位會有2n個邏輯匣的delay
寧可用複雜一點的電路,也要維持住速度
因此我們想到:其實每個C(進位)都是由一個方程式來控制
通常定義
= ⊕
= +
推得 = 前一位進位
= +
= +
= +
= + +
= +
= + + +
= + + +
(這裡看出課本P.156[電子書P.140]寫錯了)
藉由這個方法,每個進位只會有兩個邏輯匣的delay
將整個電路整合在一起就是4bit的加法器
減法器
簡單的說:使用加法器配合2’s
compliment就能達成
溢位
兩個正數相加時
過大會使MSB-1進位進到”標記正負號”的MSB
導致變成負數
(由MSB-1位數進位)
兩個負數相加時
過大會使MSB-1無法進位到MSB
而MSB是兩個1而進位變成0
導致變成正數
(由MSB位數進位)
為確保數值正確
在MSB跟MSB-1的位置值拉出來取OR
當這個值 = 1時,我們就知道溢位了
(在4bit加法器裡要取出OR的值為)
4-6 十進制加法器
先用4-4的設計流程跑一次好了
十進位在布林是以4bit表現
因此兩個十進位數字相加有九個input (2*4bit數字 + 進位1bit)
output有5個(4bit數字 + 進位1bit)
總共有組合,5條方程式
……
等等!會算死呦喵!
解決的方法是使用剛剛製造出來的4bit的加法器
不過要使用兩個呦!
诶?為啥?
因為十進位以二進位表示時
有6個值是沒有使用到的
當發現有進位(超過1001)時
應當把值 ”再加上6” (詳見CH1)
這邊判定進位請使用 ”4-4設計流程”
因此實作如p.162[電子書p.146]
4-7 二進制乘法
乘法就使用直式乘法來處理
然後會用到加法器,再配合使用就可以了
4-8 比較器
以4bit比較器為例
相等情形
相等情形就是每一位都相同
使用”4-4設計流程”判定知道其每個bit都以Exclusive NOR處理
但是
為了減少使用的邏輯匣
實作上是不一樣…(見p.166[電子書p.150])
大於跟小於情形
都要從最高為開始比較
值得注意的是高位樹已經比出結果
就會有電路去屏蔽後面位元比較的結果
4-9 解碼器
圖示:
編碼器就是將n bit輸入的數值
在不同的訊號下分別由條output選一條輸出1(使用NAND就輸出0)
例如三轉八的編碼器會寫做”3x8 decoder”
在組合上可以直接製做
也可以用兩個3x8 decoder來組成4x16 decoder
以此類推
至於為何要把密碼拆出來
可以想像每條線都是一個minterm
使用時需要哪些可以很直覺的拉出來
也可以加入”Enable”
只要Enable = 1就輸出全部都是0(使用NAND就輸出1)
4-10編碼器
編碼器也可以使用”4-4設計流程”來做出函式給每個output
優先編碼法(Priority encoded)
但是輸入如果有誤時(例如全為0或超過一個為1) [NAND情況依舊相反]
無法確定輸出
因此我們以”檢查”的方式來判定
優先順位由最高位開始依序向右
有一碼為”有效值輸出”(V)
若都沒有則使V = 0令輸出無效化
當為有效輸出時
優先順序由D3>D2>…>D0 (注意:由右而左!)
由優先順序大開始檢查
檢查到1為止
(如p.172[電子書p.156])
剩下可使用”4-4設計流程”完成
有一碼為”有效值輸出”(V)
若其為0輸出無效
當為有效輸出時
優先順序由D3>D2>…>D0
由優先順序大開始檢查
檢查到1為止
4-11 多功器
圖示:
兩個以上input的資訊,但只有一個output line
用多功器選擇要讀取那些資訊輸出(通常到螢幕)
其實只需要用幾個select bit()來選取”需要的線路”就能做出來了
可以拿MUX實現布林函式(個人認為只用在考題= =|||)
簡單的說在這種情況下
只有一種”資訊”
其他都是選擇該資訊走向的select bit
因為”資訊”產生出來的組合只有四種(D, D’, 1,
0)
因此可能有一些input是一樣的東西
三態匣(Three-State Gates)
算是一種斷路系統
用一個”Control input”來控制電路是否通路(為1時通路)
用三態匣搭配解碼器能控制要放哪一條訊息到output
就相當於MUX了
Enable 釐清
Enable Low:
在Enable為0時才能執行的電路
在Enable為1會斷路或無輸出的電路
同理知Enable High
4-12 HDL(請恕我忽略)
沒有留言:
張貼留言