目录
第1章FPGA系统设计基础1
1.1FPGA技术的发展历史和动向1
1.1.1FPGA技术的发展历史1
1.1.2FPGA技术的发展动向2
1.2FPGA的典型应用领域3
1.2.1数据采集和接口逻辑领域3
1.2.2高性能数字信号处理领域4
1.2.3其他应用领域4
1.3FPGA的工艺结构4
1.4典型的XilinxFPGA芯片5
1.5FPGA芯片的应用7
1.6工程项目中FPGA芯片的选择策略和原则8
1.6.1尽量选择成熟的产品系列8
1.6.2尽量选择兼容性好的封装8
1.6.3尽量选择一个公司的产品9
1.7FPGA的设计流程9
1.8思考与练习11
第2章ISE与ModelSim的安装12
2.1ISE的安装12
2.2ModelSimSE的安装与启动18
2.3ISE联合ModelSim设置22
2.4思考与练习29
第3章ISE操作基础30
3.1ISE的基本使用方法30
3.1.1新建工程30
3.1.2新建HDL文件32
3.1.3添加HDL文件33
3.1.4新建原理图设计33
3.1.5在原理图中调用模块34
3.1.6编辑原理图35
3.1.7用ConstraintsEditor设置约束38
3.1.8使用XST进行综合39
3.1.9设计实现42
3.1.10生成下载文件44
3.1.11下载FPGA45
3.2仿真验证47
3.2.1在ISE中仿真验证47
3.2.2在ISE中调用ModelSim51
3.3COREGenerator的使用方法56
3.3.1新建COREGenerator工程56
3.3.2新建IP59
3.3.3修改已有IP的参数61
3.3.4在设计中例化IP61
3.3.5选择不同版本的IP62
3.4流水灯实例63
3.4.1硬件介绍63
3.4.2创建工程63
3.4.3编写Verilog代码65
3.4.4UCF管脚约束68
3.4.5编译工程70
3.4.6ISE仿真70
3.4.7ModelSim仿真验证75
3.5思考与练习80
第4章VerilogHDL语言概述81
4.1VerilogHDL语言简介81
4.1.1硬件描述语言81
4.1.2VerilogHDL语言的历史82
4.1.3VerilogHDL语言的能力82
4.1.4VerilogHDL和VHDL语言的异同83
4.1.5VerilogHDL和C语言的异同83
4.2VerilogHDL语言的描述层次84
4.2.1VerilogHDL语言描述能力综述84
4.2.2系统级和算法级建模84
4.2.3RTL级建模85
4.2.4门级和开关级建模85
4.3基于VerilogHDL语言的FPGA开发流程85
4.4VerilogHDL语言的可综合与仿真特性87
4.4.1VerilogHDL语句的可综合性88
4.4.2VerilogHDL语句的仿真特性说明88
4.5VerilogHDL程序开发的必备知识89
4.5.1数字的表示形式89
4.5.2常用术语解释91
4.5.3VerilogHDL程序的优劣判断指标92
4.6VerilogHDL程序设计模式93
4.6.1自顶向下的设计模式93
4.6.2层次与模块化模式94
4.6.3IP核的重用94
4.7思考与练习98
第5章VerilogHDL程序结构99
5.1程序模块99
5.1.1VerilogHDL模块的概念99
5.1.2模块的基本结构99
5.1.3端口声明101
5.2VerilogHDL的层次化设计101
5.2.1VerilogHDL层次化设计的表现形式101
5.2.2模块例化102
5.2.3参数映射106
5.2.4在ISE中通过图形化方式实现层次化设计108
5.3VerilogHDL语言的描述形式111
5.3.1结构描述形式111
5.3.2行为描述形式116
5.3.3混合设计模式119
5.4思考与练习120
第6章VerilogHDL语言的基本要素121
6.1标志符与注释121
6.1.1标志符121
6.1.2注释122
6.2数字与逻辑数值122
6.2.1逻辑数值122
6.2.2常量122
6.2.3参数124
6.3数据类型124
6.3.1线网类型124
6.3.2寄存器类型128
6.4运算符和表达式132
6.4.1赋值运算符132
6.4.2算术运算符134
6.4.3逻辑运算符136
6.4.4关系运算符137
6.4.5条件运算符138
6.4.6位运算符140
6.4.7拼接运算符141
6.4.8移位运算符141
6.4.9一元约简运算符142
6.5思考与练习143
第7章面向综合的行为描述语句144
7.1触发事件控制144
7.1.1信号电平事件语句144
7.1.2信号跳变沿事件语句145
7.2条件语句146
7.2.1if语句146
7.2.2case语句147
7.2.3条件语句的深入理解150
7.3循环语句152
7.3.1repeat语句152
7.3.2while语句153
7.3.3for语句154
7.3.4循环语句的深入理解156
7.4任务与函数157
7.4.1task语句157
7.4.2function语句159
7.4.3深入理解任务和函数160
7.5思考与练习161
第8章可综合状态机开发163
8.1状态机的基本概念163
8.1.1状态机的工作原理及分类163
8.1.2状态机描述方式164
8.1.3状态机设计思想166
8.2可综合状态机设计原则166
8.2.1状态机开发流程167
8.2.2状态编码原则167
8.2.3状态机的容错处理168
8.2.4常用的设计准则169
8.3状态机的VerilogHDL实现170
8.3.1状态机实现综述170
8.3.2Moore状态机开发实例173
8.3.3Mealy状态机开发实例175
8.4思考与练习177
第9章面向验证和仿真的行为描述语句178
9.1验证与仿真概述178
9.1.1代码验证与仿真概述179
9.1.2测试平台179
9.1.3验证测试方法论181
9.1.4Testbench结构说明185
9.2仿真程序执行原理186
9.2.1VerilogHDL语义简介187
9.2.2VerilogHDL仿真原理187
9.3延时控制语句189
9.3.1延时控制的语法说明189
9.3.2延时控制应用实例189
9.4常用的行为仿真描述语句192
9.4.1循环语句192
9.4.2force和release语句194
9.4.3wait语句195
9.4.4事件控制语句196
9.4.5task和function语句197
9.4.6串行激励与并行激励语句198
9.5用户自定义元件199
9.5.1UDP的定义与调用199
9.5.2UDP应用实例200
9.6仿真激励的产生202
9.6.1变量初始化202
9.6.2时钟信号的产生205
9.6.3复位信号的产生207
9.6.4数据信号的产生208
9.6.5典型测试平台模块编写实例209
9.6.6关于仿真效率的说明210
9.7思考与练习210
第10章系统任务和编译预处理语句212
10.1系统任务语句212
10.1.1输出显示任务212
10.1.2文件输入/输出任务218
10.1.3时间标度任务222
10.1.4仿真控制任务224
10.1.5仿真时间函数224
10.1.6数字类型变换函数226
10.1.7概率分布函数226
10.2编译预处理语句228
10.2.1宏定义`define语句228
10.2.2条件编译`if语句230
10.2.3文件包含`include语句231
10.2.4时间尺度`timescale语句233
10.2.5其他语句234
10.3思考与练习235
第11章VerilogHDL语言基础236
11.18-3编码器236
11.23-8译码器237
11.3数据选择器238
11.4多位数值比较器240
11.5全加器241
11.6D触发器242
11.7寄存器243
11.8双向移位寄存器244
11.9四位二进制加减法计数器245
11.10顺序脉冲发生器247
11.11序列信号发生器248
11.12思考与练习249
第12章扩展接口设计250
12.1数码管显示接口实验250
12.1.1数码管显示接口实验内容与实验目的250
12.1.2数码管显示接口设计原理251
12.1.3数码管显示接口设计方法252
12.2LCD液晶显示接口实验259
12.2.1LCD液晶显示接口实验内容与实验目的259
12.2.2LCD液晶显示接口设计原理259
12.2.3LCD液晶显示接口设计方法262
12.3VGA显示接口实验267
12.3.1VGA显示接口实验内容与实验目的267
12.3.2VGA显示接口实验设计原理268
12.3.3VGA显示接口实验设计方法269
12.4RS-232C串行通信接口实验271
12.4.1RS-232C串行通信接口实验内容与实验目的271
12.4.2RS-232C串行通信接口设计原理271
12.4.3RS-232C串行通信接口设计方法274
12.5思考与练习279
第13章系统设计实例280
13.1实时温度采集系统280
13.1.1实时温度采集系统实验内容与实验目的280
13.1.2实时温度采集系统设计原理280
13.1.3实时温度采集系统设计方法283
13.2实时红外采集系统299
13.2.1实时红外采集系统实验内容与实验目的299
13.2.2实时红外采集系统设计原理299
13.2.3实时红外采集系统设计方法301
13.3实时键盘采集系统305
13.3.1实时键盘采集系统实验内容与实验目的305
13.3.2实时键盘采集系统设计原理306
13.3.3实时键盘采集系统设计方法308
13.4思考与练习320