用書: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(請恕我忽略)

沒有留言:
張貼留言