EDA技术与CPLD/FPGA开发应用简明教程

EDA技术与CPLD/FPGA开发应用简明教程"

作者:刘爱荣、王振成、曹瑞等
ISBN:9787302156390
定价:¥32
字数:千字
页数:
出版时间:2007.08.01
开本:
版次:1-3
装帧:
出版社:清华大学出版社
简介

在信息技术高速发展的现代社会,电子系统的设计方法和设计手段已有了根本性的变化。可编程逻辑器件和EDA技术已广泛应用于通信、工业自动化、智能仪表、图像处理以及计算机等领域。因此,EDA技术是未来电子工程师必须掌握的技术。

全书共分10章,详细介绍了EDA技术的基本知识、大规模可编程逻辑器件CPLD/FPGA的结构原理、EDA开发工具的使用方法、VHDL语言的语法结构和编程技巧以及逻辑电路和状态机的设计。为提高读者的工程设计能力,第6、7、8和9章分别介绍了CPLD/FPGA器件在数字系统、通信工程和计算机等领域的具体应用,并且运用大量综合性实例对各种关键技术进行了深入浅出的分析。此外,基础章节配有习题,应用章节配有设计题。

本书取材广泛,内容新颖并且重点突出,可作为高等院校电子信息工程、通信工程、计算机科学与技术、自动化和仪器仪表等信息类及相近专业的本科生或研究生教材使用,也可以作为从事工程设计工作的专业技术人员的参考书。

本书每章中的教学课件可以到http://www.tupwk.com.cn/downpage/index.asp网站下载。

前言

前    言

  由于高密度现场可编程逻辑器件(CPLD/FPGA)和专用集成电路的飞速发展,传统的设计技术已经不适合大规模及超大规模集成电路,以往分立的数字电路已经被可编程逻辑器件所取代。电子设计自动化EDA(Electronic Design Automation)技术正是为了适应现代电子产品设计的要求,吸收多学科最新成果而形成的一门新技术。

  利用EDA开发工具进行电子系统的设计,具有以下几个特点:①用软件的方式设计硬件;②由用软件方式设计的系统到硬件系统的转换是由开发软件自动完成的;③设计过程中可用软件进行各种仿真;④系统可现场编程,在线升级;⑤整个系统可集成在一个芯片上,体积小、功耗低并且可靠性高。当今,可编程逻辑器件在通信系统及复杂的现场控制系统中得到广泛的应用。因此,EDA技术是现代电子设计的发展趋势,基于CPLD/FPGA技术的开发应用正成为数字时代的应用技术潮流。

  本书的目的是帮助读者尽快掌握EDA技术,让读者学会应用硬件描述语言、原理图和状态图的混合设计方法设计数字系统。全书共10章:第1章介绍了EDA技术的基本知识;第2章介绍了大规模可编程逻辑器件CPLD/FPGA的结构原理;第3章介绍了VHDL语言的语法结构及编程技巧;第4章介绍了EDA开发工具的使用方法;第5章介绍了逻辑电路和状态机的设计;第6章介绍了CPLD/FPGA器件在数字系统中的应用;第7章介绍了FPGA在通信工程中的实践应用;第8章介绍了FPGA在DSP领域中的应用;第9章介绍了FPGA在计算机领域的具体应用;第10章是关于CPLD/FPGA实验内容及实验要求。本书在选材上注重内容新颖、技术先进并且重点突出。书中给出了经实践验证的大量设计实例,希望能对读者迅速掌握大规模可编程器件设计与应用有所帮助。

  全书由刘爱荣、王振成、曹瑞、卢印举、何素霞、马耀峰、单国全、张建平、王欣、李志超和许爽编写,其中第2.2、2.3、2.4、4.1、4.2、4.3、4.4、5.1、5.2节由王振成编写,第1.3、1.4、1.5、5.3、5.4、5.5、5.6和第10章由曹瑞编写,第3.3~3.6节和第8章由刘爱荣编写,第7.3~7.6及9.1~9.3节由卢印举编写,第6.4、6.5、6.6、6.7节由王欣编写,第7.1、7.2、9.4~9.6节由马耀峰编写,第3.1、3.2、4.5、4.6节由张建平编写,第2.5、2.6、2.7、3.7、3.8、3.9节由单国全编写,第1.6~1.10、2.1节及参考文献由许爽编写,第6.1、6.2、6.3、6.8、6.9节由何素霞编写,第1.1、1.2、附录A和附录B由李志超编写,全书由刘爱荣统稿、定稿。另外,张军宝、刘文贤、王卫卫、王延军、张会成和崔小波等为本书的插图和资料整理做了大量工作。

  在编写本书的过程中参考了相关文献,在此向这些文献的作者深表感谢!由于EDA技术是一门发展迅速的新技术,加上作者水平有限,书中难免疏漏、不妥甚至错误,恳请专家和广大读者批评指正。我们的信箱:huchenhao@263.net,电话:010-62796045。

                                                       

     作  者

   2007年8月

目录

目    录

第1章  绪论 1

1.1  EDA技术的含义 1

1.2  EDA技术发展历程 1

1.2.1  20世纪70年代的计算机辅助

  设计CAD阶段 1

1.2.2  20世纪80年代的计算机辅助

  工程设计CAE阶段 2

1.2.3  20世纪90年代电子系统设计

  自动化EDA阶段 2

1.3  EDA技术的主要内容 3

1.3.1  大规模可编程逻辑器件 3

1.3.2  硬件描述语言(HDL) 4

1.3.3  软件开发工具 4

1.3.4  实验开发系统 5

1.3.5  关于EDA技术的学习重点及

  学习方法 5

1.4  EDA软件系统的构成 6

1.5  EDA工程设计流程 7

1.5.1  设计输入 7

1.5.2  逻辑综合和优化 8

1.5.3  目标器件的布线/适配 9

1.5.4  设计过程中的有关仿真 9

1.5.5  目标器件的编程/下载 10

1.5.6  硬件仿真/硬件测试 10

1.6  数字系统的设计方法简介 10

1.7  数字系统的设计准则 11

1.8  EDA技术的应用展望 12

1.9  本章小结 13

1.10  思考和练习 13

第2章  大规模可编程逻辑器件 14

2.1  可编程逻辑器件概述 14

2.1.1  PLD的发展进程 14

2.1.2  PLD介绍 15

2.1.3  可编程逻辑器件的结构

  和分类 17

2.1.4  CPLD/FPGA相对于MCU

  的优势 19

2.2  CPLD的结构与工作原理 20

2.2.1  CPLD的基本结构 20

2.2.2  Altera 公司的器件产品 26

2.3  现场可编程门阵列FPGA 40

2.3.1  Xilinx Virtex系列器件

  性能特点 40

2.3.2  FPGA器件的结构描述 40

2.3.3  Xilinx公司的XC4000系列

  FPGA简介 42

2.3.4  XC5000系列的LCA结构 45

2.3.5  Xilinx公司 XC6200、

  XC8100系列FPGA简介 48

2.4  FPGA的配置模式 49

2.4.1  主动串行配置模式 50

2.4.2  主动并行配置模式 50

2.4.3  外设配置模式 51

2.4.4  从动串行配置模式 52

2.4.5  菊花链配置模式 52

2.4.6  FPGA的配置流程 53

2.4.7  FPGA标识说明 54

2.5  FPGA和CPLD的开发应用

 选择 55

2.6  本章小结 59

2.7  思考和练习 59

第3章  硬件描述语言VHDL的语法

    结构及编程 60

3.1  概述 60

3.1.1  什么是VHDL及VHDL 

  语言的发展历史 60

3.1.2  VHDL的作用 61

3.1.3  VHDL语言特点 61

3.1.4  VHDL与其他硬件描述

  语言的比较 61

3.1.5  VHDL的优点 62

3.1.6  VHDL程序设计约定 63

3.2  VHDL程序基本结构 63

3.2.1  VHDL设计简述 64

3.2.2  结构体(ARCHITECTURE) 67

3.2.3  配置(CONFIGURATION) 69

3.2.4  库、程序包 72

3.3  VHDL语言要素 78

3.3.1  VHDL文字规则 78

3.3.2  VHDL数据对象 80

3.3.3  VHDL数据类型 83

3.3.4  VHDL操作符 94

3.4  VHDL顺序语句 98

3.4.1  对象与赋值语句 99

3.4.2  转向控制语句 101

3.4.3  WAIT语句 112

3.4.4  子程序调用语句 114

3.4.5  返回语句(RETURN) 116

3.4.6  空操作语句(NULL) 117

3.4.7  其他语句和说明 118

3.5  VHDL并行语句 125

3.5.1  进程语句 127

3.5.2  块语句 132

3.5.3  并行信号赋值语句 135

3.5.4  并行过程调用语句 137

3.5.5  VHDL 的层次化设计与

  元件声明(COMPONENT) 139

3.5.6  元件例化语句 140

3.5.7  生成语句 142

3.6  子程序(SUBPROGRAM) 148

3.6.1  子程序声明 148

3.6.2  子程序主体 149

3.6.3  重载函数 151

3.7  VHDL描述风格 153

3.7.1  行为描述 153

3.7.2  数据流描述 154

3.7.3  结构化描述 155

3.8  本章小结 156

3.9  思考和练习 156

第4章  常用EDA工具软件操作

    指南 158

4.1  MAX+PLUSⅡ软件的安装 158

4.1.1  概述 158

4.1.2  常用的设计输入方法 159

4.1.3  MAX+PLUSⅡ的特点 159

4.1.4  MAX+PLUS II安装 160

4.1.5  MAX+PLUS II软件组成 162

4.1.6  MAX+PLUS II的编辑规则 164

4.2  MAX+PLUS II操作指南 165

4.2.1  原理图编辑工具 165

4.2.2  MAX+PLUS II原理图编辑

  流程 165

4.2.3  其他设计输入方法 170

4.2.4  设计项目的处理 170

4.2.5  设计项目的校验 174

4.2.6  器件编程 179

4.3  MAX+PLUS II操作实例 182

4.3.1  源文件的编辑 182

4.3.2  系统的编译、综合和适配 185

4.3.3  系统的有关仿真 186

4.3.4  系统的编程下载 189

4.4  利用LPM兆功能块的电路

 设计 190

4.4.1  常用LPM兆功能块 190

4.4.2  基于LPM_COUNTER的

  数据分频器设计 193

4.5  本章小结 194

4.6  思考和练习 194

第5章  基本逻辑电路设计 195

5.1  组合逻辑电路设计 195

5.1.1  基本门电路 195

5.1.2  三态门及总线缓冲器 200

5.1.3  单向总线驱动器 201

5.1.4  双向总线缓冲器 201

5.2  时序逻辑电路设计 202

5.2.1  时序电路特殊信号描述 202

5.2.2  常用时序电路设计 204

5.2.3  寄存器和移位寄存器 207

5.2.4  计数器 209

5.2.5  序列信号发生器、检测器 216

5.3  存储器设计 220

5.3.1  只读存储器ROM 220

5.3.2  静态数据存储器SRAM 221

5.3.3  先进先出堆栈FIFO 223

5.4  状态机的VHDL设计 226

5.4.1  状态机概述 226

5.4.2  状态机的特点 226

5.4.3  状态机的基本结构和功能 227

5.4.4  一般状态机的VHDL描述 228

5.4.5  摩尔状态机的设计 231

5.4.6  米勒状态机的VHDL设计 233

5.4.7  ONE-HOT状态机 235

5.5  本章小结 236

5.6  思考和练习 236

第6章  CPLD/FPGA在数字系统中的

    应用 237

6.1  正负脉宽数控调制信号

 发生器的设计 237

6.1.1  设计思路 237

6.1.2  VHDL源程序 238

6.1.3  仿真结果 239

6.2  智能函数发生器的设计 239

6.2.1  智能函数发生器的设计

  思路 239

6.2.2  模块及模块功能 240

6.3  序列检测器的设计 247

6.3.1  序列检测器设计思路 247

6.3.2  VHDL源程序 247

6.3.3  仿真结果 248

6.4  数字频率计的设计 248

6.4.1  数字频率计设计思路 248

6.4.2  数字频率计的VHDL

  源程序 250

6.5  数字秒表的设计 254

6.5.1  数字秒表设计思路 254

6.5.2  数字秒表的VHDL源程序 254

6.6  交通信号控制器的设计 258

6.6.1  交通信号控制器设计思路 258

6.6.2  VHDL源程序 259

6.6.3  系统的有关仿真 266

6.6.4  系统的硬件验证 266

6.6.5  设计技巧分析 266

6.7  三层电梯控制器的设计 267

6.7.1  三层电梯控制器的功能 267

6.7.2  三层电梯控制器的设计

  思路 267

6.7.3  三层电梯控制器的综合

  设计 268

6.7.4  三层电梯控制器的波形

  仿真分析 273

6.7.5  N层电梯控制器的设计

  技巧分析 274

6.8  本章小结 274

6.9  思考和练习 274

第7章  FPGA在通信工程中的

    实践应用 276

7.1  二进制振幅键控(ASK)调制器与

 解调器设计 276

7.1.1  ASK信号调制原理 276

7.1.2  ASK信号解调原理 277

7.1.3  ASK调制VHDL程序 278

7.1.4  ASK解调VHDL程序 280

7.2  二进制频移键控(FSK)调制器

 与解调器设计 281

7.2.1  FSK信号调制原理 281

7.2.2  FSK信号解调原理 282

7.2.3  FSK调制VHDL程序及

  仿真 283

7.2.4  FSK解调VHDL程序及

  仿真 284

7.3  二进制相位键控(PSK)调制器

 与解调器设计 286

7.3.1  基本概念 286

7.3.2  CPSK信号调制 288

7.3.3  DPSK信号调制 290

7.3.4  DPSK信号解调 290

7.3.5  DPSK调制方框图及电路

  符号 291

7.4  UART接口设计 293

7.4.1  UART概述 293

7.4.2  UART系统FPGA接口

  电路 294

7.4.3  UART系统FPGA程序

  设计 294

7.5  本章小结 294

7.6  思考和练习 295

第8章  FPGA在DSP领域中的

    应用 296

8.1  快速加法器的设计 296

8.1.1  4位二进制并行加法器 296

8.1.2  8位二进制加法器的

  源程序 297

8.2  快速乘法器的设计 299

8.2.1  设计思路 299

8.2.2  快速乘法器VHDL源程序 300

8.3  数字滤波器的设计 305

8.3.1  数字滤波器概述 305

8.3.2  数字滤波器的原理分析 305

8.3.3  数字滤波器系统实现 306

8.3.4  数字滤波器系统原理框图 307

8.3.5  数字滤波器顶层IIR模块 307

8.3.6  数字滤波器的VHDL语言

  程序 308

8.3.7  数字滤波器系统性能测试 309

8.4  本章小结 310

8.5  思考和练习 310

第9章  FPGA在微机工程中的

    实践应用 312

9.1  键盘接口设计 312

9.1.1  键盘工作原理 312

9.1.2  矩阵式按键概述 313

9.1.3  矩阵式按键FPGA描述 315

9.2  LED驱动器设计 321

9.2.1  LED数码管工作原理 321

9.2.2  静态LED数码管驱动原理

  及其FPGA电路设计 322

9.2.3  动态LED数码管驱动原理

  及其FPGA电路设计 323

9.3  D/A接口设计 327

9.3.1  D/A 转换器概述 327

9.3.2  典型D/A转换器芯片

  DAC0832 328

9.3.3  FPGA与DAC0832接口

  电路原理图 329

9.3.4  DAC0832 接口电路时序 330

9.3.5  DAC0832 接口电路程序 330

9.4  A/D接口设计 331

9.4.1  A/D转换器概述 331

9.4.2  典型A/D转换器芯片

  ADC0809 331

9.4.3  A/D接口设计 333

9.4.4  ADC0809 VHDL采样控制

  程序设计 334

9.5  本章小结 337

9.6  思考和练习 337

第10章  CPLD/FPGA实验 338

10.1  实验要求 338

10.1.1  概述 338

10.1.2  实验报告的撰写 338

10.2  实验内容 339

10.2.1  实验一:简单逻辑电路

       设计与仿真 339

10.2.2  实验二:全加器设计、

       仿真与下载 341

10.2.3  实验三:分频电路与 

       12归1电路设计 343

10.2.4  实验四:利用硬件描述

       语言进行数字钟设计 344

10.2.5  实验五:串行扫描显示

       电路设计 345

10.2.6  实验六:复杂数字钟设计

       与扫描显示 346

10.2.7  实验七:智力竞赛抢答器

       的设计 346

10.2.8  实验八:数字频率计的

       设计 347

10.2.9  实验九:交通灯信号

       控制器的设计 348

附录A  VHDL程序设计的语法结构 349

附录B  利用WWW进行EDA资源

    的检索 354

主要参考文献 356

 

  

作者简介

编辑推荐

作者寄语

电子资料

www.luweidong.cn

下一个