数字逻辑设计 Digital Logic Design 佟冬 tongdong@mprc.pku.edu.cn http://mprc.pku.edu.cn/courses/digital/2013spring
课程介绍 欢迎进入数字世界!
为什么学习逻辑设计? 显而易见的原因 本课程是计算机科学和计算机工程课程的一部分 是所有现代计算设备的实现基础 用小部件实现更大的系统 提供计算机如何工作的基础模型 更重要的原因 硬件内在的并行性让我们第一次涉及到并行计算 本课程提供了一个与软件设计相对应的的有趣知识, 有利于进一步大体上理解 计算 Computation 3 3
课程介绍 课程名称 : 数字逻辑设计 课程类型 : 本科生限选课 学生专业 : 计算机科学与技术 学时与学分 :54 学时,3 学分 主讲教师 : 佟冬 办公室地址 : 理科 1 号楼 1818 房间 电话 :62765828-802 预备知识 : 数学, 物理, 电路 4
上课方式 上课时间 周一 ( 单双周 ) 1-2 节 ( 二教 411) 周四 ( 双周 ) 5-6 节 ( 二教 411) 课程网址 学校教学网 http://mprc.pku.edu.cn/courses/digital/2013spring 答疑时间 学校教学网 Email 答疑 平时答疑 :email 联系时间 考试答疑 : 考试前一天 5
教材和参考书 教材 现代逻辑设计 Contemporary Logic Design, by R. H. Katz and G. Borriello, 罗嵘等译, 第二版, 电子工业出版社 ( 中文版 ) 主要参考书 Digital Design Principles and Practices, by J. F. Wakerly, 第三版, 高等教育出版社 ( 影印版 ) Digital Logic Circuit Analysis & Design, by N. P. Nelson, 清华大学出版社 ( 影印版 ) 6
课程考核 作业和课堂参与 (30%) 课程参与情况 5% 书面作业 +FPGA 电路设计 25% 期中考试 (20%) 期末考试 (50%) 相关实验课程 数字逻辑实验 7
课程助教 谢明利 xiemingli@mprc.pku.edu.cn 张帆 zhangfan@mprc.pku.edu.cn 张路 zhanglu@mprc.pku.edu.cn 8
课程结构 概述 基础理论知识 数字系统和编码 布尔代数基础 数字电路基础 数字电路分析与设计 组合电路分析与设计 同步时序电路分析与设计 可编程逻辑器件和设计软件实践 原理图 Verilog 设计 Xilinx BASYS2 开发板实践 9
10 Xilinx BASYS2 实验板
学习收获 掌握数字电路设计的基础理论 了解实现数字电路的工艺器件基本原理 掌握数字电路的分析方法 重点掌握数字电路设计方法和实现方法 培养对计算机硬件设计的兴趣 了解数字系统设计的现状 实践用可编程器件实现数字电路的方法 学习简单的并行的思维方式 11
人是如何计算的? 简单的模型? 感知 : 眼 耳等 判断 命令 : 行为 记忆 大脑 12
如何做出一个能计算的设备? 人的计算方法? 计算设备 13
计算的简史 ( 硬件部分 ) 从人脑到电脑
15 人是如何计算的? 计数 count 计算 calculate 通过数学过程来判定 to determine by mathematical processes 计算器 Calculator, 可以执行数学计算的电子设备 an electronic device for performing mathematical calculations 计算机 computer 计算的人 一种可以存储 查询和处理数据的可编程电子设备, a programmable usually electronic device that can store, retrieve, and process data
目前构造计算机的装置和材料 电子装置 集成电路芯片 处理器 存储器 固态硬盘 机械装置 磁盘中寻道读写头 键盘鼠标 光学装置 光纤 CDROM 16
计算的历史 计算机历史只有 60 多年? 不对! 数字电子计算机的历史只有 60 多年! 计算机革命发生在过去的 60 多年中而且还正在进行 计算和计算机的历史源远流长 把握历史 时间 地点 人物 重要事件 计算的历史伴随着计算机的发展和器件的发展 17
数字的出现 数字的出现 数字在各个古代文明中都独立的存在 数字都以十进制数为基础 阿拉伯数字 Digit 的解释 人的手指或脚趾 指宽 阿拉伯数字符号从 0 到 9 中的任意一个 用在计算系统中的符号 18
早期的计算工具 计算的出现 计算的需求 原始的计算方法 最早的 计算机 算盘 ( 按位记数法 ) 1612-1614 John Napier 发明对数 数字和带数字的木条进行计算 1633 Oughtred 发明计算尺 19
机械计算机 1642-1643 Blaise Pascal 加法器 1673 Leibniz 四则运算计算器 19 世纪 Charles Babbage 齿轮 差分机 (difference engine) 构思了一台由存储装置和算术装置组成的分析机 (Analytical engine) 由于工艺水平的限制当时没有能够实现 第一台计算机 20
21 最早的计算器公元前 80-60 年
穿孔卡片和程序 1804 Joseph Jacquard 穿孔卡片式织布机 1815-52 Ada Byron aka Lady Lovelace 概念性的程序 指令存储 实用穿孔卡片 打印的能力 Computer 词的出现 到 1940 前 Computer 指雇佣来负责计算数字的人 22
齿轮 + 穿孔卡片 机械计算器 1886 Burroughs 纪录式加法器 1889 Hollerith 穿孔卡片系统 1911, CTR 公司 1924, IBM 公司 23
数字计算机的数学基础 1850s, George Boole 将逻辑表述映射到符号 采用数学的方法处理逻辑推理 An investigation into the Laws of Thought 1938s, Claude Elwood Shannon 将布尔代数和硬件开关相联系 第一次提出 bit( 比特 ) 表示信息 A Symbolic Analysis of Relay and Switching Circuits(1938) Master thesis in MIT. 1941 香农加入 AT&T Bell 实验室 The mathematical theory of communication, 1948 24
如何做一个能计算的设备? 人的计算方法 布尔代数? 开关电路计算设备 25
布尔代数和开关电路 : 与非门 (NAND) 布尔代数 a b 0 0 1 1 0 1 0 1 f NAND (a, b) = ab (a) 1 1 1 0 A B L L H H L H L H (b) Y H H H L 逻辑门 A B Y A B Y A B & Y (c) 高 (d) A (e) B 高 开关电路 A Z A Z B B 26 低 低
编码 (Code) 二进制 1824, 路易 布莱尔 Louis Braille 盲文, 国际通称 布莱尔 (braille) 27
摩斯码 二进制 1844 Samuel Morse 电报 编码和解码 航海信号灯的开和关表示信息 28
继电器 1835 Joseph Henry 继电器 (relay) 1876 Alexander Bell 电话 AT&T 公司 电话开关网络 29
机电计算机 Konrad Zuse s Z-1 (1935) 1937,George Slibitz of Bell Laboratory Model-K 使用继电器设计自动计算器 1944, IBM/Harvard Mark-I 30
第一代实用的数字电子计算机 - 真空管 1904 John A Fleming diode vacuum tube 1906 Lee de Forest threeelectrode vacuum tube 1943 Colossus Mark I 1946 第一台完整的数字电子计算机 ENIAC 十进制 18000 个真空管 ( 电子管 ) Presper Eckert John Mauchly 31
ABC- 第一台数字电子计算机 1942 John Atanasoff Clifford Berry 爱荷华州立学院 (Iowa State College) ABC: Atanasoff-Berry Computer 二进制 280 真空管 315 公斤 32
第二代数字电子计算机 - 晶体管 1947.12.23 Bell Labs John Bardeen Walter Brattain William Shockley 发明晶体管 (Transistor) 1956 年诺贝尔物理学奖 1951 William Shockley invents the junction transistor( 结型晶体管 ). 1954 Texas Instruments silicon transistor 33
第三代数字电子计算机 - 集成电路 集成电路 (Integrated Circuit, IC) 1958, 德州仪器 (TI) Jack Kilby 用线连接 5 个元件 2000 年诺贝尔物理学奖 Robert Noyce, 仙童 (Fairchild) 1959, 德州仪器 (TI),Jack Kilby Flip-flop IC 双极型晶体管 (TTL, ECL) 34
第三代数字电子计算机 ( 续 ) 1961, 仙童 第一个单片平面集成电路,set/reset flip-flop 1962, 仙童 NPN 晶体管 1969, 仙童 MOS 管 双极性晶体管集成电路 (TTL, ECL) SSI(Small Scale IC) and MSI(Medium Scale IC) 1963 7-bit ASCII 35
第四代计算机 - 大规模集成电路 微处理器 集成电路工艺的发展 大规模集成电路 (Large Scale IC, LSI) 超大规模集成电路 (Very Large Scale IC, VLSI) 1971,Intel, 微处理器,4004 Ted Hoff 2300 晶体管, 3x4 mm 2 Intel 8008, 8080, Z-80, 68000 1979,Carver Mead and Lynn Conway An Introduction to VLSI systems 36
Moore 定律 Dr. Gordon E. Moore is Chairman Emeritus of Intel Corporation. He co-founded Intel in 1968, serving initially as Executive Vice President. He became President and Chief Executive Officer in 1975 and held that post until being elected Chairman and Chief Executive Officer in 1979. He remained CEO until 1987 and served as Chairman until being named Chairman Emeritus in 1997. The number of transistors per integrated circuit would double every 18 month. 这个论断是在第一块平面集成电路产生 4 年以后的 1965 年做出的 当时认为这个发展趋势将持续到 1975 年 事实上, 这个发展规律在目前仍是正确的 按目前发展趋势, 这个规律仍将有效至少 10 年 37
38
39
40
41 集成电路工艺发展 ( 来源 :IBM)
42 集成电路工艺发展 ( 来源 :IBM)
43 集成电路的发展
集成电路工艺最新进展 2010 年 2 月 自然纳米技术 44
集成电路工艺的新进展 Intel 3D tri-gate CMOS 45 3D-stack Chip
纳电子 Nanoelectronic( 第五代?) 碳纳米管 Carbon nanocube 碳纳米线 Carbon nanowire 46
石墨烯 Graphene 2010 年诺贝尔物理奖 A. K. Geim K. S. Novoselov Electric field effect in atomically thin carbon films, Science, Oct.22, 2004. 47
先进的数字设备 无处不在的计算 云计算 嵌入式系统 可穿戴计算机 48
设计方法和工具的发展 手工 物理层设计 CAD 门级和开关级 EDA 硬件描述语言 (Verilog and VHDL) 综合工具 验证工具 布局布线工具 ESL 高级描述语言 (SystemC, C++) 开创一个新的工业 49
50 集成电路设计和验证的问题
51 集成电路的功耗问题 (Power)
52 集成电路的功耗问题
绪论 佟冬 tongdong@mprc.pku.edu.cn http://mprc.pku.edu.cn/courses/digital/2013spring
一个简单的模型 模拟世界 A/D 数字世界 D/A 54
模拟和数字 (Analog vs. Digital) 模拟量 时间上和量上都是连续的 缺点 : 很难度量, 容易受噪声的干扰, 难以保存 优点 : 用精确的值表示事物 真实的世界是模拟的! 数字量 时间上和量上都是离散的 ( 非连续的 ) 优点 : 更多的灵活性, 更快, 更精确的计算 容易实现存储设备, 误差监测和修正, 容易最小化 二进制编码 55
数模转换 模拟 - 数字转换 (A/D) 采样 -> 量化 -> 编码 数字序列 数字 - 模拟转换 (D/A) 模拟低通滤波器 近似的模拟信号 失真 0000000000000000 0111111100000111 1000100011111000 1011011010001011 (a) 模拟形式 (b) 采样后的模拟形式 (c) 数字形式 56
数字系统设计 数字系统 对数字处理和存储的系统 什么是设计? 给定一个问题的表述, 从可用功能部件集合中从优选择, 得到一种解决问题的办法 分而治之的方法 工具 方法学 满足一定的约束 (Constraint) 性能, 价格, 质量, 美观等等 57
逻辑设计 (Logic Design) 决定数字逻辑元件的集合, 执行一个指定的控制过程 数据加工或者通信功能, 并决定逻辑元件间的互连 选择什么逻辑元件 实现技术 固定功能的芯片器件 可编程器件 FPGA 芯片内部的晶体管 设计需要优化或改造以满足设计约束 性能 面积 功耗 成本 58
现代逻辑设计 现代逻辑设计的特点 设计复杂 要求很短的开发时间 数字硬件成本很低, 性能却很高 现代逻辑设计的趋势 用软件工具自动生成数字电路 (EDA) 采用已经设计好的数字元件 (IP) 更加关注规格说明书的制作 (Specification) 硬件和软件协同设计 59
计算 : 抽象和实现 ( 零壹赋值与或非 ) 本课程是关于物理上如何实现计算, 采用物理器件并用电压来表示逻辑值 计算的基本单元 : 表示 : 连线上的 0 和 "1" 赋值 :x = y 数据操作 :x + y 5 控制 : 顺序结构 : 条件结构 : 循环结构 : A; B; C if x == 1 then y for ( i = 1 ; i == 10, i++) 过程结构 : A; proc(...); B; 本课程将学习这些如何用硬件实现并组成计算设备 60
数字设计的表示法 物理器件 Physical devices (transistors, relays) 开关 Switches 真值表 Truth tables 布尔代数 Boolean algebra 门 Gates 波形图 Waveform 有穷状态行为 Finite state behavior 寄存器传输行为 Register-transfer behavior 61
组合电路和时序电路 数字系统的简单模型是由输入和输出的部件 输入 系统 输出 62
组合电路和时序电路 组合电路 输出值是输入值的逻辑函数 输入值变化后一段时间后出现新的输出值 电路没有记忆功能 电路中没有循环反馈 (feedback loop) 和时钟 时序电路 输出值是输入值和电路状态的函数 输入变化后新的输出出现在下一个时钟事件或者其他事件发生 电路有循环反馈, 存在存储元件 63
组合电路举例 日历子系统, 计算每个月的天数 用来在显示器上显示 输入 : 月份 闰年标志 输出 : 天数 64
软件的实现 integer number_of_days ( month, leap_year_flag) { } switch (month) { } case 1: return (31); case 2: if (leap_year_flag == 1) then return (29) else return (28); case 3: return (31);... case 12: return (31); default: return (0); 65
组合数字系统硬件实现 问题 : 输入输出的数量? 月的二进制表示? 4 个输出线 电路行为 : 组合电路 真值表 month leap d28 d29 d30 d31 month leap d28 d29 d30 d31 0000 0001 0 0 0 1 0010 0 1 0 0 0 0010 1 0 1 0 0 0011 0 0 0 1 0100 0 0 1 0 0101 0 0 0 1 0110 0 0 1 0 0111 0 0 0 1 1000 0 0 0 1 1001 0 0 1 0 1010 0 0 0 1 1011 0 0 1 0 1100 0 0 0 1 1101 111 66
组合电路实现 本课程讲学习如何设计? 67
时序电路举例 组合门锁 : 连续输入 3 个正确的密码, 才能打开门 ; 只要有一个密码不对, 门锁将复位, 不接受任何密码 ; 知道特殊的复位操作才能打开门 输入 : 输入值序列, 复位信号 reset 输出 : 门开 / 关 存储 : 必须记住密码组合 68
软件实现 integer combination_lock ( ) { integer v1, v2, v3; integer error = 0; static integer c[3] = 3, 4, 2; while (!new_value( )); v1 = read_value( ); if (v1!= c[1]) then error = 1; while (!new_value( )); v2 = read_value( ); if (v2!= c[2]) then error = 1; while (!new_value( )); v3 = read_value( ); if (v2!= c[3]) then error = 1; } if (error == 1) then return(0); else return (1); 69
实现 : 时序电路实现 new value reset clock state open/closed
实现 : 时序电路实现 closed ERR reset closed S1 C1=value & new C1!=value & new closed S2 C2=value & new C2!=value & new S3 closed C3=value & new C3!=value & new open OPEN not new not new not new
实现 : 时序电路实现 数据通路 :Datapath 存储预设密码 比较器 控制器 :Controller 有穷状态机控制 ; 状态 控制数据通路 value comparator 数据通路 C1 C2 C3 multiplexer mux control new 控制器 equal controller reset clock equal open/closed
数字系统 数字系统 数据通路 控制器 代码寄存器 算逻部件 ALU 多选器 状态寄存器 译码器 寄存器 组合逻辑 开关网络 73
当前数字设计的趋势 越来越复杂的设计 性能越来越高 越来越短的推向市场时间 (Time to Market) 越来越低的价格 大量使用计算机辅助设计工具 多层次的设计描述 大量使用复用技术 IP(Intellectual Property) 验证技术成为关键 (60%-80% 的时间 ) 74
课程重点 在设计层次上以门级 (Gate Level) 为主 是一门关于逻辑门和连接线的艺术 A/D -> 数字处理和存储 -> D/A 数字处理 原理 方法 ( 分析 设计和优化 ) 实现 ( 器件 ) 掌握数字设计中的 最基础的知识 最基本的方法 75
课程小结 数字系统 对数字处理和存储的系统 模拟世界 模拟量 A/D 数字世界? D/A 76
如何做一个能计算的设备? 人的计算方法? 计算设备 77