第1章 可编程逻辑器件与EDA技术概述 1
1.1 EDA技术概述 1
1.1.1 EDA技术的起源及发展 1
1.1.2 EDA技术的主要内容 4
1.1.3 大规模可编程逻辑器件 4
1.1.4 硬件描述语言(HDL) 6
1.1.5 软件开发工具 6
1.1.6 实验开发系统 9
1.1.7 EDA技术的发展趋势 10
1.2 EDA设计流程 11
1.2.1 EDA设计过程 11
1.2.2 EDA设计具体实现方法 14
1.3 CPLD/FPGA基本原理 17
1.3.1 可编程逻辑器件的发展 17
1.3.2 可编程逻辑器件的分类 18
1.3.3 FPGA的基本结构 19
1.3.4 CPLD的基本结构 20
1.3.5 CPLD和FPGA的比较 20
1.3.6 CPLD基本原理 21
1.3.7 FPGA结构原理 23
1.4 CPLD/FPGA器件的应用选择 25
思考与练习 27
第2章 VHDL语言基础 28
2.1 VHDL语言简介 28
2.2 VHDL基本程序结构 29
2.2.1 实体(Entity) 30
2.2.2 结构体(Architecture) 30
2.2.3 库(Library)和程序包(Package) 30
2.2.4 配置(Configuration) 30
2.3 VHDL语言描述方式 31
2.3.1 行为(Behavior)描述方式 32
2.3.2 数据流(Dataflow)描述方式 33
2.3.3 结构(Stucture)描述方式 33
2.4 VHDL程序描述 33
2.4.1 实体声明(Entity Declaration) 34
2.4.2 结构体声明与描述(Architecture Declaration and Description) 35
2.4.3 程序包(Package) 36
2.4.4 配置(Configuration) 38
2.4.5 库(Library) 39
2.5 VHDL数据对象(Objects) 39
2.5.1 信号声明与使用(Signal) 40
2.5.2 常量声明与使用(Constants) 40
2.5.3 变量声明与使用(Variables) 41
2.5.4 数据对象的比较 42
思考与练习 43
第3章 VHDL语法要素 44
3.1 VHDL基本数据类型 44
3.1.1 标量数据类型 44
3.1.2 复合数据类型 47
3.1.3 数据类型转换 48
3.2 VHDL文字规则 51
3.2.1 数值表达 51
3.2.2 标识符 52
3.3 VHDL操作符 53
3.3.1 操作符的类型 53
3.3.2 操作符的优先级 54
思考与练习 55
第4章 VHDL语句 57
4.1 VHDL并行语句(Concurrent Statements) 57
4.1.1 并行信号赋值语句 57
4.1.2 进程语句 61
4.1.3 块语句(Block Statement) 63
4.1.4 元件例化语句(Component Instantiation) 66
4.1.5 过程调用语句(Procedure Call) 70
4.1.6 生成语句(Generate Statement) 72
4.2 VHDL顺序语句(Sequential Statements) 76
4.2.1 信号赋值和变量赋值语句(Signal and Variable Assignments) 76
4.2.2 IF语句(IF Statement) 77
4.2.3 CASE语句(CASE Statement) 79
4.2.4 NULL语句 80
4.2.5 LOOP语句 80
4.2.6 NEXT语句 83
4.2.7 EXIT语句 83
4.2.8 WAIT语句 84
4.2.9 RETURN语句 85
4.3 其他语句结构 86
4.3.1 子程序(Subprogram) 86
4.3.2 函数(Function) 86
4.3.3 过程(Procedure) 92
4.3.4 子程序重载(Subprogram Overload) 94
4.3.5 预定义属性(Predefined Attributes) 95
思考与练习 99
第5章 基本逻辑电路设计实例 103
5.1 多路选择器设计 103
5.1.1 4选1多路选择器 103
5.1.2 数据分配器 105
5.2 译码/编码器设计 106
5.2.1 3-8译码器 106
5.2.2 7段数码管译码器 108
5.2.3 优先编码器 109
5.2.4 二-十进制码制转换 110
5.3 计数器设计 112
5.3.1 基本计数器 112
5.3.2 可逆计数器 114
5.3.3 可预置计数器 115
5.4 微分电路设计 116
5.4.1 延迟电路 116
5.4.2 微分电路 117
5.4.3 同步计数器 119
5.5 分频电路设计 120
5.5.1 整数分频电路 120
5.5.2 2.5 分频电路 121
5.6 键盘去抖动电路设计 123
5.7 计数与显示电路设计 125
思考与练习 129
第6章 状态机设计 131
6.1 状态机的设计与实现 131
6.1.1 状态机的优点 131
6.1.2 VHDL语言中的状态机设计种类 131
6.1.3 状态机的结构 132
6.2 状态机设计举例 133
6.2.1 交通灯控制器的逻辑实现 133
6.2.2 单进程Moore状态机 135
6.2.3 Mealy型有限状态机 137
6.3 状态机综合设计实例 139
思考与练习 142
第7章 Quartus Ⅱ软件操作指南 143
7.1 Quartus Ⅱ 9.0简介 143
7.2 Quartus Ⅱ 设计流程 144
7.2.1 建立新工程 144
7.2.2 设计输入 148
7.2.3 分析与综合 151
7.2.4 适配(Fitter) 153
7.2.5 全程编译(Start Simulation) 153
7.2.6 时序仿真 153
7.2.7 电路观察器(RTL Viewer) 160
7.2.8 打开原有工程 160
7.3 引脚分配与下载 160
7.3.1 引脚分配 160
7.3.2 编程与配置 162
7.4 Project Navigator(工程导航)与工程管理 165
7.4.1 【 Hierarchy】标签页 166
7.4.2 【 Files】标签页 168
7.4.3 工程文件管理 169
思考与练习 172
第8章 Quartus Ⅱ应用技巧 173
8.1 文本编辑器 173
8.1.1 【 Files】菜单 173
8.1.2 文本编辑器编辑工具 174
8.2 原理图编辑器(Block Diagram/Schematic File) 178
8.2.1 原理图编辑工具栏 179
8.2.2 添加原理图符号 180
8.2.3 导线绘制与命名 182
8.2.4 视图切换 185
8.3 波形编辑器 187
8.3.1 波形编辑器界面 187
8.3.2 波形编辑工具栏 189
8.3.3 仿真设置 192
8.4 用原理图输入法进行设计 194
8.5 资源分配编辑器(Assignments Editor) 201
8.5.1 用户界面和主要功能 201
8.5.2 引脚规划器 203
8.6 工程设置 205
思考与练习 211
第9章 Quartus Ⅱ综合应用示例 212
9.1 LPM定制与应用 212
9.2 简易正弦信号发生器设计 216
9.2.1 正弦信号发生器的构成 217
9.2.2 定制波形信息初始化文件 217
9.2.3 定制LPM_ ROM 219
9.2.4 原理图方式设计顶层实体 224
9.2.5 用例化语句完成顶层实体设计 225
9.3 SignalTap Ⅱ嵌入式逻辑分析仪的应用 226
9.3.1 SignalTap Ⅱ文件的建立 226
9.3.2 逻辑分析仪的使用操作 228
思考与练习 233
第10章 综合设计项目 234
10.1 数字钟设计 234
10.1.1 计时模块 234
10.1.2 显示控制 237
10.2 密码锁设计 241
10.3 电子乐曲播放器设计 246
10.3.1 音阶分频系数 247
10.3.2 音阶频率的产生 248
10.3.3 音长与乐谱的确定 250
10.3.4 乐谱播放控制 253
10.3.5 顶层设计 253
10.3.6 实现乐曲演奏的另一种方法 255
10.4 简易电子琴设计 264
10.5 简易信号发生器 267
10.6 投球游戏设计 274
10 6.1 游戏设计实现 275
10.6.2 自定义程序包 275
10.6.3 游戏控制器设计 276
10.6.4 游戏顶层设计 280
10.7 DS18B20温度采集控制器 284
思考与练习 294
第11章 EDA/SOC实验系统使用说明 295
11.1 教学实验系统原理与使用介绍 295
11.1.1 B类插座实验模块可接插的10针双插座 296
11.1.2 主系统其他接口说明 297
11.2 主控板模块介绍 297
11.3 实验系统各模块简介 299
11.3.1 4x416键键盘 299
11.3.2 4x4+8个单脉冲综合键盘模块 300
11.3.3 1个7段数码显示模块和4个动态扫描显示模块 300
11.3.4 7位数码管串行静态显示模块 301
11.3.5 32位输出显示 HEX模块 302
11.3.6 32位输入显示HEX模块 303
11.3.7 24位综合键盘模块 303
11.3.8 交通灯显示模块 303
11.3.9 动态扫描数码显示模块 303
11.3.10 点阵式128 × 64液晶显示模块 304
11.3.11 字符式20 × 4液晶显示模块 304
11.3.12 800 × 480数字TFT彩屏液晶显示模块 304
11.3.13 双通道DAC和ADC标准模块 305
11.3.14 高速A/ D和双通道D/ A模块 306
11.3.15 高速12位SPI串行双ADC模块 307
11.3.16 8位+16位高分辨率ADC模块 308
11.3.17 SPI串行接口高速ADC + DAC模块 308
11.3.18 SD+PS2+RS232+VGA显示接口模块 308
11.3.19 电动机接口模块 309
11.3.20 语音+数码动态扫描模块 309
附录 310
附录A VHDL语句格式速查 310
附录B Verilog HDL语句格式速查 322
参考文献 329