VHDL设计指南(原书第2版)

VHDL设计指南(原书第2版)
作 者: Peter Ashenden 葛红 黄河 吴继明 葛红
出版社: 机械工业出版社
丛编项: 电子与电气工程丛书
版权说明: 本书为公共版权或经版权方授权,请支持正版图书
标 签: VHDL
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

  Peter J.Ashenden 博士从澳大利亚阿雷德雷大学获得博士学位,目前是电子设计自动化(EDA)方面的独立咨询顾问。他是IEEE高级会员,参与开发VHDL标准,也是IEEE设计自动化标准委员会(DASC)主席。他还参与Rosetta系统级设计语言的开发,撰写过多部关于VHDL的技术书籍。

内容简介

本书系统地介绍标准VHDL语言及其使用方法,包括系统建模工具在数字系统设计中的应用方法。本书从简单的模型问题人手,然后逐步深入,引向更复杂的实例研究。书中包括四个完整的实例研究,将帮助读者综合掌握VHDL技术。章后安排了精心设计的难易程度不同的练习,以及部分答案,有利于读者掌握书中的概念,方便教师进行教学参考。本书适合作为高等院校通信、电子、计算机专业相关课程的教材或参考书,也适合希望熟练掌握VHDL技巧的技术人员参考。电子数字系统的复杂性随着时间呈指数形式增加。事实上,产品寿命周期的不断降低和产品可靠性要求的不断提高,迫使电子产品设计师们需要极大地增加他们设计的产品质量和产出率。VHDL的发展就是顺应了这种趋势。借助于软件工程领域的复杂性管理和错误检测技术,VHDL可以消除无关的细节,采用与工艺无关的描述,及早发现错误,增加了从门级到系统级模型之间的可移植性和共用性。本书包括VHDL-87、VHDL-93和VHDL-2001各种版本的内容。详细说明VHDL语言所提供的建模工具,并通过实例讲解VHDL语言的使用。无论是具有熟练技巧的工程师,还是打算入门的学生都可以从本书获益。

图书目录

第1章 基本概念 1

1.1 数字系统建模 1

1.2 建模的域和层次 3

1.3 建模语言 6

1.4 VHDL的建模概念 6

1.4.1 行为元素 7

1.4.2 结构元素 8

1.4.3 混合结构和行为模型 9

1.4.4 测试台 10

1.4.5 分析、加工和执行 11

1.5 学习一种新语言:词汇元素和句法 13

1.5.1 词汇元素 14

1.5.2 句法描述 18

练习 20

第2章 标量数据类型和操作 23

2.1 常数和变量 23

2.1.1 常数和变量声明 23

2.1.2 变量赋值 24

2.2 标量类型 25

2.2.1 类型声明 25

2.2.2 整数类型 26

2.2.3 浮点类型 28

2.2.4 物理类型 29

2.2.5 枚举类型 31

2.3 类型分类 36

2.3.1 子类型 37

2.3.2 类型限定 38

2.3.3 类型转换 38

2.4 标量类型的属性 39

2.5 表达式和操作符 41

练习 43

第3章 顺序语句 45

3.1 if 语句 45

3.2 case 语句 47

3.3 null语句 52

3.4 loop 语句 52

3.4.1 exit 语句 53

3.4.2 next 语句 56

3.4.3 while 循环 57

3.4.4 for 循环 58

3.4.5 loop 语句小结 60

3.5 断言和报告语句 61

练习 65

第4章 复合数据类型和操作 67

4.1 数组 67

4.1.1 多维数组 69

4.1.2 数组聚集 70

4.1.3 数组属性 72

4.2 非约束数组类型 74

4.2.1 字符串 75

4.2.2 位矢量 75

4.2.3 标准逻辑数组 75

4.2.4 字符串和位串文字 75

4.2.5 非约束数组端口 76

4.3 数组操作和引用 77

4.3.1 数组片 78

4.3.2 数组类型转换 79

4.4 记录 80

练习 83

第5章 基本建模结构 85

5.1 实体声明 85

5.2 构造体 87

5.2.1 并发语句 87

5.2.2 信号声明 88

5.3 行为描述 89

5.3.1 信号赋值 89

5.3.2 信号属性 91

5.3.3 wait语句 93

5.3.4 delta 延迟 96

5.3.5 传输和惯性延迟机制 98

5.3.6 进程语句 102

5.3.7 并发信号赋值语句 103

5.3.8 并发断言语句 108

5.3.9 实体与被动进程 109

5.4 结构化描述 110

5.5 设计加工 117

5.5.1 分析 117

5.5.2 设计库、库子句和use子句 118

5.5.3 加工 120

5.5.4 执行 122

练习 123

第6章 实例研究:一个流水线乘法累加器 131

6.1 算法概要 131

6.2 行为模型 133

6.3 寄存器传输级模型 140

6.3.1 寄存器传输级模型中的功能模块 141

6.3.2 寄存器传输级的构造体 147

6.3.3 测试寄存器传输级模型 150

练习 151

第7章 子程序 153

7.1 过程 153

7.2 过程参数 158

7.2.1 信号参数 161

7.2.2 默认值 163

7.2.3 非约束数组参数 164

7.2.4 过程参数小结 166

7.3 并发过程调用语句 167

7.4 函数 169

7.4.1 功能建模 171

7.4.2 纯函数和非纯函数 171

7.4.3 now函数 172

7.5 重载 173

7.6 声明的可见性 176

练习 179

第8章 包和use子句 183

8.1 包声明 183

8.1.1 包声明中的子程序 186

8.1.2 包声明中的常数 187

8.2 包体 188

8.3 use 子句 190

8.4 预定义包标准 192

8.5 IEEE标准包 193

8.5.1 std_logic_1164多值逻辑系统 193

8.5.2 标准VHDL综合包 194

8.5.3 标准VHDL数学包 198

练习 202

第9章 别名 205

9.1 数据对象的别名 205

9.2 非数据项的别名 208

练习 210

第10章 实例研究:一个位矢量算术包 213

10.1 包接口 213

10.2 包体 216

10.3 一个使用算术包的ALU 223

练习 224

第11章 决断信号 227

11.1 基本决断信号 227

11.1.1 复合决断子类型 231

11.1.2 决断子类型小结 234

11.2 IEEE std_logic_1164决断子类型 234

11.3 决断信号和端口 236

11.3.1 决断端口 237

11.3.2 驱动值属性 238

11.4 决断信号参数 239

练习 240

第12章 类属常数 245

12.1 参数化行为 245

12.2 参数化结构 248

练习 249

第13章 元件和配置 251

13.1 元件 251

13.1.1 元件声明 251

13.1.2 元件实例生成 252

13.1.3 组装元件 253

13.2 配置元件实例 255

13.2.1 基本配置声明 255

13.2.2 配置多层次的结构 256

13.2.3 配置实体的直接实例生成 259

13.2.4 配置中的类属映射和端口映射 260

13.2.5 延缓的元件绑定 264

13.3 配置说明 266

练习 271

第14章 生成语句 275

14.1 生成迭代结构 275

14.2 条件生成结构 279

14.3 生成语句的配置 284

练习 288

第15章 实例研究:DLX计算机系统 293

15.1 DLX CPU综述 293

15.1.1 DLX寄存器 293

15.1.2 DLX指令集 294

15.1.3 DLX 外部接口 297

15.2 行为模型 298

15.2.1 DLX类型包 299

15.2.2 DLX 实体声明 300

15.2.3 DLX 指令集包 301

15.2.4 DLX 行为构造体 307

15.3 测试行为模型 319

15.3.1 测试台时钟发生器 319

15.3.2 测试台存储器 320

15.3.3 测试台构造体和配置 324

15.4 寄存器传输级模型 326

15.4.1 算术逻辑单元 327

15.4.2 寄存器 330

15.4.3 寄存器文件 333

15.4.4 多路复用器 334

15.4.5 扩展器 335

15.4.6 构造体 336

15.4.7 控制器 340

15.4.8 配置声明 354

15.5 测试寄存器传输级模型 355

练习 359

第16章 保护和块 361

16.1 保护信号和断开 361

16.1.1 驱动属性 365

16.1.2 保护端口 365

16.1.3 保护信号参数 366

16.2 块和保护信号赋值 368

16.2.1 显式保护信号 370

16.2.2 断开说明 372

16.3 使用块的结构化模型 373

16.3.1 块中的类属和端口 375

16.3.2 配置带有块的设计 376

练习 378

第17章 访问类型和抽象数据类型 381

17.1 访问类型 381

17.1.1 访问类型声明和分配器 381

17.1.2 访问值的赋值语句和等式 383

17.1.3 记录和数组的访问类型 384

17.2 链接数据结构 386

17.3 使用程序包的抽象数据类型 390

练习 400

第18章 文件及其输入和输出 403

18.1 文件 403

18.1.1 文件声明 403

18.1.2 读文件 404

18.1.3 写文件 407

18.1.4 子程序中的文件声明 409

18.1.5 直接打开和关闭操作 410

18.1.6 子程序中的文件参数 412

18.1.7 文件的可移植性 414

18.2 程序包textio 414

18.2.1 textio读操作 416

18.2.2 textio写操作 423

18.2.3 用户自定义类型的读写 425

练习 426

第19章 实例研究:队列网络 429

19.1 队列网络概念 429

19.2 队列网络模块 430

19.2.1 随机数发生器 430

19.2.2 令牌和arc类型的程序包 433

19.2.3 令牌源模块 435

19.2.4 令牌池模块 438

19.2.5 队列模块 439

19.2.6 令牌服务器模块 444

19.2.7 分叉模块 447

19.2.8 结合模块 449

19.3 磁盘系统的队列网络 452

练习 457

第20章 属性和组 459

20.1 预定义属性 459

20.1.1 标量类型的属性 459

20.1.2 数组类型和对象的属性 460

20.1.3 信号属性 460

20.1.4 已命名项目的属性 460

20.2 用户定义的属性 466

20.2.1 属性声明 467

20.2.2 属性说明 467

20.2.3 外来属性 475

20.3 组 476

练习 478

第21章 其他主题 481

21.1 缓冲和连接端口 481

21.2 关联列表中的转换函数 482

21.3 延迟进程 487

21.4 共享变量 489

练习 497

附录A 综合 499

附录B 预定义程序包标准 513

附录C IEEE标准程序包 517

附录D 相关标准 527

附录E VHDL句法 537

附录F VHDL-87、VHDL-93和VHDL-2001之间的区别 549

附录G 练习答案 553

参考文献 571