第1章 概述 1
1.1 EDA技术的发展 1
1.2 硬件描述语言 2
1.2.1 HDL的发展 2
1.2.2 HDL的内容与特点 3
1.3 可编程逻辑器件与专用集成电路 4
1.3.1 可编程逻辑器件 4
1.3.2 专用集成电路 5
1.3.3 基于IP核复用技术的SOC芯片 6
1.3.4 FPGA/CPLD与ASIC设计流程 7
1.4 数字系统设计方法 9
1.4.1 数字系统的组成 9
1.4.2 自下而上的设计方法 10
1.4.3 自上而下的设计方法 11
1.5 EDA设计工具的选择 12
思考题和习题一 13
第2章 Verilog HDL基础 14
2.1 Verilog HDL的基本语法规则 14
2.1.1 词法规定 14
2.1.2 逻辑值集合 15
2.1.3 常量及其表示 15
2.1.4 变量的数据类型 17
2.2 Verilog HDL运算符 21
2.2.1 算术运算符 22
2.2.2 相等与全等运算符 22
2.2.3 逻辑运算符 23
2.2.4 位运算符 23
2.2.5 缩位运算符 24
2.2.6 位拼接运算符 24
2.2.7 运算符的优先级别 24
2.3 Verilog HDL程序的基本结构 25
2.3.1 Verilog HDL程序的基本结构 25
2.3.2 简单Verilog HDL程序实例 26
2.4 逻辑功能的仿真与测试 28
2.4.1 使用QuartusⅡ软件进行仿真 28
2.4.2 使用ModelSim软件进行仿真 29
思考题和习题二 30
第3章 Verilog HDL常用建模方式 31
3.1 Verilog HDL结构级建模 31
3.1.1 多输入门 31
3.1.2 多输出门 32
3.1.3 三态门 33
3.1.4 门级建模设计举例 34
3.1.5 分层次的电路设计方法简介 35
3.2 Verilog HDL数据流建模 36
3.2.1 数据流建模的基本语句 37
3.2.2 数据流建模举例 37
3.3 Verilog HDL行为级建模 38
3.3.1 行为级建模的基本语句 38
3.3.2 触发器和移位寄存器的建模 45
3.3.3 计数器的建模 48
3.3.4 FIF()的建模 52
3.4 Verilog HDL函数与任务的使用 54
3.4.1 函数(function)说明语句 54
3.4.2 任务(task)说明语句 56
思考题和习题三 58
第4章 有限状态机设计 61
4.1 状态机的基本概念 61
4.1.1 状态机的基本结构及类型 61
4.1.2 状态机的状态图表示法 62
4.1.3 状态机的设计步骤 63
4.2 基于Verilog HDL的状态机描述方法 63
4.2.1 状态图的建立过程 63
4.2.2 推荐的状态图描述方法 64
4.3 状态机设计中的关键技术 68
4.3.1 状态编码 68
4.3.2 消除输出端产生的毛刺 69
4.3.3 使用One-hot编码方案设计状态机 71
4.4 状态机设计举例 73
4.4.1 汽车尾灯控制电路设计 73
4.4.2 十字路口交通灯控制电路设计 76
4.4.3 串行D/A转换器逻辑控制电路设计 82
思考题和习题四 93
第5章 Altera公司的CpLD/FPGA 96
5.1 可编程逻辑器件综述 96
5.1.1 PLD发展简史 96
5.1.2 PLD的表示方法 98
5.1.3 PLD的与-或阵列结构 99
5.1.4 与-或阵列实现组合逻辑函数的原理 100
5.1.5 PLD器件实现时序逻辑电路的基本原理 101
5.1.6 通用型GAL器件的基本结构 101
5.2 MAX7000S系列器件结构 103
5.2.1 Altera公司的产品简介 103
5.2.2 MAX7000S系列器件结构 106
5.3 MAX3000A系列器件结构 110
5.3.1 器件概述 110
5.3.2 MAX3000A系列器件的结构特点 111
5.4 FLEX10K系列器件结构 112
5.4.1 FPGA实现逻辑函数的基本原理 112
5.4.2 FLEX10K系列器件结构 114
5.5 Cyclone系列器件结构 119
5.5.1 功能描述 119
5.5.2 Cyclone系列器件结构 120
5.6 MAXⅡ系列器件 122
5.6.1 功能描述 122
5.6.2 MAXⅡ系列器件结构 124
5.7 FPGA最小系统电路设计 127
5.7.1 电源电路和LED指示灯电路 127
5.7.2 复位电路 128
5.7.3 外部时钟振荡电路 128
5.7.4 FPGA的下载配置电路 128
5.7.5 用户扩展接口 129
5.7.6 FPGA芯片与各模块的接口电路 131
思考题和习题五 133
第6章 Altera FPGA器件的配置 134
6.1 配置方式与配置过程 134
6.1.1 配置方式 134
6.1.2 配置过程 135
6.2 配置接口电路 136
6.2.1 主动串行(AS)配置 137
6.2.2 被动串行(PS)配置 139
6.2.3 快速被动并行(FPP)配置 141
6.2.4 被动并行异步(PPA)配置 142
6.2.5 JTAG配置 142
6.2.6 配置电路设计注意事项 144
6.3 FPGA的配置存储器与ByteBlasterⅡ下载电缆 144
6.3.1 FPGA的配置存储器 144
6.3.2 ByteBlasterⅡ下载电缆的使用 145
6.3.3 ByteBlasterⅡ下载电缆的电路原理图 147
6.4 配置软件的设置与配置文件 149
6.4.1 配置模式与配置存储器的选择 149
6.4.2 复用配置引脚的处理 150
6.4.3 通用配置选项 150
6.4.4 配置文件 151
思考题和习题六 154
第7章 QuartusⅡ 6.0软件的使用 155
7.1 设计流程概述 155
7.2 设计与仿真的过程 156
7.2.1 使用向导建立新工程 156
7.2.2 输入设计文件 157
7.2.3 编译前的设置 158
7.2.4 编译设计文件 160
7.2.5 设计项目的仿真验证 161
7.2.6 应用RTL观察器查看电路图 164
7.3 引脚分配与器件编程 165
7.3.1 引脚分配 165
7.3.2 器件编程 166
7.4 Altera宏功能模块的使用 168
7.4.1 嵌入式锁相环ALTPLL宏功能模块的调用 168
7.4.2 嵌入式LPM_FIF()宏功能模块的调用 173
思考题和习题七 177
第8章 数字电路与系统的设计实例 178
8.1 篮球竞赛30秒定时器设计与实现 178
8.1.1 定时器的功能要求 178
8.1.2 设计分析 178
8.1.3 逻辑设计 179
8.1.4 设计实现 179
8.2 多位LED显示器的动态扫描译码电路设计 180
8.2.1 功能要求 180
8.2.2 设计分析 181
8.2.3 逻辑设计 181
8.2.4 设计实现 182
8.3 CPLD与矩阵式键盘接口电路的设计 183
8.3.1 接口电路的功能要求 183
8.3.2 接口电路的分析 183
8.3.3 接口电路的逻辑设计 184
8.4 多功能数字钟电路的分层次设计 188
8.4.1 数字钟的功能要求 188
8.4.2 设计分析 188
8.4.3 数字钟主体电路逻辑设计 189
8.4.4 功能扩展电路逻辑设计 193
8.4.5 多功能数字钟顶层电路设计 195
8.5 频率计的设计 196
8.5.1 频率计的功能要求 196
8.5.2 设计分析 196
8.5.3 频率计主体电路逻辑设计 198
8.5.4 频率计顶层电路设计 203
8.6 DDS函数信号发生器的设计 204
8.6.1 DDS的功能要求 204
8.6.2 设计分析 204
8.6.3 各主要模块的逻辑设计 208
8.6.4 DDS函数信号发生器顶层设计 213
第9章 异步串口通信及UART实现 215
9.1 UART接口实现原理 215
9.1.1 串行通信的概念 215
9.1.2 基本的UART通信协议 216
9.2 UART接口模块的层次化设计 217
9.2.1 UART接口的功能模块划分 217
9.2.2 配置文件UART_INC.H 218
9.2.3 顶层模块的功能描述UART.V 219
9.2.4 接收模块的功能描述U_REC.V 222
9.2.5 发送模块的功能描述U_XMIT.V 226
9.2.6 波特率变换模块的功能描述BAUD.V 230
9.2.7 微处理器接口模块的功能描述 231
9.3 对UART接口模块的功能仿真 239
9.3.1 对接收模块的功能仿真 239
9.3.2 对发送模块的功能仿真 241
9.3.3 对波特率变换模块的功能仿真 243
9.3.4 对微处理器接口模块的功能仿真 244
9.3.5 对UART接口模块的功能仿真 247
9.4 逻辑综合与时序仿真 251
9.5 下载与验证测试 251
9.5.1 验证系统概述 251
9.5.2 验证结果 252
第10章 数字电路与数字系统实验 253
实验一 基本数字电路设计 253
实验二 跑马灯电路设计 254
实验三 有限状态机设计 255
实验四 多功能数字钟设计 257
实验五 FPGA与PC串口通信实验 258
实验六 基于FPGA的DDS信号源设计 259
实验七 数字频率相位测量仪的设计 260
附录A Verilog HDL关键字 262
附录B 常用EDA软件使用指南 263
B.1 仿真软件ModelSim 6.0的使用 263
B.1.1 设计与仿真流程 263
B.1.2 对层次化设计的仿真 268
B.1.3 布线后的时序仿真 272
B.2 逻辑综合软件LeonardoSpectrum的使用 274
附录C Altera DE2开发板的使用说明 279
C.1 Altera DE2开发板的结构与测试 279
C.1.1 DE2开发板的结构 279
C.1.2 DE2开发板的测试 280
C.2 DE2开发板上FPGA的引脚与其他资源的连接 281
C.3 FPGA芯片EP2C35的配置方法 284
参考文献 286