零点起飞学XilinxFPGA
更新日期:2024-07-13 00:59:56
书店:清华大学出版社
出版时间:2019-03
浏览量:1141
价格:0.0¥

书籍下载

内容介绍

产品特色

内容简介

《零点起飞学Xilinx FPGA(零点起飞)》以Verilog HDL语言为蓝本,结合ISE软件与ModelSim软件,通过丰富的实例,从实验、实践、实用的角度,详细叙述了FPGA在电子系统中的应用。本书共13章,主要内容包括FPGA系统设计基础、ISE与Modelsim软件安装、ISE软件操作基础、Verilog HDL语言概述、Verilog HDL程序结构、Verilog HDL语言基本要素、面向综合的行为描述语句、可综合状态机开发、面向验证和仿真的行为描述语句、系统任务和编译预处理语句、Verilog HDL语言基础程序设计、扩展接口设计和综合系统设计,全面详细的阐述了FPGA的设计方法和开发过程。

《零点起飞学Xilinx FPGA(零点起飞)》由浅入深,从易到难,各章节既相对独立又前后关联,其z大的特点就是打破了传统书籍的讲解方法,以图解的方式讲解了基本功能的应用与操作,并通过提示、技巧和注意的方式指导读者对重点注意项的理解,从而能够真正运用到实际产品的设计生产中去。本书每章配有习题,以指导读者深入地进行学习。

《零点起飞学Xilinx FPGA(零点起飞)》既可作为高等学校电子系统设计课程的教材,也可作为电路设计及相关行业工程技术人员的技术参考书。


目录

目录

第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


精彩书摘

  第3章 ISE操作基础
  本章将介绍从新建一个工程到把结果下载到FPGA的全过程,让初次接触FPGA的读者对使用FPGA进行简易工程的开发有个直接的认识。初学者通过学习本章的内容,可以对FPGA技术有一个初步了解。
  3.1 ISE的基本使用方法
  使用ISE的设计流程主要包括创建工程、设计输入、设计编译、设计仿真、引脚分配、编程下载等。本节将针对ISE的各个过程进行详细介绍,通过对本节内容的学习,初学者可以掌握ISE的基本使用技巧。
  3.1.1 新建工程
  使用ISE设计FPGA,首先要新建一个工程。ISE集成开发环境提供了对整个工程的集成管理和开发,设计者可以在ISE环境中完成所有的FPGA设计环节。
  【例3-1】 创建工程。
  (1)选择File→New Project命令,弹出New Project Wizard对话框,如图3-1所示。在Name输入框中输入工程名称,在Location输入框中指定工程位置,在Top-level source type下拉列表中指定顶层设计的类型,然后单击Next按钮。
  图3-1 创建新工程
  (2)在Project Settings界面中,选择要使用的FPGA器件的型号、综合工具、仿真工具以及所使用的硬件描述语言,单击Next按钮,如图3-2所示。
  图3-2 工程设置
  (3)可以在建立好ISE工程以后再建立设计文件,所以这里单击Next按钮,直到Project Summary界面出现,单击Finish按钮完成新建的工程,如图3-3所示。
  图3-3 工程概要
  3.1.2 新建HDL文件
  建好工程后,设计者需要新建HDL(硬件描述语言)文件,HDL文件是设计FPGA的基础。目前最流行的HDL语言有VHDL和Verilog HDL。
  ISE集成的HDL编辑器是HDL Editor,它有一个Language Templates语法设计辅助模板,提供了VHDL、Verilog HDL语言和UCF用户约束的语法说明及例子。
  【例3-2】 新建HDL文件。
  (1)启动ISE,软件默认打开上次关闭的工程。选择File→New,在弹出的New对话框中选择Text File,单击OK按钮。
  (2)接下来会打开HDL Editor编辑器,允许编写用户的HDL代码。
  (3)输入用户代码后,选择File→Save,在弹出的对话框中输入文件名,选择要保存文件的类型,单击按钮。保存后的文件会以不同的颜色显示关键字。
  (4)单击Language Templates按钮,打开语言辅助模板,如图3-4所示。
  图3-4 语言辅助模板
  (5)从左边的窗格选择模板的类型,右边窗格会显示模板的具体内容。
  (6)在用户设计的HDL代码中,将光标定位到需要使用模板的位置,然后回到选择模板窗格,选择好需要使用的模板,单击use in file命令,将范例插入到用户的代码中,最后根据需要修改模板范例即可。
  3.1.3 添加HDL文件
  使用HDL语言进行设计的好处之一就是便于重用其他设计者的代码,所以可以在已有的工程中添加HDL代码。
  【例3-3】 添加HDL文件。
  (1)如果只是添加文件,而不需要将文件复制到用户自己的工程中,单击Project→Add Source命令。
  如果需要将添加的文件复制到用户自己的工程中,单击Project→Add Copy of Source命令。
  (2)在弹出的Add Existing Sources对话框中选择需要添加的文件,单击打开命令,即可完成添加文件的操作。
  3.1.4 新建原理图设计
  以原理图方式设计工程具有直观清晰的特点,几乎所有的FPGA设计软件都提供原理图设计输入方法。ISE集成了原理图输入工具ECS(Engineering Capture System)。
  设计者可以采用原理图方式来进行工程顶层设计,而底层设计则采用HDL代码。这样的设计结构清晰,便于工程的设计和维护。
  【例3-4】 新建原理图。
  (1)启动ISE,默认会打开上次关闭的工程,选择File→New,在弹出的New对话框中选择Schematic,如图3-5所示,单击OK按钮。
  图3-5 文件类型
  (2)接下来会出现一个空白的原理图输入界面。在ISE中,该界面默认嵌入在ISE集成环境中,为了获得更大的编辑空间,可以将窗口悬浮,以便更加方便地编辑原理图。右击窗口下侧文件名,单击Float命令,可以将原理图编辑窗口悬浮,如图3-6所示。
  图3-6 原理图编辑窗口
  3.1.5 在原理图中调用模块
  在ISE中提供了很多模块供设计者使用,这些模块都是经过验证的、功能正确的设计,设计者调用这些模块可以大大加快设计进程。同时,设计者还可以自己设计具有特定功能的模块,以便在后续的设计中使用。
  【例3-5】 在原理图中调用模块。
  (1)在原理图输入窗口左边的窗格选择Symbols选项卡,如图3-7所示。
  图3-7 Symbols选项卡
  (2)在Categories窗格中选择模块所属的类型,例如选择Arithmetic算术类型模块。
  (3)在Symbols窗格中选择需要的模块,例如选择add4,将鼠标指针移动到原理图编辑窗口,会看到出现一个4位的加法器。
  (4)将模块移动到合适的位置,单击鼠标左键,放置模块,如图3-8所示。
  ……

前言/序言

  前 言
  电子工业的飞速发展和电子计算机技术的广泛应用,促进了电子设计自动化技术日新月异的发展。FPGA是英文Field Programmable Gate Array的缩写,即现场可编程门阵列,它是在可编程阵列逻辑(Programmable Logic Array,PAL)、通用阵列逻辑(Generic Array Logic,GAL)、复杂可编程逻辑器件(Complex Programmable Logic Devices,CPLD)等器件的基础上进一步发展的产物。它是作为专用集成电路(Application Specific Integrated Circuit,ASIC)领域中的一种半定制电路出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点,广泛应用于航空、航天、汽车、造船、通用机械和电子等工业的各个领域。
  本书结合Verilog HDL硬件描述语言,以Xilinx公司的ISE 14.7和Model Technology公司的ModelSim作为FPGA软件设计工具,详细阐述了使用FPGA设计的方法和开发 过程。
  本书以ISE 14.7和ModelSim开发环境为背景,介绍FPGA产品开发的完整解决方案。全书共13章,主要内容包括FPGA系统设计基础、ISE与ModelSim的安装、ISE操作基础、Verilog HDL语言概述、Verilog HDL程序结构、Verilog HDL语言基本要素、面向综合的行为描述语句、可综合状态机开发、面向验证和仿真的行为描述语句、系统任务和编译预处理语句、Verilog HDL语言基础程序设计、扩展接口设计和系统设计实例等,最后通过工程实例,将FPGA开发语言、开发思想和实际工程完美结合。
  为了使初学者迅速入门,提高对电子系统设计的兴趣与爱好,并能在短时间内掌握电子系统设计开发的要点,作者在编写过程中注重内容的选取,使本书具有以下特点。
  由浅入深,循序渐进:在内容编排上遵循由浅入深、由易到难的原则,将基础知识与大量实例结合,使读者可以边学边练。
  实例丰富,涉及面广:提供了丰富的FPGA程序设计实例,内容涉及电子系统的多个领域。
  兼顾原理,注重实用:侧重于实际应用,精炼理论讲解内容。考虑到基本原理和基本应用一直是学习FPGA技术的基本要求,为了紧随FPGA技术的发展,在编写过程中作者注重知识的新颖性和实用性,因而在书中讲解了ISE 14.7与ModelSim联合仿真等内容。
  本书第1~3章与第9~12章由哈尔滨工程大学高敬鹏编写,第4章、第5章由黑龙江大学的曹立文编写,第6~8章由黑龙江工程学院武超群编写,第13章由北京航天长征飞行器研究所白锦良编写。参加本书编写工作的人员还有管殿柱、宋一兵、王献红、李文秋。
  感谢您选择了本书,希望我们的努力对您的工作和学习有所帮助,也希望您把对本书的意见和建议告诉我们。
  零点工作室
  2019年1月