数字逻辑摘要与总结

Lec1 Number Systems

Intro

模拟信号
数字信号
数模转换器(ADC):将未过滤的、连续变化的信号转化为采样后的数字信号
Digital System:处理数字信号或者数据(离散)的系统
Bits: 10010110 10010110 10010110,其中的每一位称为bit
Bytes:8个bit是一个byte在这里插入图片描述

Digital Number Systems

常用进制

在这里插入图片描述

进制转换

多进制转十进制

D = d n − 1 r n − 1 + d n − 2 r n − 2 + . . . + d 1 r + d 0 + d − 1 r − 1 + d − 2 r − 2 + . . . + d − m r − m D=d_{n-1}r^{n-1}+d_{n-2}r^{n-2}+...+d_1r+d_0+d_{-1}r^{-1}+d_{-2}r^{-2}+...+d_{-m}r^{-m} D=dn1rn1+dn2rn2+...+d1r+d0+d1r1+d2r2+...+dmrm
d n − 1 d_{n-1} dn1MSD(Most-significant Digit) d − m d_{-m} dmLSD(Least-significant Digit)
公式中 n n n是整数位数, m m m是小数位数

练习

1010.10 1 2 = 1 × 2 3 + 0 × 2 2 + 1 × 2 1 + 0 × 2 0 + 1 × 2 − 1 + 0 × 2 − 2 + 1 × 2 − 3 = 10.625 1010.101_2=1\times 2^3+0\times 2^2+1\times 2^1+0\times 2^0+1\times 2^{-1}+0\times 2^{-2}+1\times 2^{-3}=10.625 1010.1012=1×23+0×22+1×21+0×20+1×21+0×22+1×23=10.625

十进制转多进制(Radix-r)

Integer: Successive divisions by r and observe the remainders 读取顺序——从下往上
Fraction: Successive multiplication by r and observe the integer part 读取顺序——从上往下

练习

13.62 5 10 13.625_{10} 13.62510转化为二进制:
对13进行successive division,得到 ( 6...1 ) , ( 3...0 ) , ( 1...1 ) , ( 0...1 ) (6...1),(3...0),(1...1),(0...1) (6...1),(3...0),(1...1),(0...1),二进制表示为1101(从下往上)
对0.625进行succesive multiplication,得到 1.25 , 0 , 5 , 1.0 1.25,0,5,1.0 1.25,0,5,1.0,二进制表示为101(从上往下)
13.62 5 10 = 1101.10 1 2 13.625_{10}=1101.101_2 13.62510=1101.1012

多进制转多进制

基本思路:将 r r r进制转为10进制,再转为 r ′ r' r进制
特殊的进制转换

二进制转八进制

技巧:三位二进制为一组,组内判断,可以向左右两侧补0,如 10110.0 1 2 = 010   110.01 0 2 = 26. 2 8 10110.01_2=010\space110.010_2=26.2_8 10110.012=010 110.0102=26.28

二进制转十六进制

技巧:四位二进制为一组,同上,如 10110.0 1 2 = 00010110.0 1 2 = 16. 4 16 10110.01_2=00010110.01_2=16.4_{16} 10110.012=00010110.012=16.416

八进制转十六进制

技巧:先将八进制转化为二进制,再转化为十六进制

二进制加减法

加法:进位
减法:借位——进2

Data Representation

补码和反码

设计原因:机器不好实现借位操作,故设计补码和反码
补码(r’s-complement):补码表示的整数范围更大(四位补码能表示-8~+7而反码无法表示-8),同时补码可以保证运算的正确性(结果在表示范围内
反码((r-1)'s-compliment)

十进制

例 540的补码和反码
9’s complement(反码): 999 − 540 = 459 999 - 540=459 999540=459 (好处:无需借位)
10’s complement(补码): 1000 − 540 = 460 1000-540=460 1000540=460(反码加一,技巧:用10减去最低非零位,9减去剩余高位)

二进制

1011000 0 2 10110000_2 101100002的补码和反码
1’s complement(反码): 0100111 1 2 01001111_2 010011112
2’s complement(补码): 0101000 0 2 01010000_2 010100002(反码加一,技巧:最低非零1不动,其余高位取反)

补码的运算
减法——计算 M − N M-N MN

M > = N M>=N M>=N,则 M − N = M + N ′ M-N=M+N' MN=M+N,其中 N ′ N' N N N N的补码,结果自然溢出,剩余位是答案
N > M N>M N>M,则 M − N = M + N ′ M-N=M+N' MN=M+N,其中 N ′ N' N N N N的补码,结果为答案的补码
练习1:计算 72532 − 3250 72532-3250 725323250 3250 − 72532 3250-72532 325072532
72532 − 3250 = 72532 + 96750 = ( 1 ) 69282 = 69282 72532-3250=72532+96750=(1)69282=69282 725323250=72532+96750=(1)69282=69282
3250 − 72532 = 03250 + 27468 = 3071 8 d r c = − 69282 3250-72532=03250+27468=30718_{drc}=-69282 325072532=03250+27468=30718drc=69282
练习2:计算 1010100 − 1000011 1010100-1000011 10101001000011 (结果为正) 和 1000011 − 1010100 1000011-1010100 10000111010100 (结果为负)
1010100 − 1000011 = 1010100 + 011110 1 d r c = ( 1 ) 0010001 = 0010001 1010100-1000011=1010100+0111101_{drc}=(1)0010001=0010001 10101001000011=1010100+0111101drc=(1)0010001=0010001
1000011 − 1010100 = 1000011 + 010110 0 d r c = 110111 1 d r c = − 0010001 1000011-1010100=1000011+0101100_{drc}=1101111_{drc}=-0010001 10000111010100=1000011+0101100drc=1101111drc=0010001

BCD

BCD是一种用于进行十进制运算的方法
表示方法:按位表示,如 396 —— 0011   1001   0110 396——0011\space 1001\space 0110 396——0011 1001 0110
加法运算:每一列进行运算,如果结果大于等于10,需要补6,溢出位添加到下一列BCD加法
减法运算:变成补码的加法运算处理

Gary Code

格雷码引起的变化位数最小,规则见下图gray code

ASCII code(略)
Error-Detecting code

奇偶校验位:采用一定标准,如偶校验标准,那么要保证数字串中的1的个数为偶数。为了达到此目的,在数字串前(后)加一位数字(0,1)作为校验位

注意
  1. 一个数的数值有原码、反码和补码,它的正负号另外判断的,二进制中由符号位决定
  2. 将一个负数转化为补码二进制时,原码的符号位取0
  3. 补码转化为原码的规则和原码转化为补码的规则一致,即 r r r减去最低非零位, r − 1 r-1 r1减去其余高位,注意要加上符号
  4. 二进制运算时容易看错,注意细节
技巧
  1. 上述求补码、加减技巧
  2. 四位二进制读数: 1000 1000 1000 8 8 8 0100 0100 0100 4 4 4, 0010 0010 0010 2 2 2 0001 0001 0001 1 1 1,由此可以快速算出四位二进制大小。如 1011 1011 1011 8 + 2 + 1 = 11 8+2+1=11 8+2+1=11

Binary Logic

AND在这里插入图片描述

OR在这里插入图片描述

NOT在这里插入图片描述

Lab: FPGA

Lec2 Boolean Algebra

Axioms and Theorems

Theorems and their duals

Dual: 将dot变成add,将0变成1
在这里插入图片描述
在这里插入图片描述

Precedence

P a r e n t h e s i s > N O T > A N D > O R Parenthesis >NOT>AND>OR Parenthesis>NOT>AND>OR

Simplify Boolean Functions

概念

Literal:变量或者它的补(取反)
Product term:AND term
Sum term:OR term
例: A ′ B ′ C + A ′ B C + A B ′ A'B'C+A'BC+AB' ABC+ABC+AB 中,有8个literal,3个product term, 1个sum term

Truth Table

布尔函数在真值表中有且只有一中表示方式,但是可以有多种代数形式
F 1 = x ′ y ′ z + x ′ y z + x y ′ , F 2 = x y ′ + x ′ z F_1=x'y'z+x'yz+xy',F_2=xy'+x'z F1=xyz+xyz+xy,F2=xy+xz,而 F 1 = F 2 F_1=F_2 F1=F2

Gate Implementation

在这里插入图片描述

Algebraic Simplification

一些有用的可以帮助化简的规则

  1. Distributivity: A ′ B C + A ′ = A ′ ( B C + 1 ) A'BC+A'=A'(BC+1) ABC+A=A(BC+1)
  2. Idempotency: X Y Z + X Y ′ Z + X Y Z ′ = X Y Z + Z Y ′ Z + X Y Z + X Y Z ′ XYZ+XY'Z+XYZ'=XYZ+ZY'Z+XYZ+XYZ' XYZ+XYZ+XYZ=XYZ+ZYZ+XYZ+XYZ
  3. Complements: X + X ′ = 1 X+X'=1 X+X=1
  4. DeMorgan’s:第一步,将dot换成add,将0换成1;第二步,将每一个literal取补(取反)
    例: F = x ′ y ′ z + x ′ y z + x y ′ F = x'y'z+x'yz+xy' F=xyz+xyz+xy,则 F ′ = ( x + y + z ′ ) ( x + y ′ + z ′ ) ( x ′ + y ) F'=(x+y+z')(x+y'+z')(x'+y) F=(x+y+z)(x+y+z)(x+y)
    … …

Canonical and Standard form

Minterms and Maxterms

Minterms:AND terms
Maxterms:OR terms
Maxterms可以理解为minterm的DeMorgan的取反
在这里插入图片描述
这种规范的表示方法可以用于简化布尔函数,如
f 1 = x ′ y ′ z + x y ′ z ′ + x y z = m 1 + m 2 + m 3 = ∑ ( 1 , 4 , 7 ) f_1=x'y'z+xy'z'+xyz=m_1+m_2+m_3=\sum(1,4,7) f1=xyz+xyz+xyz=m1+m2+m3=(1,4,7)
f 2 = m 0 + m 2 + m 3 + m 5 + m 6 , f 2 ′ ′ = ( m 0 + m 2 + m 3 + m 5 + m 6 ) ′ = m 0 ′ ⋅ m 2 ′ ⋅ m 3 ′ ⋅ m 5 ′ ⋅ m 6 ′ = M 0 ⋅ M 2 ⋅ M 3 ⋅ M 5 ⋅ M 6 f_2=m_0+m_2+m_3+m_5+m_6,f_2''=(m_0+m_2+m_3+m_5+m_6)'=m_0'·m_2'·m_3'·m_5'·m_6'=M_0·M_2·M_3·M_5·M_6 f2=m0+m2+m3+m5+m6f2′′=(m0+m2+m3+m5+m6)=m0m2m3m5m6=M0M2M3M5M6
f 2 ′ = M 0 ⋅ M 2 ⋅ M 3 ⋅ M 5 ⋅ M 6 = ∏ ( 0 , 2 , 3 , 5 , 6 ) f_2'=M_0·M_2·M_3·M_5·M_6=\prod(0,2,3,5,6) f2=M0M2M3M5M6=(0,2,3,5,6)

Other Logic Operations

Lec3 Gate-Level Minimization

Map method Simplification (K-map)

k-map中的’1’是基于minterm,如 ∑ ( 0 , 1 , 4 , 5 ) \sum(0,1,4,5) (0,1,4,5)那么对应编号为0,1,4,5的格子标为1,并将这些格子连起来

Two-Variable Map在这里插入图片描述

例: m 1 + m 2 + m 3 = ? m_1+m_2+m_3 = ? m1+m2+m3=?
k-map如下
在这里插入图片描述
m 1 + m 2 + m 3 = A + B m_1+m_2+m_3 = A+B m1+m2+m3=A+B

Three-variable Map

在这里插入图片描述
例: F = A ′ B C + A ′ B C ′ + A B ′ C ′ + A B ′ C = m 3 + m 2 + m 4 + m 5 F = A'BC+A'BC'+AB'C'+AB'C=m_3+m_2+m_4+m_5 F=ABC+ABC+ABC+ABC=m3+m2+m4+m5
k-map如下
在这里插入图片描述
F = A B ′ + A ′ B F=AB'+A'B F=AB+AB

Four-Variable Map

在这里插入图片描述
例:
F = A B C D + A B ′ C ′ D ′ + A B ′ C + A B = m 8 + m 10 + m 10 + m 11 + m 12 + m 13 + m 14 + m 15 F= ABCD + AB'C'D' + AB'C + AB=m_8+m_{10}+m_{10}+m_{11}+m_{12}+m_{13}+m_{14}+m_{15} F=ABCD+ABCD+ABC+AB=m8+m10+m10+m11+m12+m13+m14+m15
k-map如下
在这里插入图片描述
F = A D ′ + A B + A C F=AD'+AB+AC F=AD+AB+AC

Product of sums simplification

思路是:把式子取反,用k-map解决问题
例:Simplify the Boolean funciton F ( A , B , C , D ) = ∑ ( 2 , 3 , 7 , 10 , 11 , 15 ) F(A,B,C,D)=\sum(2,3,7,10,11,15) F(A,B,C,D)=(2,3,7,10,11,15)
解:
第一步——Find F ′ F' F
F ′ = ∑ ( 0 , 1 , 4 , 5 , 6 , 8 , 9 , 12 , 13 , 14 ) = C ′ + B D ′ F' = \sum(0,1,4,5,6,8,9,12,13,14)=C'+BD' F=(0,1,4,5,6,8,9,12,13,14)=C+BD
在这里插入图片描述
第二步——取反
F = ( F ′ ) ′ = ( C ′ + B D ′ ) ′ = C ( B ′ + D ) F=(F')'=(C'+BD')'=C(B'+D) F=(F)=(C+BD)=C(B+D)

Don’t Care Conditions

d ( A , B , C , D ) = ∑ ( 0 , 2 , 5 ) d(A,B,C,D)=\sum(0,2,5) d(A,B,C,D)=(0,2,5) 表示这几个格子既可以取0,又可以取1

Lec4 Two Level Implementation

NAND Implementation

Universal Gates

NAND, NOR都是Universal Gates

NAND Circuits

在这里插入图片描述
用AND,OR和NOT表达NAND在这里插入图片描述

NAND实现布尔函数

  1. Simplify the function in the form of sum-ofproducts (AND-OR circuit)
  2. Transfer it to 2-level NAND-NAND expression——Bubble Pushing
  3. Draw the corresponding NAND gate implementation.
    F ( A , B , C , D ) = A B + C D F(A,B,C,D) = AB + CD F(A,B,C,D)=AB+CD
    在这里插入图片描述
    Bubble Pushing
    在这里插入图片描述

NOR Implementation

在这里插入图片描述
用ANDOR和NOT表达NOR
在这里插入图片描述

NOR实现布尔函数

  1. Simplify the function in the form of product-of-sum (OR-AND circuit)
  2. Transfer it to 2-level NOR-NOR expression
  3. Draw the corresponding NOR gate implementation
    F = ( A + B ) ( C + D ) E F = (A + B)(C + D)E F=(A+B)(C+D)E
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值