第1章 数字电路、FPGA与HDL 1
1.1 数字电路 1
1.2 FPGA 3
1.2.1 可编程逻辑器件(PLD) 3
1.2.2 FPGA的基本结构 4
1.3 硬件描述语言(HDL) 5
1.3.1 VHDL 6
1.3.2 Verilog HDL 7
第2章 Verilog HDL基础 8
2.1 VerilogHDL概述 8
2.1.1 数字电路的设计方法 8
2.1.2 Verilog HDL程序结构 9
2.2 Verilog HDL的模块 9
2.2.1 模块的结构 9
2.2.2 模块的声明与内容 10
2.2.3 模块实例与调用 12
2.2.4 时间单位与时延 13
2.3 词法约定 15
2.3.1 标识符 15
2.3.2 关键字 15
2.3.3 注释 16
2.3.4 格式 16
2.4 数据类型 16
2.4.1 常量 17
2.4.2 变量 19
2.4.3 标量与向量 22
2.4.4 参数 22
2.5 表达式与操作符 23
2.5.1 表达式与操作数 23
2.5.2 操作符 23
2.5.3 操作符优先级 28
2.6 系统任务和函数 29
2.6.1 $display和$write 29
2.6.2 系统任务$monitor 31
2.6.3 系统函数$time和$realtime 32
2.6.4 系统任务$finish和$stop 33
2.6.5 系统任务$readmem 33
2.6.6 系统任务$random 34
2.7 Verilog HDL建模方式 34
2.7.1 建模方式概述 34
2.7.2 结构建模方式 36
2.7.3 数据流建模方式 40
2.7.4 行为建模方式 42
第3章 实验系统 53
3.1 Nexys3教学开发板简介 53
3.2 Nexys3实验板硬件系统 54
3.2.1 主芯片 54
3.2.2 FPGA配置电路 55
3.2.3 存储模块 56
3.2.4 电源模块 57
3.2.5 时钟模块 58
3.2.6 USB PROG接口 58
3.2.7 USBA型接口 59
3.2.8 USB-UART接口(串口) 60
3.2.9 基本I/O设备 60
3.2.10 以太网口 62
3.2.11 VGA接口 63
3.2.12 Pmod连接器 64
3.2.13 VHDC连接器 64
第4章 系统开发平台 66
4.1 开发平台简介 66
4.2 ISE Design Suite 66
4.2.1 ISE简介 66
4.2.2 ISE Design Suite功能 67
4.2.3 ISE Design Suite安装 67
4.3 Digilent Adept调试工具 73
4.3.1 Digilent Adept简介 73
4.3.2 Digilent Adept安装 73
4.4 项目开发流程 75
4.4.1 创建工程 75
4.4.2 编写代码 78
4.4.3 语法检查 80
4.4.4 编写测试代码 81
4.4.5 仿真 83
4.4.6 逻辑综合 84
4.4.7 查看电路 85
4.4.8 配置管脚 87
4.4.9 下载代码 89
4.4.10 板卡实验 91
第5章 基础实验项目 92
5.1 实验1:五输入表决器设计 92
5.1.1 实验目的 92
5.1.2 实验内容与原理 92
5.1.3 实验要求 92
5.1.4 实验步骤 93
5.1.5 思考与探索 93
5.2 实验2:多路数据选择器设计 94
5.2.1 实验目的 94
5.2.2 实验内容与原理 94
5.2.3 实验要求 94
5.2.4 实验步骤 94
5.2.5 思考与探索 95
5.3 实验3:译码器设计 95
5.3.1 实验目的 95
5.3.2 实验内容与原理 95
5.3.3 实验要求 96
5.3.4 实验步骤 96
5.3.5 思考与探索 97
5.4 实验4:二进制优先级编码器设计 97
5.4.1 实验目的 97
5.4.2 实验内容与原理 97
5.4.3 实验要求 98
5.4.4 实验步骤 99
5.4.5 思考与探索 99
5.5 实验5:数值比较器设计 99
5.5.1 实验目的 99
5.5.2 实验内容与原理 99
5.5.3 实验要求 100
5.5.4 实验步骤 100
5.5.5 思考与探索 101
5.6 实验6:加法器设计 101
5.6.1 实验目的 101
5.6.2 实验内容与原理 101
5.6.3 实验要求 101
5.6.4 实验步骤 102
5.6.5 思考与探索 102
5.7 实验7:加/减法运算器设计 102
5.7.1 实验目的 102
5.7.2 实验内容与原理 103
5.7.3 实验要求 103
5.7.4 实验步骤 103
5.7.5 思考与探索 104
5.8 实验8:基本RS触发器设计 105
5.8.1 实验目的 105
5.8.2 实验内容与原理 105
5.8.3 实验要求 105
5.8.4 实验步骤 106
5.8.5 思考与探索 106
5.9 实验9:D触发器设计 106
5.9.1 实验目的 106
5.9.2 实验内容与原理 106
5.9.3 实验要求 107
5.9.4 实验步骤 107
5.9.5 思考与探索 108
5.10 实验10:JK触发器设计 108
5.10.1 实验目的 108
5.10.2 实验内容与原理 108
5.10.3 实验要求 109
5.10.4 实验步骤 109
5.10.5 思考与探索 109
5.11 实验11:同步二进制计数器设计 110
5.11.1 实验目的 110
5.11.2 实验内容与原理 110
5.11.3 实验要求 111
5.11.4 实验步骤 111
5.11.5 思考与探索 111
5.12 实验12:十进制计数器设计 112
5.12.1 实验目的 112
5.12.2 实验内容与原理 112
5.12.3 实验要求 112
5.12.4 实验步骤 113
5.12.5 思考与探索 113
5.13 实验13:可逆计数器设计 113
5.13.1 实验目的 113
5.13.2 实验内容与原理 113
5.13.3 实验要求 114
5.13.4 实验步骤 114
5.13.5 思考与探索 115
5.14 实验14:基本寄存器设计 115
5.14.1 实验目的 115
5.14.2 实验内容与原理 115
5.14.3 实验要求 116
5.14.4 实验步骤 116
5.14.5 思考与探索 116
5.15 实验15:移位寄存器设计 117
5.15.1 实验目的 117
5.15.2 实验内容与原理 117
5.15.3 实验要求 118
5.15.4 实验步骤 118
5.15.5 思考与探索 119
第6章 扩展实验项目 120
6.1 实验16:定时与分频实验 120
6.1.1 实验目的 120
6.1.2 实验内容与原理 120
6.1.3 实验要求 122
6.1.4 实验步骤 122
6.1.5 思考与探索 122
6.2 实验17:流水灯实验 123
6.2.1 实验目的 123
6.2.2 实验内容与原理 123
6.2.3 实验要求 125
6.2.4 实验步骤 125
6.2.5 思考与探索 126
6.3 实验18:数码管扫描显示 126
6.3.1 实验目的 126
6.3.2 实验内容与原理 126
6.3.3 实验要求 129
6.3.4 实验步骤 130
6.3.5 思考与探索 130
6.4 实验19:数字钟设计 130
6.4.1 实验目的 130
6.4.2 实验内容与原理 131
6.4.3 实验要求 131
6.4.4 实验步骤 131
6.4.5 思考与探索 132
6.5 实验20:小键盘扫描实验 132
6.5.1 实验目的 132
6.5.2 实验内容与原理 132
6.5.3 实验要求 135
6.5.4 实验步骤 136
6.5.5 思考与探索 136
6.6 实验21:串口通信实验 137
6.6.1 实验目的 137
6.6.2 实验内容与原理 137
6.6.3 实验要求 144
6.6.4 实验步骤 145
6.6.5 思考与探索 146
第7章 综合实验项目 147
7.1 实验22:寄存器堆设计 147
7.1.1 实验目的 147
7.1.2 实验内容与原理 147
7.1.3 实验要求 148
7.1.4 实验步骤 148
7.1.5 思考与探索 148
7.2 实验23:按键消抖与单脉冲 149
产生实验 149
7.2.1 实验目的 149
7.2.1 实验内容与原理 149
7.2.3 实验要求 151
7.2.4 实验步骤 151
7.2.5 思考与探索 152
7.3 实验24:出租车计费器设计 152
7.3.1 实验目的 152
7.3.2 实验内容与原理 152
7.3.3 实验要求 153
7.3.4 实验步骤 153
7.3.5 思考与探索 153
7.4 实验25:交通灯设计 154
7.4.1 实验目的 154
7.4.2 实验内容与原理 154
7.4.3 实验要求 155
7.4.4 实验步骤 155
7.4.5 思考与探索 156
7.5 实验26:自动售货机设计 156
7.5.1 实验目的 156
7.5.2 实验内容与原理 156
7.5.3 实验要求 157
7.5.4 实验步骤 158
7.5.5 思考与探索 158
附录A Nexys4-DDR实验板卡 159
A.1 Nexys4-DDR实验板卡概况 159
A.2 Nexys4-DDR部件 160
A.2.1 电源供电 160
A.2.2 FPGA配置 161
A.2.3 基本I/O设备 161
A.2.4 USB-UART接口 162
A.2.5 Pmod连接器 162
A.2.6 VGA接口 163
A.2.7 振荡器/时钟 164
A.2.8 以太网接口 164
A.2.9 温度传感器 164
附录B实验报告模板 165
参考文献 168