第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数字系统设计方法 15
1.3.1自上而下的设计方法 15
1.3.2自下而上的设计方法 16
1.3.3基于关键部件的设计方法 16
1.3.4信息流驱动的设计方法 17
1.4数字系统的描述方法之一——算法流程图 19
1.4.1算法流程图的符号与规则 19
1.4.2设计举例 21
习题1 24
第2章 数字系统的算法设计和硬件实现 29
2.1算法设计 29
2.1.1算法设计综述 29
2.1.2跟踪法 30
2.1.3归纳法 32
2.1.4划分法 35
2.1.5解析法 36
2.1.6综合法 38
2.2算法结构 42
2.2.1顺序算法结构 42
2.2.2并行算法结构 43
2.2.3流水线算法结构 45
2.3数据处理单元的设计 47
2.3.1系统硬件实现概述 47
2.3.2器件选择 47
2.3.3数据处理单元设计步骤 48
2.3.4数据处理单元设计实例 49
2.4控制单元的设计 53
2.4.1系统控制方式 53
2.4.2控制器的基本结构和系统同步 55
2.4.3算法状态机图(ASM图) 58
2.4.4控制器的硬件逻辑设计方法 60
习题2 75
第3章 硬件描述语言VHDL和VerilogHDL 81
3.1概述 81
3.2 VHDL及其应用 83
3.2.1 VHDL基本结构 83
3.2.2数据对象、类型及运算符 87
3.2.3顺序语句 91
3.2.4并行语句 94
3.2.5子程序 101
3.2.6程序包与设计库 104
3.2.7元件配置 106
3.2.8 VHDL描述实例 109
3.3 VerilogHDL及其应用 116
3.3.1 VerilogHDL基本结构 116
3.3.2数据类型、运算符与表达式 119
3.3.3行为描述语句 126
3.3.4并行语句 133
3.3.5结构描述语句 136
3.3.6任务与函数 142
3.3.7编译预处理 147
3.3.8 VerilogHDL描述实例 149
习题3 153
第4章 可编程逻辑器件PLD原理和应用 155
4.1 PLD概述 155
4.2简单PLD原理 157
4.2.1 PLD的基本组成 157
4.2.2 PLD的编程 157
4.2.3阵列结构 158
4.2.4 PLD中阵列的表示方法 159
4.3 SPLD组成和应用 161
4.3.1只读存储器ROM 161
4.3.2可编程逻辑阵列PLA 165
4.3.3可编程阵列逻辑PAL 167
4.3.4通用阵列逻辑GAL 171
4.3.5 GAL应用举例 174
4.4采用SPLD设计数字系统 181
4.4.1采用SPLD实现系统的步骤 181
4.4.2设计举例 181
4.4.3采用SPLD设计系统的讨论 184
习题4 185
第5章 高密度PLD及其应用 192
5.1 HDPLD分类 192
5.2 HDPLD组成 193
5.2.1阵列扩展型CPLD 193
5.2.2现场可编程门阵列(FPGA) 204
5.2.3延迟确定型FPGA 210
5.2.4多路开关型FPGA 216
5.3 HDPLD编程技术 220
5.3.1在系统可编程技术 220
5.3.2在电路配置(重构)技术 220
5.3.3反熔丝(Antifuse)编程技术 224
5.4 HDPLD开发平台 224
5.4.1 HDPLD开发系统的基本工作流程 226
5.4.2 HDPLD开发系统的库函数 228
5.5当前常用可编程逻辑器件及其开发工具 229
5.5.1 Lattice公司的CPLD/FPGA与开发软件 229
5.5.2 Altera公司的CPLD/FPGA及开发工具 230
5.5.3 Xilinx公司的CPLD/FPGA和开发平台 232
5.5.4用于CPLD/FPGA的IP核 233
习题5 233
第6章 采用HDPLD设计数字系统实例 237
6.1高速并行乘法器的设计 237
6.1.1算法设计和结构选择 237
6.1.2器件选择 237
6.1.3设计输入 237
6.1.4芯片引脚定义 239
6.1.5逻辑仿真 239
6.1.6目标文件产生和器件下载 240
6.2十字路口交通管理器的设计 240
6.2.1交通管理器的功能 240
6.2.2系统算法设计 241
6.2.3设计输入 242
6.3九九乘法表系统的设计 245
6.3.1系统功能和技术指标 245
6.3.2算法设计 246
6.3.3数据处理单元的实现 246
6.3.4设计输入 248
6.3.5系统的功能仿真 254
6.4 FIFO(先进先出堆栈)的设计 256
6.4.1 FIFO的功能 256
6.4.2算法设计和逻辑框图 256
6.4.3数据处理单元和控制器的设计 257
6.4.4设计输入 261
6.4.5用VerilogHDL进行设计 261
6.4.6仿真验证 262
6.5数据采集和反馈控制系统的设计 263
6.5.1系统设计要求 263
6.5.2设计输入 264
6.6 FIR有限冲激响应滤波器的设计 268
6.6.1 FIR结构简介 268
6.6.2设计方案和算法结构 269
6.6.3模块组成 270
6.6.4 FIR滤波器的扩展应用 274
6.6.5设计输入 275
6.6.6设计验证 278
6.7 UART接口设计 280
6.7.1 UART组成与帧格式 280
6.7.2顶层模块的描述 282
6.7.3发送模块设计 282
6.7.4接收模块设计 283
6.7.5仿真验证 284
6.8简单处理器的设计 285
6.8.1系统功能介绍 286
6.8.2处理器硬件系统 286
6.8.3处理器指令系统 288
6.8.4处理器硬件系统的设计和实施 291
6.8.5设计输入 298
6.8.6系统功能仿真 303
习题6 304
第7章 可编程片上系统(SOPC) 306
7.1概述 306
7.2基于MicroBlaze软核的嵌入式系统 306
7.2.1 Xilinx的SOPC技术 306
7.2.2 MicroBlaze处理器结构 307
7.2.3 MicroBlaze信号接口 314
7.2.4 MicroBlaze软硬件设计流程 318
7.3基于NiosⅡ软核的SOPC 321
7.3.1 Altera的SOPC技术 321
7.3.2 Nios Ⅱ处理器 321
7.3.3 Avalon总线架构 327
7.3.4 Nios Ⅱ软硬件开发流程 327
7.4设计实例 329
7.4.1设计要求 329
7.4.2运行Quartus Ⅱ并新建设计工程 330
7.4.3创建一个新的SOPCBuilder系统 330
7.4.4在SOPCBuilder中定义Nios Ⅱ系统 331
7.4.5在SOPCBiulder中生成Nios Ⅱ系统 336
7.4.6将Nios Ⅱ系统集成到Quartus Ⅱ工程中 337
7.4.7用Nios Ⅱ IDE开发软件 337
习题7 340
第8章 上机实验 342
实验1逻辑门实现组合电路 342
一、实验目的 342
二、实验内容 342
三、注意事项 343
实验2数据选择器或译码器实现组合电路 343
一、实验目的 343
二、实验原理 343
三、实验内容 344
四、注意事项 345
实验3码制变换器 345
一、实验目的 345
二、实验内容 345
三、注意事项 347
实验4序列发生器 347
一、实验目的 347
二、实验原理 347
三、实验内容 348
四、注意事项 349
实验5序列检测器 349
一、实验目的 349
二、实验原理 349
三、实验内容 349
实验6控制器的设计 350
一、实验目的 350
二、实验原理 350
三、实验内容 350
实验7脉冲分配器 350
一、实验目的 350
二、实验原理 351
三、实验内容 352
实验8十字路口交通管理器 352
一、实验目的 352
二、实验内容 353
三、实验要求 357
实验9 UART接口设计 357
一、实验目的 357
二、实验内容 357
实验10简单处理器VHDL设计的完成 363
一、实验目的 363
二、实验内容 363
三、实验要求 377
附录A HDPLD典型器件介绍 378
A.1器件封装形式说明 378
A.2 Altera公司典型器件 379
A.3 Xilinx公司典型器件 389
A.4 Lattice公司典型器件 397
A.5 Actel公司典型器件 400
附录B PLD开发软件QuartusⅡ8.0简介 404
B.1概述 404
B.2用Quartus Ⅱ进行设计的一般过程 404
B.3设计输入 405
B.4编译 410
B.5仿真验证 412
B.6时序分析 414
B.7底层图编辑 415
B.8下载 417
B.9 “Settings”对话框 417
B.10 Quartus Ⅱ中的库元件 418
参考文献 422