本书从FPGA开发入门与芯片实际开发应用角度出发,全面介绍了FPGA设计所需的理论基础和工具应用。书中针对Verilog HDL设计的基础语法进行了系统的介绍,对Verilog HDL中一些常接触并容易出错的概念进行了详细说明。同时,书中还介绍了在数字电路设计中常用的EDA工具、状态机、仿真与测试方法。全书内容介绍深入浅出,结合作者多年来使用Verilog HDL的心得体会和积累,列举了丰富的设计实例,展现了许多仿真设计流程,全面总结和深入阐述了在Verilog HDL中一些设计技巧、设计理念,适合广大电路设计开发人员、电子爱好者和初学者全面学习。本书适合广大电路设计开发人员阅读,也可以作为高等院校电子信息、电气自动化等相关专业的教学用书。
《FPGA设计与开发零基础入门到精通 》详细介绍FPGA设计从基础入门到实际案例开发相关的各项知识与技巧,帮助读者轻松入门并快速达到设计境界。全书内容具有以下特点: 1 零基础入门,FPGA基础、工具、应用全涵盖:简明实用,囊括FPGA 设计全貌,对基础语法讲解的同时结合作者进行FPGA开发的心得体会和案例积累,帮助读者了解FPGA芯片设计的思路并轻松入门; 2 图文并茂,视频讲解:结合典型开发实例,同时辅以大量电路图、结构图、示例图,配合视频讲解,带领读者了解FPGA设计与开发的全部细节与技巧,从而使读者精通FPGA芯片开发的各项实用技能。
随着电子技术的不断发展,现在数字电路设计思想和方法都进入了一个全新的阶段。FPGA/CPLD可编程逻辑器件的功能越来越强大,应用也越来越广泛,为了能够快速地应用FPGA/CPLD进行项目开发,选择一种快速的开发方式很重要,而基于硬件描述语言的设计是比较高效的。所以要想应用FPGA/CPLD进行系统设计,掌握一种硬件描述语言是必不可少的,当然硬件描述语言中Verilog HDL和VHDL是首选。这两种语言都是IEEE标准的描述语言。本书基于Verilog HDL进行讲解。
Verilog HDL与C语言语法相似,具有简洁、易掌握的特点,是目前使用较广泛的硬件描述语言之一。本书不仅对Verilog HDL的基础语法、常用语句、常用函数和任务进行了详细讲解,同时对一些平常不容易理解的Verilog HDL的概念、设计技巧和使用要点进行了深入剖析讲解。另外,书中还对在数字电路设计中常用的EDA工具进行介绍,这些工具可以帮助我们高效、高质量地将设计代码转换为物理电路,同时一些工具,例如ModelSim,还可以为我们提供模拟仿真手段,它们的应用极大地方便了系统设计。
全书内容具有以下特点:
1. 零基础入门,FPGA基础、工具、应用全涵盖:简明实用,囊括FPGA 设计全貌,对基础语法讲解的同时,结合作者进行FPGA开发的心得体会和案例积累,帮助读者了解FPGA芯片设计的思路并轻松入门;
2. 图文并茂,视频讲解:结合典型开发实例,同时辅以大量电路图、结构图、示例图,配合视频讲解,带领读者了解FPGA设计与开发的全部细节与技巧,从而使读者精通FPGA芯片开发的各项实用技能。
本书在对基础语法讲解的同时,结合作者使用Verilog HDL的心得体会和积累,以通俗易懂的方式与读者共享,摒弃晦涩难懂的说教方式,结合实例以简单明了的方式呈现给读者,帮助读者熟悉FPGA设计开发的流程,并不断精进。书中程序源代码可扫下方二维码下载。
本书由谢永昌主编,参加编写的还有李宁、陈淼、袁志伟、苗秀清、耿港、张伯虎等。由于作者水平有限,书中疏漏和不妥之处在所难免,特请读者批评指正(欢迎关注下方微信公众号二维码交流)。
编者
谢永昌,固安信通铁路信号器材有限责任公司,工程师,长期从事电子器材设计与制作,兼任电工电子领域成人培训,工作期间多次被公司评为先进工作者和好教师,参与撰写了《从零开始学电子电路设计》等电子技术类图书,深受读者欢迎。
第一篇 基础知识
第1章 FPGA应用概述 002
1.1 EDA概述 002
1.1.1 FPGA与CPLD 002
1.1.2 Verilog HDL和VHDL 003
1.2 FPGA的基本结构 004
1.3 FPGA的常用开发工具 006
1.3.1 常用工具汇总一览表 006
1.3.2 HDL前端输入与系统管理软件 008
1.3.3 HDL逻辑综合软件 008
1.3.4 仿真软件 009
第2章 FPGA设计流程 010
2.1 需求分析 011
2.2 电路设计与输入 011
2.3 功能实现与仿真 011
2.4 综合优化 012
2.5 时序仿真与验证 012
2.6 板级调试 013
第二篇 设计方法
第3章 Verilog HDL语言要素 016
3.1 注释与格式 016
3.1.1 注释 016
3.1.2 格式 018
3.2 标识符 019
3.3 数据对象 020
3.3.1 常量 020
3.3.2 关键字 022
3.4 数据类型 023
3.4.1 变量 024
3.4.2 线网类型 025
3.5 表达式 027
3.5.1 操作数 027
3.5.2 操作符 030
3.5.3 表达式种类 038
第4章 Verilog HDL基本语句 039
4.1 赋值语句 039
4.1.1 连续赋值语句 039
4.1.2 过程赋值语句 041
4.2 单元块语句 045
4.2.1 顺序块begin-end 046
4.2.2 fork-join语句 047
4.3 流程控制语句 049
4.3.1 条件语句 049
4.3.2 循环语句 058
第5章 Verilog HDL的描述方式 063
5.1 门级结构描述 063
5.1.1 门级结构的组成 064
5.1.2 门级结构的逻辑真值表 065
5.1.3 门级结构描述实例 067
5.2 数据流描述 069
5.2.1 数据流描述特点 069
5.2.2 数据流描述实例 069
5.3 行为级描述 071
5.3.1 行为级描述特点 071
5.3.2 行为级描述实例 071
第6章 Verilog HDL的函数和任务 073
6.1 函数 073
6.1.1 函数定义 073
6.1.2 函数调用 074
6.2 任务 075
6.2.1 任务定义 075
6.2.2 任务调用 076
6.3 函数和任务的差异 078
第7章 状态机 079
7.1 状态机的分类与特点 079
7.1.1 状态机的分类 079
7.1.2 状态机的特点 084
7.2 状态机的设计方法 084
7.2.1 状态机的设计流程 084
7.2.2 状态机设计要点 085
7.2.3 状态机的描述方法 087
第三篇 仿真与测试
第8章 仿真 098
8.1 仿真概述 098
8.2 仿真中的延时描述 099
8.2.1 延时的表示方法 099
8.2.2 路径延迟声明specify 099
8.3 Testbench设计与使用要点 100
8.3.1 Testbench书写方法 101
8.3.2 时钟、复位的写法 103
第9章 测试用例设计 108
9.1 组合逻辑电路仿真设计 108
9.1.1 8-3线编码器示例 108
9.1.2 4位加法器示例 109
9.2 时序电路仿真设计 112
9.2.1 D触发器示例 112
9.2.2 4位计数器示例 114
第四篇 设计实例
第10章 Verilog设计实例 120
10.1 Verilog基础设计实例 120
10.1.1 简单组合逻辑电路设计 120
10.1.2 简易有限状态机设计 126
10.1.3 跑马灯设计 129
10.1.4 数码管显示设计 135
10.2 Verilog进阶设计实例 139
10.2.1 IIC通信 139
10.2.2 SPI通信 162
10.2.3 串口通信设计 173
10.2.4 红外遥控设计 192