《零点起飞学FPGA/零点起飞》以Verilog HDL语言为蓝本,结合Altium Designer软件、Quartus II软件与ModelSim软件的功能,通过丰富的实例,从实验、实践和实用的角度,详细阐述了FPGA在电子系统中的应用。本书共9章,主要内容包括FPGA基础知识、FPGA硬件电路的设计、Quartus II软件操作基础、Verilog HDL语言概述、面向综合的行为描述语句、ModelSim仿真工具、面向验证和仿真的行为描述语句、Verilog HDL语言设计进阶、外设接口和综合系统设计,全面详细地阐述了FPGA的设计方法和开发过程。
《零点起飞学FPGA/零点起飞》由浅入深,从易到难,各章节既相对独立又前后关联,其最大特点是打破了传统书籍的讲解方法,以图解方式叙述基本功能的应用与操作,并通过提示、技巧和注意的方式指导读者对重点内容的理解,从而达到在实际产品设计中的熟练应用。本书每章配有习题,以指导读者深入地进行学习。
本书既可作为高等学校电子系统设计课程的教材,也可作为电路设计及相关行业工程技术人员的技术参考书。
电子工业的飞速发展和电子计算机技术的广泛应用,促进了电子设计自动化技术的日新月异。FPGA是英文Field Programmable Gate Array的缩写,即现场可编程门阵列,它是在可编程阵列逻辑(PAL)、通用阵列逻辑(GAL)、复杂可编程逻辑器件(CPLD)等器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点,其广泛应用于航空、航天、汽车、造船、通用机械和电子等工业的各个领域。
本书结合Verilog HDL硬件描述语言,以Altera公司的Quartus II软件和Model Technology公司的ModelSim软件作为FPGA软件设计工具;同时,以Altium Designer软件作为FPGA硬件电路设计工具,详细阐述了FPGA软硬件系统的设计方法和开发过程。
本书以Altium Designer软件、Quartus II软件和ModelSim软件开发环境为背景,介绍FPGA产品开发的完整解决方案。本书共分9章,分别从FPGA硬件设计和FPGA软件设计两个方面进行阐述,主要内容包括FPGA基础知识、FPGA硬件电路的设计、Quartus II软件操作基础、Verilog HDL语言概述、面向综合的行为描述语句、ModelSim仿真工具、面向验证和仿真的行为描述语句、Verilog HDL语言设计进阶、外设接口和综合系统设计等,最后通过大量的工程实例,将FPGA开发语言、开发思想和实际工程进行完美的结合。
为了使初学者迅速入门,提高对电子系统设计的兴趣,并能在短时间内掌握电子系统设计开发的要点,作者在编写过程中注意体现本书的以下特点:
由浅入深,循序渐进。本书在内容编排上遵循由浅入深、由易到难的原则,基础知识与大量实例相结合,边学边练。
实例丰富,涉及面广。本书提供了丰富的FPGA程序设计实例,内容涉及电子系统的各个领域。
兼顾原理,注重实用。本书侧重于实际应用,精炼理论讲解内容。考虑到基本原理和基本应用一直是学习FPGA技术的基本要求,为了紧随FPGA技术的发展,在编写过程中注重知识的新颖性和实用性,因而本书中讲解了Quartus II参数化宏功能模块、Quartus Ⅱ软件与ModelSim软件的联合仿真等。
本书配套资料请到清华大学出版社网站下载,其中包含主要实例源文件、练习文件和电子课件,这些文件都被保存在与章节相对应的文件夹中。
本书第1~5章由黑龙江工程学院的武超群编写,第6~8章由哈尔滨工程大学的高敬鹏编写,参加本书编写工作的人员还有杨敏、岳立雷、管殿柱、宋一兵、赵景波、张忠林、王献红、曹立文、魏宾、李文秋、初航、郭方方,在此表示衷心的感谢。
感谢您选择了本书,希望我们的努力对您的工作和学习有所帮助,也希望您把对本书的意见和建议告诉我们。
零点工作室网站地址:www.zerobook.net
零点工作室联系信箱:syb33@163.com
第1章 FPGA基础知识1
1.1 通用数字集成电路1
1.1.1 TTL数字集成电路2
1.1.2 CMOS数字集成电路2
1.1.3 可编程逻辑器件3
1.2 FPGA的工艺结构5
1.3 FPGA技术的发展方向6
1.4 典型的FPGA芯片7
1.4.1 Altera公司的典型产品7
1.4.2 Xilinx公司的典型产品9
1.5 FPGA芯片的应用11
1.6 FPGA的设计流程12
1.7 FPGA的设计开发工具14
1.8 典型的FPGA产品设计软件使用简介15
1.8.1 Altium Designer Summer 09的安装15
1.8.2 Altium Designer summer 09的启动17
1.8.3 Altium Designer Summer 09的主页界面管理20
1.8.4 Quartus II软件的安装22
1.8.5 Quartus II软件的启动25
1.8.6 Quartus II的主页界面管理26
1.9 思考与练习27
第2章 FPGA硬件电路的设计28
2.1 硬件电路的设计流程28
2.2 FPGA最小系统29
2.1.1 FPGA芯片管脚介绍30
2.2.2 电源电路设计31
2.2.3 滤波电容电路模块设计32
2.2.4 JTAG调试与AS下载电路的设计33
2.2.5 时钟电路设计33
2.2.6 复位电路的设计34
2.2.7 锁相环外围电路的设计34
2.2.8 LED电路的设计35
2.2.9 高速SDRAM存储器接口电路设计35
2.2.10 Flash存储器接口电路设计36
2.2.11 FPGA最小系统扩展接口电路设计36
2.3 FPGA硬件系统的设计技巧37
2.4 FPGA硬件系统的调试方法38
2.5 综合实例:FPGA最小硬件系统的设计39
2.6 思考与练习51
第3章 Quartus II软件操作基础52
3.1 Quartus II基本设计流程52
3.2 Quartus II基本设计操作53
3.2.1 工程创建53
3.2.2 设计输入57
3.2.3 编译项目60
3.2.4 设计文件的仿真61
3.2.5 引脚分配与器件编译67
3.2.6 器件编程69
3.2.7 其他操作74
3.3 Quartus II参数化宏功能模块及其使用方法77
3.3.1 LPM计数器的使用方法77
3.3.2 建立存储器文件80
3.3.3 LPM存储器ROM的使用方法81
3.3.4 LPM存储器RAM的使用方法84
3.4 SignalTap II在线逻辑分析仪的使用方法86
3.4.1 SignalTap II介绍86
3.4.2 使用SignalTap II操作流程87
3.4.3 SignalTap II逻辑分析仪的使用88
3.5 典型实例:正弦波发生器及SignalTap II的使用96
3.6 思考与练习108
第4章 Verilog HDL语言概述109
4.1 硬件描述语言的概念109
4.2 Verilog HDL的产生与发展110
4.3 Verilog HDL语言的魅力111
4.3.1 Verilog HDL语言与VHDL语言的比较111
4.3.2 Verilog HDL与C语言的比较112
4.3.3 Verilog HDL的应用113
4.4 采用Verilog HDL设计复杂数字电路的优点113
4.5 Verilog HDL程序设计模式114
4.6 Verilog HDL程序基本结构115
4.6.1 Verilog HDL程序入门116
4.6.2 模块的框架118
4.6.3 Verilog HDL语言的描述形式119
4.7 Verilog HDL语言基本要素128
4.7.1 标志符与注释128
4.7.2 数字与逻辑数值129
4.7.3 数据类型131
4.7.4 常用运算符138
4.7.5 Verilog HDL语言的赋值144
4.7.6 Verilog HDL语言的关键词145
4.8 典型实例:利用Verilog HDL语言在FPGA上实现LED流水灯146
4.9 思考与练习153
第5章 面向综合的行为描述语句154
5.1 可综合模型的设计154
5.2 触发事件控制155
5.2.1 信号电平事件语句155
5.2.2 信号跳变沿事件语句156
5.3 条件语句157
5.3.1 if语句157
5.3.2 case语句158
5.3.3 条件语句的深入理解161
5.4 循环语句163
5.4.1 repeat语句163
5.4.2 while语句164
5.4.3 for语句165
5.5 任务与函数167
5.5.1 任务(task)语句167
5.5.2 函数(function)语句169
5.5.3 任务和函数的深入理解170
5.6 有限状态机的设计171
5.6.1 有限状态机的分类172
5.6.2 有限状态机的状态编码173
5.6.3 有限状态机设计方法174
5.6.4 设计可综合状态机的指导原则179
5.6.5 有限状态机设计实例180
5.7 Quartus II图形化状态机输入工具使用181
5.8 Verilog HDL语言实现组合逻辑电路186
5.9 Verilog HDL语言实现时序逻辑电路188
5.10 硬件描述语言设计基础实例189
5.10.1 8-3编码器189
5.10.2 3-8译码器190
5.10.3 数据选择器191
5.10.4 多位数值比较器193
5.10.5 全加器193
5.10.6 D触发器195
5.10.7 寄存器196
5.10.8 双向移位寄存器197
5.10.9 四位二进制加减法计数器198
5.10.10 顺序脉冲发生器199
5.10.11 序列信号发生器201
5.11 思考与练习201
第6章 ModelSim仿真工具203
6.1 ModelSim仿真工具简介203
6.1.1 菜单栏204
6.1.2 工具栏216
6.1.3 工作区216
6.1.4 命令窗口217
6.1.5 MDI窗口217
6.1.6 状态栏217
6.1.7 定制用户界面217
6.2 ModelSim的命令与文件218
6.2.1 vlib命令219
6.2.2 vmap命令219
6.2.3 vcom命令220
6.2.4 vlog命令221
6.2.5 vsim命令222
6.2.6 force命令223
6.2.7 add wave命令225
6.2.8 run命令226
6.2.9 DO命令227
6.2.10 宏命令227
6.3 ModelSim仿真工具安装与使用230
6.3.1 ModelSim的安装231
6.3.2 在Quartus II中直接调用ModelSim软件进行时序仿真231
6.3.3 使用ModelSim软件直接进行功能仿真235
6.4 典型实例:SDRAM读写控制的实现与ModelSim仿真238
6.4.1 SDRAM简介238
6.4.2 SDRAM控制器的ModelSim仿真241
6.5 思考与练习243
第7章 面向验证和仿真的行为描述语句244
7.1 验证与仿真概述244
7.1.1 收敛模型245
7.1.2 测试平台说明245
7.1.3 验证测试方法论247
7.1.4 Testbench结构说明251
7.2 仿真程序执行原理252
7.3 延时控制语句254
7.4 常用的行为仿真描述语句257
7.4.1 循环语句257
7.4.2 force和release语句259
7.4.3 wait语句260
7.4.4 事件控制语句261
7.4.5 task和function语句262
7.4.6 串行激励与并行激励语句263
7.5 用户自定义元件264
7.6 仿真激励的产生267
7.6.1 变量初始化267
7.6.2 时钟信号的产生270
7.6.3 复位信号的产生271
7.6.4 数据信号的产生272
7.6.5 测试向量的产生274
7.6.6 关于仿真效率的说明275
7.7 典型实例:全加器的验证与仿真276
7.8 思考与练习280
第8章 Verilog HDL语言设计进阶281
8.1 系统任务281
8.1.1 输出显示任务281
8.1.2 文件输入输出任务287
8.1.3 时间标度任务291
8.1.4 仿真控制任务293
8.1.5 仿真时间函数294
8.1.6 数字类型变换函数295
8.1.7 概率分布函数296
8.2 编译预处理297
8.2.1 宏定义`define语句298
8.2.2 条件编译命令`if语句300
8.2.3 文件包含`include语句301
8.2.4 时间尺度`timescale语句303
8.2.5 其他语句304
8.3 Verilog HDL语言的代码风格305
8.3.1 Verilog HDL语言的基本原则306
8.3.2 Verilog HDL语言的编写规范309
8.3.3 Verilog HDL语言的处理技巧314
8.4 思考与练习316
第9章 外设接口和综合系统设计318
9.1 外设接口实验318
9.1.1 数码管显示接口实验318
9.1.2 LCD液晶显示接口实验326
9.1.3 VGA显示接口实验334
9.1.4 RS-232C串行通信接口实验338
9.1.5 PS2键盘接口实验346
9.2 综合系统设计360
9.2.1 实时温度采集系统360
9.2.2 实时红外采集系统378