第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控制器和BRAM227
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
2.6.2 并行I/O端口的读-修改-回写操作32
2.7 单片机外部总线扩展33
2.7.1 单片机外部总线扩展的结构33
2.7.2 地址空间的分配及译码34
2.7.3 扩展外部程序存储器的电路设计37
2.7.4 扩展外部数据存储器的电路设计38
2.8 单片机定时器/计数器的结构及功能41
2.8.1 定时器/计数器的结构及工作原理41
2.8.2 定时器/计数器的控制与状态寄存器42
2.8.3 MCS-51定时器/计数器0和1的工作方式44
2.8.4 MCS-51定时器/计数器2的工作方式47
2.9 串行通信51
2.9.1 串行通信概论51
2.9.2 串行通信总线标准及接口54
2.9.3 MCS-51串行接口的组成59
2.9.4 MCS-51串行接口的工作方式61
2.9.5 MCS-51串行接口波特率的设置64
2.10 中断系统67
2.10.1 中断系统的结构67
2.10.2 中断响应72
2.10.3 中断请求的撤销74
习题与思考75
第3章 MCS-51单片机的指令系统78
3.1 指令系统概述78
3.1.1 指令的概念78
3.1.2 指令系统符号标识的说明80
3.2 寻址方式81
3.2.1 立即寻址82
3.2.2 寄存器寻址83
3.2.3 间接寻址83
3.2.4 直接寻址84
3.2.5 变址寻址85
3.2.6 相对寻址85
3.2.7 位寻址86
3.3 指令分类介绍87
3.3.1 数据传送类指令87
3.3.2 算术运算类指令91
3.3.3 逻辑运算类指令95
3.3.4 控制转移类指令97
3.3.5 布尔(位)处理类指令101
习题与思考104
第4章 MCS-51汇编语言程序设计106
4.1 汇编语言程序设计概述106
4.1.1 汇编语言程序设计的基本步骤与方法107
4.1.2 汇编语言设计常用伪指令简介111
4.2 单片机汇编语言基础程序设计举例114
4.2.1 顺序结构程序设计114
4.2.2 分支结构程序设计115
4.2.3 循环结构程序设计117
4.2.4 子程序设计120
4.3 汇编语言程序设计实例124
4.3.1 通过I/O端口驱动LED124
4.3.2 查询方式的定时器应用125
4.3.3 中断方式的定时器应用126
习题与思考127
第5章 单片机C语言程序设计129
5.1 C51的数据类型与基本运算130
5.1.1 C51的数据类型、变量及存储模式130
5.1.2 运算符与表达式133
5.1.3 基本语句139
5.2 函数143
5.2.1 函数的定义143
5.2.2 函数的调用145
5.2.3 中断服务函数与寄存器组选择148
5.2.4 函数中变量的存储方式149
5.3 数组与指针151
5.3.1 数组的定义和引用151
5.3.2 字符数组152
5.3.3 指针的概念152
5.3.4 数组的指针154
5.3.5 指针的地址计算155
5.4 结构与联合156
5.4.1 结构变量的定义与引用156
5.4.2 结构变量的初值159
5.4.3 结构数组159
5.4.4 结构指针160
5.4.5 联合变量的定义与引用160
5.5 预处理器162
5.5.1 宏定义163
5.5.2 文件包含164
5.5.3 条件编译165
5.6 C51程序实例166
5.6.1 数据的分析和处理166
5.6.2 串行口数据收发167
5.6.3 查询方式的定时器应用168
5.6.4 中断方式的定时器应用169
习题与思考170
第6章 输入输出接口及系统扩展设计172
6.1 键盘及其接口设计172
6.1.1 键盘的基本工作原理172
6.1.2 独立式键盘接口设计173
6.1.3 行列式键盘接口设计177
6.2 LED显示器及其接口设计180
6.2.1 数码管显示器的结构与工作原理181
6.2.2 数码管的静态显示与动态显示183
6.3 字符点阵LCD显示模块的控制--模拟总线时序驱动187
6.3.1 1602字符点阵式LCM简介188
6.3.2 1602 字符点阵式LCM与单片机的接口192
6.4 图形点阵LCD显示模块的控制--扩展总线驱动194
6.4.1 128×64图形点阵液晶显示模块简介195
6.4.2 128×64图形点阵式LCM和单片机的接口197
6.5 并行输入输出接口的扩展205
6.5.1 通过串行口扩展并行输入输出接口205
6.5.2 通过系统总线扩展并行I/O端口208
6.6 单片机I/O端口模拟时序操作扩展设备209
6.6.1 I2C串行总线的基本特点209
6.6.2 I2C串行总线通信协议210
6.6.3 单片机系统I2C串行总线应用实例212
习题与思考217
第7章 单片机串行通信接口219
7.1 Hello,World!219
7.2 单片机串行口查询方式通信221
7.2.1 设计思路分析221
7.2.2 串行口查询方式通信程序实例222
7.3 单片机串行口中断方式通信223
7.3.1 设计思路分析223
7.3.2 串行口中断方式通信程序实例227
7.4 通过16C550扩展串行通信接口230
7.4.1 16C550简介230
7.4.2 单片机控制16C550实现扩展串行口240
7.5 扩展串行口在GSM无线通信网络中的应用248
7.5.1 GSM网络概述248
7.5.2 GSM Modem模块简介248
7.5.3 通过GSM Modem收发短消息252
7.5.4 GSM Modem模块与单片机的接口及应用257
7.6 通过RS-485总线实现单片机的多机通信264
7.6.1 单片机和RS-485总线收发器的接口电路设计264
7.6.2 单片机主从式多机通信的原理266
7.6.3 单片机主从式多机通信实例267
习题与思考273
第8章 电话通信接口275
8.1 电话用户线接口简介275
8.1.1 用户线接口的功能275
8.1.2 用户线接口信号分析276
8.2 用户线信号检测及控制电路的设计276
8.2.1 振铃信号检测电路276
8.2.2 双音多频信号译码电路278
8.2.3 电话接口电路281
8.2.4 继电器控制电路281
8.3 电话远程遥控系统的硬件电路设计283
8.3.1 CPU的选择285
8.3.2 各部分电路的工作原理285
8.4 电话远程遥控系统的软件设计288
8.4.1 软件系统分析288
8.4.2 系统软件设计290
习题与思考295
第9章 以太网通信接口297
9.1 TCP/IP协议的分层结构及数据处理297
9.1.1 TCP/IP协议的分层结构297
9.1.2 TCP/IP协议数据的处理299
9.2 相关协议报文的格式300
9.2.1 以太网帧格式300
9.2.2 ARP报文格式301
9.2.3 IP报文格式301
9.2.4 ICMP报文格式303
9.2.5 UDP报文格式303
9.3 嵌入式精简TCP/IP协议栈的结构及现实意义304
9.3.1 嵌入式精简TCP/IP协议栈的总体结构304
9.3.2 嵌入式精简TCP/IP协议栈的现实意义305
9.4 以太网串行口数据转换模块的硬件设计305
9.4.1 以太网接口芯片RTL8019AS305
9.4.2 单片机系统接口电路设计310
9.5 以太网串行口数据转换模块的软件设计314
9.5.1 串行口控制程序的设计314
9.5.2 RTL8019AS控制程序的设计314
9.5.3 精简TCP/IP协议栈系统工作流程及代码分析319
9.5.4 以太网串行口数据转换模块工作实测355
习题与思考356
参考文献357
