第1章 Nexys2开发平台介绍 1
1.1 Spartan-3E芯片功能及特性 1
1.2 Nexys2开发平台原理及功能 2
第2章 组合逻辑电路设计 11
2.1 基本逻辑门设计 11
2.1.1 基本逻辑门设计原理 11
2.1.2 基本逻辑门的实现和验证 12
2.2 多路复用器设计 13
2.2.1 4-1多路复用器设计原理 13
2.2.2 4-1多路复用器的逻辑门实现和验证 14
2.2.3 4-1多路复用器的case实现和验证 15
2.3 七段数码管设计 17
2.3.1 七段数码管基本功能设计 17
2.3.2 采用按键复用七段数码管的实现和验证 22
2.3.3 采用时钟自动扫描复用七段数码管的实现和验证 25
2.4 比较器设计 28
2.4.1 4位比较器设计 28
2.4.2 8位比较器设计 31
2.5 编码器和解码器的设计 32
2.5.1 3-8译码器的逻辑门设计 33
2.5.2 3-8译码器的case语句设计 34
2.5.3 8-3编码器的逻辑门设计 36
2.5.4 8-3编码器的case语句设计 38
2.5.5 8-3优先级编码器的设计 39
2.6 二进制码转换设计 41
2.6.1 4位二进制码到BCD码变换设计 41
2.6.2 8位二进制码到BCD码变换设计 42
2.6.3 4位二进制码到Gray码的变换设计 46
2.6.4 4位Gray码到二进制码变换设计 47
2.7 习题 49
第3章 算术单元设计 50
3.1 加法器设计 50
3.1.1 4位加法器的设计 50
3.1.2 8位加法器的设计 55
3.2 减法器设计 56
3.2.1 4位减法器的设计 56
3.2.2 4位加法器/减法器的设计 58
3.3 移位寄存器的设计 60
3.3.1 设计原理 60
3.3.2 设计实现和验证 61
3.3.3 设计代码 61
3.4 乘法器设计 62
3.4.1 设计原理 62
3.4.2 设计实现和验证 63
3.4.3 设计代码 64
3.5 除法器设计 65
3.5.1 设计原理 66
3.5.2 设计实现和验证 66
3.5.3 设计代码 66
3.6 算术逻辑单元设计 68
3.6.1 设计原理 68
3.6.2 设计实现和验证 68
3.6.3 设计代码 69
3.7 习题 70
第4章 时序逻辑电路设计 72
4.1 D触发器的设计 72
4.1.1 1位D触发器的设计 72
4.1.2 4位D触发器的设计 75
4.2 寄存器设计 76
4.2.1 1位寄存器设计 76
4.2.2 4位寄存器设计 78
4.3 移位寄存器设计 79
4.3.1 简单移位寄存器的设计 79
4.3.2 环型移位寄存器的设计 81
4.3.3 消抖电路的设计 82
4.3.4 时钟脉冲电路的设计 84
4.4 计数器设计 85
4.4.1 3位计数器的设计 85
4.4.2 模5计数器的设计 88
4.4.3 时钟分频器的设计 90
4.4.4 任意波生成器的设计 96
4.5 加载开关量到寄存器的设计 97
4.5.1 设计原理 97
4.5.2 设计实现和验证 98
4.5.3 设计代码 98
4.6 移动数据到移位寄存器的设计 100
4.6.1 设计原理 100
4.6.2 设计实现和验证 100
4.6.3 设计代码 101
4.7 滚动七段数码显示设计 103
4.7.1 设计原理 103
4.7.2 设计实现和验证 104
4.7.3 设计代码 104
4.8 Fibonacci序列设计 109
4.8.1 设计原理 109
4.8.2 设计实现和验证 110
4.8.3 设计代码 110
4.9 PWM的设计 112
4.9.1 PWM控制直流电机设计 113
4.9.2 PWM控制伺服电机位置设计 116
4.10 习题 118
第5章 有限自动状态机设计 119
5.1 有限自动状态机原理 119
5.2 Moore状态机序列检测器设计 120
5.2.1 设计原理 120
5.2.2 设计实现和验证 120
5.2.3 设计代码 121
5.3 Mealy状态机序列检测器设计 124
5.3.1 设计原理 124
5.3.2 设计实现和验证 124
5.3.3 设计代码 125
5.4 门锁码设计 128
5.4.1 门锁码设计原理 128
5.4.2 设计实现和验证 128
5.4.3 设计代码 130
5.5 交通灯设计 133
5.5.1 交通灯设计原理 133
5.5.2 交通灯实现和验证 134
5.5.3 设计代码 135
5.6 习题 139
第6章 计算机接口设计 140
6.1 VGA接口设计 140
6.1.1 设计原理 140
6.1.2 设计实现和验证 143
6.1.3 设计代码 144
6.2 PS/2键盘接口设计 147
6.2.1 设计原理 147
6.2.2 设计实现和验证 150
6.2.3 设计代码 150
6.3 PS/2鼠标接口设计 153
6.3.1 设计原理 153
6.3.2 设计实现和验证 155
6.3.3 设计代码 156
6.4 RS-232接口设计 157
6.4.1 设计原理 157
6.4.2 设计实现和验证 162
6.4.3 设计代码 162
6.5 习题 164
第7章 FC16 CPU的设计 165
7.1 设计背景 165
7.2 设计原理 166
7.2.1 FC16整体结构 166
7.2.2 数据栈设计 166
7.2.3 功能单元设计 170
7.2.4 返回栈设计 172
7.2.5 控制器设计 173
7.3 设计实现和验证 174
7.4 设计代码 175
7.5 习题 176
第8章 俄罗斯方块游戏设计 177
8.1 系统结构原理 177
8.1.1 系统端口 177
8.1.2 系统模块组成 178
8.2 系统各模块设计 180
8.2.1 键盘接口模块设计 180
8.2.2 键盘识别模块设计 180
8.2.3 VGA接口模块设计 181
8.2.4 图像显示模块设计 182
8.2.5 文本显示模块设计 183
8.2.6 得分统计模块设计 186
8.2.7 游戏控制模块设计 186
8.3 设计实现和验证 188
8.4 设计代码 189
8.5 习题 194
第9章 ChipScope软件调试数字系统设计 195
9.1 设计原理 195
9.1.1 FIFO原理 195
9.1.2 ChipScope在线逻辑分析仪软件工具原理 196
9.1.3 软件和硬件协同设计和调试原理 197
9.2 设计实现和验证 197
9.3 设计代码 204
9.4 习题 206
第10章 片上可编程系统设计流程 207
10.1 工程的建立 207
10.1.1 使用BSP向导 207
10.1.2 新建工程的结构分析 210
10.1.3 工程的下载 213
10.2 添加IP到硬件设计 213
10.2.1 打开工程 213
10.2.2 添加和配置GPIO外设 214
10.2.3 产生外部GPIO连接 216
10.2.4 添加软件程序并编译 217
10.2.5 设计验证 218
10.3 添加定制的IP到系统 218
10.3.1 打开工程 219
10.3.2 产生外设模板 219
10.3.3 创建外设 223
10.3.4 添加和连接外设 225
10.3.5 设计验证 226
10.4 编写应用程序 227
10.4.1 添加BRAM控制器和BRAM 227
10.4.2 更新软件应用程序 228
10.4.3 分析目标文件 228
10.4.4 设计验证 231
10.5 使用SDK工具 232
10.5.1 添加定时器和中断控制器 232
10.5.2 创建SDK软件工程 234
10.5.3 编写中断句柄 236
10.5.4 添加连接脚本 237
10.5.5 验证操作 237
10.6 设计的软件和硬件调试 240
10.6.1 打开工程 240
10.6.2 例化ChipScope核 241
10.6.3 启动软件调试器 243
10.6.4 启动ChipScope Pro硬件调试器 244
10.6.5 执行H/S验证 245
10.7 习题 246
第11章 Web服务器的设计 247
11.1 系统结构及配置 247
11.1.1 系统结构 247
11.1.2 系统配置 248
11.2 系统设计 248
11.2.1 构建Web服务器硬件平台环境 248
11.2.2 构建Web服务器软件系统 248
11.2.3 生成二进制文件 251
11.2.4 生成MFS映像 251
11.3 系统调试 252
11.4 习题 253
附录A Nexys2板的ISE教程 254
附录B Nexys2开发板电路图 264
参考文献 276