目录 1
第1章 数字系统设计方法 1
1.1 绪言 1
1.1.1 数字系统的基本概念 1
1.1.2 数字系统的基本模型 3
1.1.3 数字系统的基本结构 7
1.2 数字系统设计的一般步骤 8
1.2.1 引例 8
1.2.2 数字系统设计的基本步骤 10
1.2.3 多级系统及其结构 13
1.3.1 自上而下的设计方法 15
1.3 数字系统设计方法 15
1.3.2 自下而上的设计方法 16
1.3.3 自关键部件开始设计 17
1.3.4 系统信息流驱动设计 18
1.4 数字系统的描述方法之一——算法流程图 19
1.4.1 算法流程图的符号与规则 20
1.4.2 设计举例 22
习题1 25
第2章 数字系统的算法设计和硬件实现 30
2.1 算法设计 30
2.1.1 算法设计综述 30
2.1.2 跟踪法 31
2.1.3 归纳法 33
2.1.4 划分法 36
2.1.5 解析法 38
2.1.6 综合法 39
2.2 算法结构 42
2.2.1 顺序算法结构 42
2.2.2 并行算法结构 44
2.2.3 流水线操作算法结构 47
2.3 系统硬件实现概述 48
2.4 数据处理单元的设计 49
2.4.1 器件选择 49
2.4.2 数据处理单元设计的基本步骤 50
2.4.3 数据处理单元设计实例 50
2.5.1 系统控制方式 55
2.5 控制单元的设计 55
2.5.2 控制器的基本结构和系统同步 56
2.5.3 算法状态机图(ASM图) 59
2.5.4 控制器的硬件逻辑设计方法 62
习题2 82
第3章 硬件描述语言VHDL 88
3.1 概述 88
3.2 VHDL基本结构 90
3.2.1 实体说明 90
3.2.2 结构体 91
3.3 数据对象、类型及运算符 94
3.3.1 对象类别与定义 94
3.3.2 数据类型 94
3.3.3 常数的表示 96
3.3.4 运算符 97
3.4 顺序语句 97
3.4.1 变量与信号赋值语句 98
3.4.2 IF语句 98
3.4.3 CASE语句 98
3.4.4 LOOP语句 99
3.5 并行语句 100
3.5.1 并行信号赋值语句 100
3.5.2 进程语句 102
3.5.3 断言语句 103
3.5.5 生成语句 105
3.5.4 元件例化语句 105
3.5.6 块语句 106
3.6 子程序 107
3.6.1 函数定义与引用 107
3.6.2 过程定义与引用 108
3.6.3 子程序重载 110
3.7 程序包与设计库 111
3.7.1 程序包 111
3.7.2 设计库 112
3.8 元件配置 112
3.8.1 体内配置指定 113
3.8.2 体外配置说明 114
3.9.1 组合逻辑电路描述 115
3.9 VHDL描述实例 115
3.8.3 直接例化 115
3.8.4 顶层元件配置 115
3.9.2 时序逻辑电路描述 117
3.9.3 状态机的描述 121
习题3 123
第4章 可编程逻辑器件PLD原理和应用 124
4.1 PLD概述 124
4.2 简单PLD原理 126
4.2.1 PLD的基本组成 126
4.2.2 PLD的编程 126
4.2.3 阵列结构 127
4.2.4 PLD中阵列的表示方法 128
4.3.1 只读存储器ROM 130
4.3 SPLD组成和应用 130
4.3.2 可编程逻辑阵列PLA 134
4.3.3 可编程阵列逻辑PAL 136
4.3.4 通用阵列逻辑GAL 140
4.3.5 输出逻辑宏单元OLMC 141
4.3.6 OLMC的输出结构 143
4.3.7 GAL应用举例 145
4.4 采用SPLD设计数字系统 151
4.4.1 采用SPLD实现系统的步骤 151
4.4.2 设计举例 151
4.4.3 采用SPLD设计系统的讨论 154
习题4 155
5.1 HDPLD概述 162
5.1.1 HDPLD的分类 162
第5章 高密度PLD及其应用 162
5.1.2 典型HDPLD器件系列 163
5.2 HDPLD组成 163
5.2.1 阵列扩展型HDPLD 163
5.2.2 单元型CPLD 174
5.2.3 现场可编程门阵列FPGA 181
5.2.4 多路开关型FPGA 186
5.3 HDPLD编程技术 190
5.3.1 在系统可编程技术 190
5.3.2 在电路配置(重构)编程技术 190
5.3.3 反熔丝(Antifuse)编程技术 194
5.4 HDPLD软件开发系统综述 194
5.4.1 软件开发系统的基本工作流程 195
5.4.2 软件开发系统的库函数 197
5.5 当前常用可编程逻辑器件及其开发工具 198
5.5.1 Lattice公司的CPLD/FPGA与开发软件 198
5.5.2 ALTERA公司的CPLD/FPGA及开发工具 199
5.5.3 Xilinx公司的CPLD/FPGA和开发平台 201
5.5.4 用于CPLD/FPGA的IP核 202
习题5 202
第6章 采用HDPLD设计数字系统实例 206
6.1 高速并行乘法器的设计 206
6.1.1 算法设计和结构选择 206
6.1.2 器件选择 206
6.1.3 设计输入 206
6.1.4 芯片引脚定义 207
6.1.5 逻辑仿真 208
6.1.6 目标文件产生和器件下载 209
6.2 十字路口交通管理器的设计 209
6.2.1 交通管理器的功能 209
6.2.2 系统算法设计 210
6.2.3 设计输入 211
6.3 FIFO(先进先出堆栈)的设计 214
6.3.1 FIFO的功能 214
6.3.2 算法设计和逻辑框图 215
6.3.3 数据处理单元和控制器的设计 217
6.3.4 设计输入 219
6.4.1 系统功能和技术指标 220
6.4 九九乘法表系统的设计 220
6.4.2 算法设计 221
6.4.3 数据处理单元的实现 221
6.4.4 设计输入 222
6.4.5 系统的功能仿真 227
6.5 数据采集和反馈控制系统的设计 229
6.5.1 系统设计要求 229
6.5.2 设计输入 231
6.6 FIR有限冲激响应滤波器的设计 235
6.6.1 FIR结构简介 236
6.6.2 设计方案和算法结构 237
6.6.3 模块组成 238
6.6.4 FIR滤波器的扩展应用 240
6.6.5 设计输入 242
6.6.6 设计验证 245
6.7 可编程脉冲延时系统的设计 247
6.7.1 系统功能和技术指标 248
6.7.2 系统设计计算 250
6.7.3 设计输入和实现 251
6.8 简单处理器的设计 259
6.8.1 系统功能介绍 259
6.8.2 处理器硬件系统 260
6.8.3 处理器指令系统 261
6.8.4 处理器硬件系统的设计和实施 264
6.8.5 设计输入 271
6.8.6 系统功能仿真 276
习题6 278
第7章 全定制集成电路设计技术简介 280
7.1 集成电路制造工艺与全定制电路设计 280
7.1.1 集成电路制造工艺简介 280
7.1.2 全定制电路设计过程 286
7.1.3 深亚微米电路设计 286
7.2 全定制集成电路设计的EDA技术 287
7.2.1 设计输入 288
7.2.2 设计综合 288
7.2.3 设计验证 290
7.2.4 版图编辑 292
7.2.5 版图验证 292
实验1 逻辑门实现组合电路 294
第8章 上机实验题 294
实验2 数据选择器或译码器实现组合电路 295
实验3 码制变换器 297
实验4 异步计数器和同步计数器 299
实验5 采用D-FF和MUX实现74LS194功能电路 301
实验6 序列发生器 302
实验7 序列检测器 304
实验8 触发器的级联 305
实验9 控制器的设计 307
实验10 脉冲分配器 308
实验11 十字路口交通管理器 310
实验12 简单处理器VHDL设计的完成 315
A.1 器件封装型式说明 331
附录A HDPLD典型器件介绍 331
A.2 LATTICE公司典型器件(阵列扩展型CPLD,isp编程技术) 332
A.3 ALTERA公司典型器件(单元型CPLD、FPGA,icr编程技术) 335
A.4 XILINX公司典型产品(单元型FPGA、CPLD,icr编程技术或isp编程技术) 340
A.5 Actel公司典型器件(多路开关型FPGA、反熔丝编程技术) 344
附录B 典型软件开发系统MAX+PLUSⅡ简介 347
B.1 概述 347
B.2 MAX+PLUSⅡ的设计过程 348
B.3 逻辑设计的输入方式 353
B.4 设计项目的编译 362
B.5 设计项目的模拟仿真 369
B.6 定时分析 372
B.7 器件编程 374
参考文献 377