2015-05-01

[數位邏輯]CH1

[數位邏輯]CH1
用書:Digital Number WITH AN INTRODUCTION TOTHE VERILOG  5thEdition




作者:Mani Ciletti
習題解答:第四版解答(注意版本不一樣)
筆記作者:曾理碩/啾咪喵
分享模式:創用cc 姓名標示-相同方式分享 (cc分享限筆記,不包括連外文件、投影片、作業、作業解答)
                      歡迎分享本文




部格相關連結:

前言:
    因為是筆記,通常以自己不會的地方做加強
    主要寫概念
    而較多複雜邏輯推理的地方會略過
    因此使用時請作為導引手冊
    請務必搭配課本使用(上方有連結)
    內文提到頁碼以紙本課本為主
    與電子書誤差為16頁[建議以章節翻找]

載點:    [筆記]    [投影片]    [作業]    [作業解答]






==========(以下為筆記內容,因為格式關係,完整資料請下載PDF)==========

1-1 數位系統
        資訊系統等知識
        Binary, digital device, how it work, out line or the book
        學習理由:為了了解不同的數位model,必須學習其原理
        其他目標:熟悉DHL設計方法很重要
        RTL: register transfer level
        HDL: hardware description language


1-2 二進位
        由十進位規則說到不同基數的通則,然後說到二進位、八進位、十六進位
    (p.s. p.21 line6 應該給成”1011011001011111”)
        K=, M=, G=, T=
        “+”, ”*” 比照十進位處理

學習備註:
1.     一串數字是什麼進位法,會寫在右下(下標),十六進位可省略
2.     Binary              二進位
        Decimal           十進位
        Octal               八進位
        Hexadecimal   十六進位


1-3 基數轉換
        10進位整數轉換成2進位:用除(/)
                1 3 6 12 24 49
1 1 0 0  0  1
        其他如八進位、十六進位也一樣

10進位小數轉換成2進位:用乘(*)
0.188*2 = 0.376 (MSB最左的位數)
0.376*2 = 0.752
0.752*2 = 1.504
0.504*2 = 1.008
0.008*2 = 0.016
        其他如八進位、十六進位也一樣
MSB: Most significant bit(最具影響的位元)



1-4 八進位與十六進位數字
        對照表見p.25
        八進位是二進位三碼一組、十六進位是二進位四碼一組
        我們用他們因為比二進位簡潔,尤其偏好十六進位,因為二碼就能表達一個byte


1-5 補數
        使用理由:簡化減法
        在使用n進位時,我們使用n’s compliment(n-1)’s compliment
        (n-1)’s compliment即以n為基數反轉(互補到n-1)
        n’s compliment(n-1)’s compliment + 1      (-N)
        做兩次compliment會回歸原數值

        補數減法:    (使用n’s compliment)
                A>BA – B = [ A + B補數] 去掉最高位
                A<BA – B = [-(A補數+B)] 去掉最高位
                                  = [ A + B補數]補數


1-6 帶號數字
        需要1bit紀錄正負,通常是第一位(MSB)記錄,0+              1-
        表示負號帶值可用該植或該植的1’’s 2’s compliment2’s最常見,不會對0有代碼疑慮
        算數加法:用2’s就直接加
        算數減法:    減正值 = 加負值          減負值 = 加正值          (都要取減數的補數)
        電腦只需要一組電路就能處理加法””減法這兩種算數



1-7二進位碼
        BCD(binary coded decimal)(8421)以二進位表示十進位
                為讓熟悉十進位的人容易理解的編碼方式
                4bit代表十進位一碼,每一位的值:80 40 20 10 8 4 2 1
                效率不及二進位,但容易理解,因為適用二進位直接表示十進位

        BCD碼之加法
                BCD碼沒有將4bit的代碼使用完全,有六碼未使用到
                而十進位逢9進位
因此BCD相加若超過1001(代表9),要補上0110(代表6)來進位

        十進位計算
                跟二進位是一樣的,要用一位來代表正負
                0+        9-
                計算方式比照二進位

        其他十進位代碼
2421碼、8,4,-2,-1
        顧名思義:這四個數字各代表四個bit的值
        前五碼以0開頭,後五碼以1開頭

(excress-3)(超三碼)
        顧名思義:BCD+3

Gray
        機械瀆職為避免錯誤
寫入資訊時相隔的代碼只差一個bit
可避免潛在錯誤
                個人認為:九連環,不過精簡成四碼XD www…不用記沒關係
                cyclic redundancy check(CRC)

ASCII
                除了數字,我們也為符號、字母、空白、指令做了對照表
                數字在ASCII碼裡面是符號,並非原數值
                7bit的代碼,有些系統提供擴充成8bit符號量(1bytes)



        偵錯碼
                傳送資料時,額外加一個bit,以確保資料正確(CRC)
                個人認為:反正AXCII +1bit剛好等於1bytes
                        Even parity 資料+parity bit的一的個數 = 偶數
Odd parity資料+parity bit的一的個數 = 奇數
                傳輸時系統會互相溝通(even parity),可以回去翻ASCII碼表
                        發現錯誤回傳NAK(negative acknowledge)(10010101)
                        成功接收所有訊息回傳ACK(acknowledge)(00000110)



1-8 位元儲存、暫存
        位元:紀錄1, 0兩種數值

        暫存器(register):數個位元組成

        暫存器轉換:將資訊用暫存器轉換,例如相同數值轉成不同代碼或四則運算
加法舉例:將資料從”memory unit”抓進”process unit”的兩個register,再加到另一個register
          最後存回”memory unit”



1-9 邏輯匣
Inverter:將1轉成00轉成1
X = A’ =
         

AND:只有「A1」且「B1」則X = 1
可以有兩個以上輸入
X = AB  or  X = AB
使用舉例:保留固定的位數,就做一個mask,將要保留的位置為1
          其他跟0 AND的值會被重置

OR:只有「A0」且「B0」則X = 0
可以有兩個以上輸入
X = A+B
使用舉例:將任何字母與”00100000”mask OR,就能將字母都轉成小寫

NAND:先做AND再做Inverter
只有「A1」且「B1」則X = 0
可以有兩個以上輸入
X = (AB)’ (注意!= AB’)
”Universal gate”,因為能用NAND做出所有其他邏輯匣
例如:兩個input連起來,變成NOT(inventer)
       
NOR:先做OR再做Inverter
只有「A0」且「B0」則X = 1
可以有兩個以上輸入
X = (A+B)’



XOR(exclusive OR)
A,B相異」則X = 1
X = AB = A’B + AB’
A’B’XORA,BXOR是相同的



XNOR(exclusive NOR)
A,B相同」則X = 1
X = AB = A’B’ + AB




沒有留言:

張貼留言