A AND B = AB
AND, OR, NOT
假設是n位整數, m位小數
整數部分: 每個數字乘上 r^n
~ r^0
次
小數部分: 每個數字乘上 r^-1
~ r^-m
次
整數部分: num / r, 直到num=0為止, 反著取餘數
小數部分: num * r, 直到num=0為止, 正著取整數
octal -> binary
binary -> hex
(number N, in base r, having n digits)
r's complement = r^n - N
每個數字用(r-1)減掉, + 1
(r-1)'s complement = (r^n - 1) - N
每個數字用(r-1)減掉
k = 9 - k
)k = 1 - k
)如果要計算M - N
in base r
先算 K
= M + N的r補數
= M + (r^n - N)
如果 M >= N, r^n 可以省略
ex.
M = 725, N = 316, r = 10
N的10補數 = 10^3 - 316 = 684
M + N的10補數 = 725 + 684 = 1409, 捨去r^n (進位的1)
如果 M < N, 取r補數, 再加負號
ex.
M = 316, N = 725, r = 10
N的10補數 = 10^3 - 725 = 275
M + N的10補數 = 316 + 275 = 591,
取10補數 = 409, 加上負號 = -409
如果一補數減法時, 有end carry, 要加1。
ex. X = 1010100, Y = 1000011
如果要計算x + y
in base 2
先算x + y的2補數
= x + (2^n - y)
如果 x > y, 2^n 可以省略
x + (2^n - y) = 2^n + (x - y)
-> x - y
如果 x = y, 0
x + (2^n - y) = 2^n + (x - y)
-> x - y
-> 0
如果 x < y, 為 -(y-x)
x + (2^n -y) = 2^n - (y - x)
-> 就是了
最大位表示正負號
取一次二補數
ex. 6 (0110) -> -6 (1001 + 1 = 1010)
signed magnitude:
2's complement:
兩數binary直接加起來, 進位捨棄
把每位數用0000 ~ 1001 表示。
k位數的decimal需要4k bits的BCD
ex.
185 = 0001 1000 0101
Commutative Law
a + b = b + a, a x b = b x a
Associative Law
(a + b) + c = a + (b + c)
(a x b) x c = a x (b x c)
Reflexive
For any element a, it satisfies a = a.
Symmetric
if a = b then b = a must also hold.
Transitive
if a = b and b = c then a = c must also hold.
(a) Element 0 is an identity element with respect to +;
x + 0 = 0 + x = x.
(b) Element 1 is an identity element with respect to •;
x • 1 = 1 • x = x.
x | y | F |
---|---|---|
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
x | y | F |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
x | F |
---|---|
0 | 1 |
1 | 0 |
x + x = x
x * x = x
x + 1 = 1
x * 0 = 0
(x')' = x
x + (y + z) = (x + y) + z
x(yz) = (xy)z
(x+y)' = x'y'
(xy)' = x' + y'
x + xy = x
x(x + y) = x
x + 0 = x
x * 1 = x
x + x' = 1
x * x' = 0
x + y = y + x
xy = yx
x(y + z) = xy + xz
x + yz = (x+y)(x+z)
是一個代數式, formed with:
ex.
F = x + y' z
可以用真值表表示, 有2^n row。(n個binary var)
有無限個代數式能表示一個Boolean Function, 能找到最簡的 (cost)
任何Boolean function都可以用AND, OR, NOT表示
Ex.
F = x'y'z + x'yz + xy'
The complement of any function F is F'
Ex.
F = x'y'z + x'yz + xy'
F' = (x'y'z + x'yz + xy')' = (x + y + z')(x + y' + z')(x' + y)
Minterm (mi)
AND
ex. x, y
, minterms are x'y'
, x'y
, xy'
, xy
Maxterm (Mi)
OR
ex. x, y
, maxterms are x + y
, x + y'
, x' + y
, x' + y'
Mi = mi'
x | y | z | F |
---|---|---|---|
0 | 0 | 0 | 0 |
0 | 0 | 1 | 1 |
0 | 1 | 0 | 0 |
0 | 1 | 1 | 0 |
1 | 0 | 0 | 1 |
1 | 0 | 1 | 0 |
1 | 1 | 0 | 0 |
1 | 1 | 1 | 1 |
SOM = POM
取1
F = x'y'z + xy'z' + x'y'z'
= m1 + m4 + m7
= ∑m (1, 4, 7)
取0
F' = (x + y + z)(x + y' + z)(x + y' + z')(x' + y + z')(x' + y' + z)
= M0 * M2 * M3 * M5 * M6
= ∏M (0, 2, 3, 5, 6)
ex. F = y' + zy+ x'yz'
ex. F = x(y' + z)(x' + y + z' + w)
n binary variables
NAND 與 NOR 容易實現, 比XOR, XNOR更容易用於硬體設計
AND, OR 可擴展多個輸入
任何布林函數都 可以用NAND或NOR實現
F = x * y
x | y | F |
---|---|---|
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
F = x + y
x | y | F |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
F = x'
x | F |
---|---|
0 | 1 |
1 | 0 |
F = x
x | F |
---|---|
0 | 0 |
1 | 1 |
F = (xy)'
x | y | F |
---|---|---|
0 | 0 | 1 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
F = (x + y)'
x | y | F |
---|---|---|
0 | 0 | 1 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 0 |
F = xy' + x'y = x ⊕ y
x | y | F |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
F = xy + x'y' = (x ⊕ y)'
x | y | F |
---|---|---|
0 | 0 | 1 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
一個Function的truth table是unique, 但是algebra expression不unique
最簡的表達式: 最少terms, 越少literals越好。
如果說某兩行, 有個值與輸出無關
範例: m1, m3
m1: 001 x'y'z, m3: 011 x'yz
因此, m1 + m3 = x'y'z + x'yz = x'z(y' + y) = x'z
x | y | z | F | m |
---|---|---|---|---|
0 | 0 | 0 | 0 | |
0 | 0 | 1 | 1 | m1 |
0 | 1 | 0 | 0 | |
0 | 1 | 1 | 1 | m3 |
1 | 0 | 0 | 1 | |
1 | 0 | 1 | 1 | |
1 | 1 | 0 | 0 | |
1 | 1 | 1 | 0 |
F 是 n 個變數的 Boolean Function
P 是 乘積項
如果使P得到1的所有組合,F也等於1, 則P是F的蘊含項
Ex. F(A,B,C,D) = ∑ (0,2,3,5,7,8,9,10,11,13,15)
找PI
圈起來的都是PI (CD, B'C, AD, AB', BD, B'D')
找EPI
綠色的是EPI (BD, B'D')
選所有EPI
有: BD, B'D'
選最少的PI, 用於覆蓋未被EPI覆蓋的minterm
至少要: B'C + AB' (不唯一)
所以得到F = BD + B'D' + B'C + AB'
用 SOP 表示 F'
然後F = (F')'
F' = m0 + m1 = A'B'C'D' + A'B'C'D = A'B'C'
F = (F')' = (A'B'C')' = A + B = C
F = (F')' = (m0 + m1)' = M0M1 = (A+B+C+D)(A+B+C+D')=A+B+C
0: 用SOP表示F'
1: 套用Demorgan, F = (F')' (POS)
ex. F = ∑(0,1,2,5,8,9,10)
選0, F' = AB + CD + BD'
F = (F')' = (A'+B')(C'+D')(B'+D)
ex.
ex.
可以是0,1的
ex.
F(w,x,y,z) = ∑(1,3,7,11,15)
d(w,x,y,z) = ∑(0,2,5)
-> F可以是 ∑(0,1,2,3,7,11,15), 或是 ∑(1,3,5,7,11,15)
(方便化簡)
AND/NAND/OR/OR 有16種two level form (2^4)
這八種能退化至一個operation
AND-AND -> AND
OR-OR -> OR
AND-NAND -> NAND
OR-NOR -> NOR
NAND-NOR -> AND
NOR-NAND -> OR
NAND-OR -> NAND
NOR-AND -> NOR
這八種不行
AND-OR (SOP)
NAND-NAND (SOP)
OR-AND (POS)
NOR-NOR (POS)
AND-NOR/NAND-AND (AOI)
OR-NAND/NOR-OR (OAI)
AND-OR
F = x'y'z' + xyz' (SOP of 1's)
NAND-NAND (拿AND-OR 外demorgan)
F = ((x'y'z')' (xyz')')'
OR-NAND (拿NAND-NAND 內demorgan)
F = ((x+y+z)(x'+y'+z))'
NOR-OR (拿OR-NAND 外demorgan)
F = (x+y+z)' + (x'+y'+z)'
OR-AND
F' = x'y + xy' + z (SOP of 0's)
F = (F')' = (x + y')(x' + y)z'
NOR-NOR (拿OR-AND 外demorgan)
F = ((x+y’)’ + (x’+y)’ + z)’
AND-NOR (F'的NOT)
F = (F')' = (x'y + xy' +z)’ (AND-NOR)
NAND-AND (拿AND-NOR 外demorgan)
F = (x’y)’(xy’)’(z)’
x ⊕ y (XOR)
= xy'+x'y (AND-OR-NOT)
= ((xy)’x)’ ((xy)’y)’)’ (NAND)
(x ⊕ y)' (XNOR)
= xy + x'y'
Odd : F = A⊕B⊕C
Even: F = (A⊕B⊕C)'
even-parity:
讓資料跟P 1的數量是偶數
P = x⊕y⊕z
C = P ⊕ P
C = 1 -> odd number of 1's bit error
C = 0 -> correct or an even number of 1's bit error
ex. Adders, subtracters, comparators, decoders, encoders, multiplexers
將兩個一位元二進制數相加
0 + 0 = 00
0 + 1 = 01
1 + 0 = 01
1 + 1 = 10
S (和)
S = x’y + xy’ = x ⊕ y
C (進位)
C = xy
將兩個一位元二進制數相加,並根據接收到的低位進位訊號,輸出和、進位輸出
x, y: two significant bits
cin: 低位進位
S = x ⊕ y ⊕ cin
C = x y + y cin + cin x
S = x ⊕ y ⊕ cin
C = z(x ⊕ y) + xy
一堆 FA 串一起
M=0 : addition
M=1 : subtraction
兩個正數相加 -> 負數 (超出整數範圍)
兩個負數相加 -> 正數 (超出富庶範圍
V = 1 : overflow
V = 0 : overflow
n input variables -> 2^n outputs
1 to 2 line decoder
D0 = x'
D1 = x
2 to 4 line decoder
b0 = a1' a0'
b1 = a1' a0
b2 = a1 a0'
b2 = a1 a0
允許訊號傳遞 (用AND)
EN = 0 -> out = 0
EN = 1 -> out = in
out = in * EN
EN | in | out |
---|---|---|
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
inverse function of a decoder
z = D1 + D3 + D5 + D7
y = D2 + D3 + D6 + D7
x = D4 + D5 + D6 + D7
從多個input中,選取一個input,直接輸出
ex. 4 to 1 multiplexer
function table:
boolean expression:
Y = s0' s1' I0 + s0 s1' I1 + s0' s1 I2 + s0 s1 I3
circuit diagram:
MUX = Decoder + OR
Ex. F = Sigma(1,2,6,7)
有兩種做法
select input: x, y
data input: z
三種輸出:
0, 1, high-impedance
S R -> Q
0 0 -> Keep
1 0 -> 1
0 1 -> 0
1 1 -> invalid
S R -> Q
1 1 -> Keep
0 1 -> 1
1 0 -> 0
0 0 -> Invalid
En D -> Q
0 X -> No Change
1 0 -> 0
1 1 -> 1
clk D -> Q(下一狀態)
0 X -> No Change
1 0 -> 0
1 1 -> 1
clk D -> Q(下一狀態)
0 X -> No Change
1 0 -> 0
1 1 -> 1