顯示具有 數位系統導論 標籤的文章。 顯示所有文章
顯示具有 數位系統導論 標籤的文章。 顯示所有文章

2014年12月8日 星期一

組合邏輯電路

1.組合電路 v.s 循序電路
  • 組合電路:
    • 由邏輯閘構成,輸出為當前運算的結果
  • 循序電路:
    • 使用了儲存原件與邏輯閘
    • 輸出關係到輸入與先前儲存的結果
2.組合電路設計順序
  • 確定問題
  • 確定輸入與輸出
  • 指派輸入與輸出變數
  • 推導真值表
  • 簡化布林函式
  • 繪製邏輯電路圖並驗證結果
3.加法器
  • 半加器:2輸入2輸出,兩個當前要相加的bit,輸出該位元相加值與進位值
  • 全加器:3輸入2輸出,兩個當前要相加的bit,一個為前個bit的進位 ,輸出該位元相加值與進位值 
  • 透過串連的全加器,可夠成N-bit的加法器(漣波進位加法器)
    • 跟直觀的人為加法一樣,由後往前加,所以必須知道前一個bit是否有進位才可繼續運算 →造成傳遞延遲
  • 為了避免漣波進位的延遲 → 超前進位加法器
    • 因電路複雜使成本增加,但是簡短了運算時間
    • 打破資料相依性,使相加結果只與C0(初始值)有關
      • 使用疊代,將目前進位以前一次相加的結果取代,始終用最低位元表示
      • 因此,越高層(高bit)的電路,複雜度會愈趨增加
  • 使用加法器實做減法器
    • 可以透過一個位元操作
    • 減法其實等於與2補數相加,而2補數為1補數再加1
    • 那麼
      • 有AB兩數
      • 透過一個位元M,傳給C0,先將與B的各個Bit與M做Xor再送入全加器
      • 當M = 0時,B xor M = B,C0 = 0,為加法
      • 當M = 1時,B xor M = B',C0 = 1,所得為B的1補數+1=B的2補數,為減法
4. 溢位
  • 定義:一個n-bits間的運算卻造成了n+1-bits的結果 → 進位到了表示正負號的bit
  • 電腦必須偵測溢位並設置正反器以供之後調用
  • 如何避免溢位?
    • 假設有7bits相加
    • 使用9bits去儲存,多的2個bit
      • 第9 bit當作正負號
      • 第8 bit當做額外進位(7→8)
5.比較器
  • 兩輸入:A、B,三輸出:A>B、A<B、A=B 
  • 假設A、B的為4bits:A3A2A1A0、B3B2B1B0
  • 令Xi = AiBi + Ai'Bi' (Ai XNOR Bi)、即Ai、Bi相同時為1
  • 當A = B →  A3 = B3(X3 = 1) ...... A0 = B0(X0 = 1) → A=B可以表示為 X3*X2*X1*X0
  • 判斷A > B:A3B3'+x3A2B2'+x3x2A1B1'+x3x2x1 A0B0'
    • 先看A3B3'
      • 如果A3是1、B3是1:該項為0 → 往下一bit繼續比
      • 如果A3是1、B3是0:該項為1 → 不用比了,A > B
      • 如果A3是0、B3是1:該項為0,而且x3為0 → 接下來的每項都 = 0 → A < B
      • 如果A3是0、B3是0:該項為0、不過x3為1 → 可以往下一bit繼續比
    •  可以發現x3、x2...可以用做比較是否進行的標準
  • 判斷A < B:A3'B3+x3A2'B2+x3x2A1'B1+x3x2x1 A0'B0
6.n to m 解碼器
  • 有 n 個 bits→ 能表示 2^n種情形
    • 解碼器目的:輸入有n bits,產生2^n種輸出 
    • 即是表現出所有的 minterm 型式
    • 既然能表示出所有的 minterm,即能利用解碼器實做出任何電路
      • 但是效率並非最佳化
7.編碼器
  • 解碼器的逆操作: 2^n → n
  • 無法用卡諾圖化簡,直接用結果畫電路
  • 優先權編碼器
    • 允許多個輸入為1,因為只看最高位元,其他為Don't care (X)
8.多工器 (選擇器)
  • 目的:從多個輸入中,選擇出其中一個輸入
    • 比如說有輸入A、B,選擇用位元S
      • 使 A AND S、B AND S',再將他們做 OR
      • 在 S = 0時,輸出的是 B
      • 在 S = 1時,輸出的是 A
9.三態閘
  • 輸出:0、1、高阻抗(斷開電路,不會產生邏輯訊號)

2014年10月13日 星期一

卡諾圖的化簡

1.認識 minterm & maxterm

Minterm   :  由輸入或輸入的補數構成的   AND
    比如有兩個輸入x,y,那minterm = xy , x’y, xy’ ,x’y’
Maxterm : 由輸入或輸入的補數構成的    Or
    比如有兩個輸入x,y,那maxterm = x + y, x’+y , x+y’ , x’+y’

->考慮DeMorgan’s theorem
    (A + B + C)’ = A’B’C’
    (ABC)’ = A’ + B’ + C’

可以進行Minterm與Maxterm之間的轉換:
    e.g. x’y’z’ = m0 = x + y + z =M0
再比如說有一個電路
    F = x’y’z’ + xy’z’ + xyz = m1 + m4 + m7,
    F’ = x’y’z’ + x’yz +x’yz’ +xy’z +xyz’ =m0 + m2 +m3 +m5 +m6
    F’’ = (x+y+z)(x+y’+z)(x+y’+z’)(x’yz’)(x’y’z)
所以說F可表達成兩個形式

    1.  5個 minterm    or   在一起 (SOP)sum of product形式
    2.  5個 Maxterm  and 在一起 (POS)product of sum形式


那有了Minterm跟Maxterm有什麼好處呢?

    若電路F表示為 x’y’z + xyz +xyz’
    上述的F稱為 canonical form,因為它有三個輸入,而且每項都有3個變數,實際上F可化簡為x’y’z +xy,但這樣就非 canonical form
    那表示成canonical form又有什麼好處?就是真值表定可表達成canonical form,比如說:
        x=0,y=0,z=1,可以寫作x’y’z
        x=0,y=1,z=1,可以寫作x’yz
        x=1,y=1,z=0,可以寫作xyz’
    所以只要有真值表,任何電路總能表達成canoncial form(SOP或POS),但是這個形式有個致命的缺點,就是他的變數很多,這間接導致了成本增加。

於是,我們需要簡化的技巧

Gate-level minimization

2.Karnaugh Map

    1.按照格雷碼填入電路輸入 e.g(00 , 01, 11, 10)
    2.圈1 or 圈 0 ,以1,2,4,8,16,32...2的次方為個數去圈,儘量多圈讓化簡達到最大效果
    3.圖視為連通的
    4.持續的圈0 or 圈1,直到所有的0或1都被圈到
    5.圈1得到化簡的F (SOP形式),圈0得化簡的F' (SOP形式),需再做一次迪摩根得F(POS形式)
   
0或1可以重複圈,但是一定要完全圈完其中一種
注意:如果一個項的變數個數跟輸入不同,比如說輸入有w,x,y,z,但F中有一項為wxy’,即缺少了z項,那麼我們就要把wxy’z與wxy’z都視為1

卡諾圖的消去原理:(x' + x) = 1

2014年10月3日 星期五

數位系統導論 - 布林代數


0.布林代數其實就是0與1的運算

1.三種布林代數的表示
  • Boolean Algebra
  • Truth table
  • Circuit Diagram
2.普遍原則
  • Closure
    • e.g. 若x*y屬於集合S,則x,y也會屬於S
  • Associative law
    • a*b*c = a*c*b
  • Commutative law
    • 1+0 = 0+1, 1*0 = 0*1
  • Identity elements
    • + : 0+0 = 0 , 1+0=0 ,such that x+0 = x
    • *  : 0*1 = 0 ,  1*1=1, such that x*1=x
  • Distributive law
    • x*(y+z) = x*y + x*z
    • x + yz - (x+y)(x+z)
  • DeMorgan's Theorem (德摩根定律)
    • (x+y)' = x'y'
    • (xy)' = x' + y'
    • 廣泛用於電路最佳化(And與Or的轉換)
      • e.g : x' + y' = (xy)' = NAND gate
    • 可以用在SOP與POS之間的轉換
  • Absorption
    • xy + x = x (x+y) = x
3.運算子優先順序
  • 括號 > NOT > AND > OR
4.邏輯閘

x與y為input
  • And  : x*y
  • Or : x + y
  • Not : x = x'
  • NAND : -> And ->Not
  • NOR :  -> Or -> Not
  • Exclusive - Or  (Xor) = xy' + x'y 相同input為0,不同input為1(互斥)
  • Exclusive - Nor  = xy + x'y' 相同input為1,不同input為0
5.Positive logic and negative logic
  • Postive logic : H =1, L=0
  • Negative logic : H=0, L=1
  • active high : 1的時候出現反應,為正邏輯
  • active low : 0的時候出現反應,為負邏輯
6.Circuit
  • Gate : 1個邏輯閘大概由2~14個電晶體構成
  • Circuit : 由多組邏輯閘構成
    •  A combination of interacting gates
    • Integrated Circuit (IC)
    • Chip 
      • A silicon semiconductor crystal that contains the electronic components for constructing digital gates.
    • Level
      • SSI
      • MSI
      • LSI
      • VLSI
  • System : 放在一個PCB(印刷電路板)上,由很多組電路構成
7.Parameters for Digital Logic Families

由於不同的製作技術,在邏輯閘上以下的參數可能會有所不同
  • Fan-Out
    • 一個邏輯閘的Output到底能夠推動幾個邏輯閘正常運作
      • 一個邏輯閘的輸出,最多能推動幾個輸入
    • e.g. Fan-out = 2,Output就只能接兩個
      • 假設1代表5V,如果接了3個,有可能一個Output只能達到2V
      • 但是不影響原本的布林函數
  • Fan - In
    • 想做Fan-Out的反面
  • Propagation delay (傳遞延遲)
    • 邏輯閘是由電晶體構成,電晶體充放電都需要時間,所以會造成延遲
    • 一個晶片裡,邏輯閘的數目有幾百萬~幾千萬個
      • 即便一個邏輯閘的延遲只有幾奈秒,加總起來仍十分龐大
      • 是用最慢產生的最終Output當成傳遞延遲
      • 所以說,晶片的表現要好,整體模組的速度要差不多快
    • 傳遞延遲跟光罩製作技術(e.g.微米,奈米)有關
  • Noise Margin
    • e.g. 1~0V之間判斷為0,4~5V之間會判斷為1
8.Computer Aided Design
  • 現在的邏輯閘動輒上百萬,我們需要電腦輔助設計(CAD tool)
  • EDA is specially used for IC design
    • HDL (Hardware Deseription Language)
      • 用來描述你電路的語言
      • tool幫你compile之後會轉換(Logic synthesis)為邏輯閘(一個實體的電路)
  • 電路實現的種類
    • ASIC 
      • 應用導向的積體電路
      • 量身打造你設計出的電路
    • FPGA & CPLD
      • 給你的是晶片,裏面cell都固定
      • 我們可以自己把電路燒上去
      • 只要電路沒有超過cell,都能應用上去 
9.NAND and NOR
  • 其餘邏輯閘都能由NAND或NOR實做而成
    • 為何使用?
      • 因為NAND與NOR容易透過電晶體實做
      • 因為NAND與NOR比起AND與OR有更低的傳遞延遲
  • 電路上的轉換要則
    • 1.2個Not = 0個Not,透過增加雙向的Not將AND或OR轉換
    • NAND與NOR之間的轉換
      • 用兩次迪摩根法則: x' + y' + z' = (xyz)'

2014年9月29日 星期一

數位系統導論 - Binary System

#1.數位是什麼?而為什麼要數位?

先回答第一個問題,資料可以用兩種方法來表示,即是類比與數位,兩者最大的區別在於數值連不連續,其中類比是連續的,而數位是離散的。用一條1~5的數線來看,類比資料可以是其中任何一個點,比如1.3、0.1884251,但是數位資料可能只代表了整數點1,2,3,4,5,而在1跟2、2與3、3與4、4與5之間不容許其他任何值存在,只能透夠近似的方式把3.23之類的居中值分配給最接近的點。

而為何要數位呢?正如先前的例子,我們可以發現類比資料是無窮無盡的,比如1與2之間切半得1/2,再切1/4,可以這樣無窮的切下去,但是我們的硬體則是有限的,所以必須把類比資料數位化,方便電腦進行處理。

而多數的數位系統會用兩個離散值來表示狀態,比如
  • 0 or 1
  • True or False
  • High or Low
  • On or Off

#2.進位制表示法

2-1

一個N進位的數字1234.5678而言,可以寫作(1234.5678)N
而他用十進位的值為:1*103+2*102+3*101+4*100+5*10-1+6*10-2+7*10-3+8*10-4

十進位轉R進制:
  • 整數部分:不斷除R,除完後取商繼續除,直到不能除為止,取餘數排列(除越多次者越高位)
  • 小數部分:不斷乘R,乘完後取積繼續乘,直到小數化為整數,(乘最多次為最小小數位數)
2-2
二進位轉八進位:由右往左數,三個(2的三次=8)為一組
e.g. : 10101011 -> 10101011 ->  253
 
二進位轉八進位:由右往左數,四個(2的三次=16)為一組
e.g. : 10101011 -> 10101011 ->  AB

#3.

Signed Magnitude representation

  • 第一位用來表示正負e.g. 000 = 0,101= -1
  • 容易在運算在溢位
1's Complement representation
  • 負數表示法:原值0與1互換
    • e.g. 1011000 0100111
  • 缺點是存在兩個0 (111與000)
  • 1補數的減法 
    • 所有的減法都透過與其補數相加達成
      • e.g. a - b = a+(-b)
    • 相加如果有在最高位元有進位,要將進位值補到最末位元
    • 反之,沒有進位則代表真正答案為負,要再取一次原結果的一補數
2's Complement representation
  • 表示法:取一補數再+1
    • e.g.1011000 取一補數 0100111之後加一得 0101000
  •  2補數的減法
    • 所有的減法都透過與其補數相加達成
      • e.g. a-b = a+(-b)
    • 相加如果有在最高位元有進位,直接捨棄進位得答案
    • 反之,沒有進位則代表真正答案為負,要再取一次原結果的二補數


1.Binary Code
  • 每個bit可代表兩個情形(0&1),則n bits代表了2^n種情形
    • e.g. 10進位的數字0~9要區別可以使用4個位元(16種) 
Binary Code 表示法
  • BCD 8421
  • 2421
  • Excess - 3 =BCD + 3
  • 84 -2 -1
  • 以上每個數字都代表著一個位元
  • 比如數字4
    • 8421 : 0100 = 8*0+4*1+2*0+1*0
    • 2421 : 0100 = 2*0+4*1+2*0+1*0
    • Excess -3 : 0111 : BCD+3 = 0100 + 3 = 0111
    • 84-2-1: 0100 = 8*0+4*1+2*0+1*0
2.BCD
  • 185 = (0001 1000 0101)BCD
  • (a3,a2,a1,a0)BCD = 8a3+4a2+2a1+1a0
  • BCD編碼並不是self-complementing code,這使得BCD雖然是最直覺的編碼方式,但在某些情形仍需要其他三種補足
  • Self Compleementing
3.Gray Code
  • 優勢:確保一次只有一個位元改變,使得充放電(可以想做0與1之間的轉換)較少也較省功耗
 設計數位系統必須考慮三樣要素:cost,speed,power,必須要在三者間求得平衡

4.ASCII Character Code

  • American Standard Code for Information Interchange
  • 運用7個組合表示128種字元
5.Unicode
  • 2bytes
6.Error Detection/Correction Code
  • 傳遞的過程可能發生Error
  • 除了要偵測錯誤,還要把錯誤更正回來
  • 使用方法 : Even parity 與 Odd parity
  • Even parity : 將原字元插入1,使其共有偶數個1
    • 比如說 : 000插入0 (變為000-0,末位為parity),以維持0個(偶數個)1,001則要插入1,來維持2個(偶數個)1
  • Odd parity :將原字元插入1,使其共有奇數個1
  • 透過此法,能夠得知位元上的錯誤,比如說在傳送中將001-1誤傳為011-1,在Even parity的保護下,我們知道總共只能有偶數個1,從而得知傳送發生錯誤
  • 但是,如果錯了很多個bits,parity bit就不太可行了



Binary Storage & Register
  • Binary Cell
    • 2 stable states,1-bit information(0 or1)
  •  Register 暫存器
    • 是一組binary cell
    • 暫存需要處理或output的資料
    • 暫存的資料可能有不同的編譯方式,例如01000001可能表示A or 65 or ......
    • 其實暫存器就是由一堆邏輯閘構成的電路
    • 暫存器是最快但容量最小的記憶體,位於最高的記憶體階層
    • 依據暫存器的大小,可將處理器分為32bits與64bits