《数字逻辑与计算机设计 VHDL语言描述》PDF下载

  • 购买积分:20 如何计算积分?
  • 作  者:(美)桑迪格著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2015
  • ISBN:9787302386834
  • 页数:719 页
图书介绍:本书系统论述了数字电子技术、数字逻辑、VHDL硬件描述语言及CPU设计的基本知识,适合作为高校电子信息工程、计算机、通信工程相关专业的“数字逻辑”课程教材。

第1章 布尔代数、布尔函数、VHDL和门 1

1.1 引言 1

1.2 布尔代数基础 1

1.2.1 维恩图 2

1.2.2 布尔函数的黑盒子 3

1.2.3 基本逻辑符号 4

1.2.4 布尔代数公理 7

1.2.5 布尔代数定理 8

1.2.6 布尔代数定理的证明 9

1.3 从真值表推出布尔函数 10

1.3.1 用函数的1值推出布尔函数 10

1.3.2 用函数的0值推出布尔函数 11

1.3.3 用最小项和最大项推出布尔函数 12

1.4 简单门函数的VHDL设计 15

1.4.1 NOT函数的VHDL设计 15

1.4.2 AND函数的VHDL设计 17

1.4.3 OR函数的VHDL设计 18

1.4.4 XOR函数的VHDL设计 19

1.4.5 NAND函数的VHDL设计 21

1.4.6 NOR函数的VHDL设计 22

1.4.7 XNOR函数的VHDL设计 24

1.4.8 BUFFER函数的VHDL设计 26

1.4.9 用标准形式给出的任意布尔函数的VHDL设计 27

1.5 有关逻辑门的更多内容 30

1.5.1 等价门符号 30

1.5.2 全功能门 31

1.5.3 等价门电路 32

1.5.4 门的简化描述名称 32

1.5.5 门的国际逻辑符号 32

习题 34

第2章 数制转换、码制和函数最简化 37

2.1 引言 37

2.2 数字电路与模拟电路 37

2.2.1 人类心脏的数字化信号 37

2.2.2 离散信号与连续信号 38

2.3 二进制数制转换 38

2.3.1 十进制数、二进制数、八进制数和十六进制数 38

2.3.2 转换技术 40

2.4 二进制码制 45

2.4.1 小键盘和键盘的最少比特表示 45

2.4.2 常见码制:BCD,ASCII,以及其他 45

2.4.3 二进制和反射格雷码之间的模2加法和转换 48

2.4.4 七段码 51

2.4.5 字母显示系统的VHDL设计 52

2.5 卡诺图化简方法 54

2.5.1 卡诺图资源管理器 55

2.5.2 使用两变量卡诺图 56

2.5.3 使用三变量卡诺图 58

2.5.4 使用四变量卡诺图 60

2.5.5 无关的输出 61

习题 63

第3章 逻辑电路分析和设计简介 67

3.1 引言 67

3.2 集成电路器件 67

3.3 分析和设计逻辑电路 69

3.3.1 分析和设计继电器逻辑电路 69

3.3.2 分析IC逻辑电路 70

3.3.3 设计IC逻辑电路 71

3.4 生成详细的原理图 74

3.5 用与非/与非和或非/或非形式设计电路 76

3.6 传输延时 78

3.7 译码器 79

3.7.1 用译码器和单个门设计逻辑电路 82

3.8 多路选择器 85

3.8.1 用多路选择器设计逻辑电路 87

3.9 险象 88

3.9.1 功能险象 88

3.9.2 逻辑险象 89

习题 91

第4章 组合逻辑电路的VHDL设计 94

4.1 引言 94

4.2 VHDL 94

4.3 库组成 95

4.4 实体声明 96

4.5 结构体声明 97

4.5.1 数据流设计风格评价 98

4.5.2 行为设计风格评价 98

4.5.3 结构设计风格评价 98

4.6 数据流设计风格 99

4.7 行为设计风格 102

4.8 结构设计风格 106

4.9 用连线和总线实现 112

4.10 VHDL设计实例 116

4.10.1 用标量输入和输出设计 117

4.10.2 用向量输入和输出设计 118

4.10.3 通用VHDL体系结构 120

习题 121

第5章 双稳态存储器件的VHDL设计 125

5.1 引言 125

5.2 S-R NOR锁存器分析 125

5.2.1 简单的电灯开关 125

5.2.2 S-R NOR锁存器的电路延迟模型 127

5.2.3 S-R NOR锁存器的特性表 128

5.2.4 S-R NOR锁存器的特征方程 129

5.2.5 S-R NOR锁存器的PS/NS表 129

5.2.6 S-R NOR锁存器的时序图 130

5.3 S-R NAND锁存器分析 132

5.3.1 S-R NAND锁存器电路延迟模型 132

5.3.2 S-R NAND锁存器的特性表 132

5.3.3 S-R NAND锁存器的特征方程 133

5.3.4 S-R NAND锁存器的PS/NS表 133

5.3.5 S-R与非锁存器的时序图 133

5.4 设计一个简单的时钟 134

5.5 设计一个D锁存器 137

5.5.1 门控S-R锁存器电路设计 137

5.5.2 用S-R锁存器设计D锁存器电路 138

5.5.3 利用D锁存器的特性表来设计D锁存器电路 139

5.5.4 D锁存器的时序图 140

5.5.5 用D锁存器构造一个时钟 141

5.5.6 构造一个8比特的D锁存器 142

5.6 设计D触发器电路 143

5.6.1 设计主从型D触发器电路 143

5.6.2 用S-R与非锁存器设计D触发器 146

5.6.3 上升沿触发的D触发器的时序图 149

习题 150

第6章 简单有限状态机的VHDL设计 156

6.1 引言 156

6.2 同步电路 156

6.3 用VHDL构造一个D型触发器 157

6.4 设计简单的同步电路 158

6.5 用算法公式法设计计数器 159

6.6 用算法公式法设计非传统计数器 167

6.7 用算术法设计计数器 170

6.8 分频(降低一个快时钟的频率) 171

6.9 用PS/NS表格法设计计数器 174

6.10 用PS/NS表格法设计非传统计数器 177

习题 178

第7章 计算机电路 184

7.1 引言 184

7.2 三态输出与断开状态 184

7.3 微计算机系统的数据总线共享 187

7.4 深入了解XOR和XNOR符号及功能 190

7.4.1 奇函数和偶函数 191

7.4.2 单比特错误检测系统 192

7.4.3 比较器和大于电路 194

7.5 加法器设计 197

7.5.1 半加器模块的设计 197

7.5.2 全加器模块的设计 198

7.6 设计及使用行波进位加法器和减法器 200

7.7 行波进位加法器的传播延迟时间 203

7.8 设计超前进位加法器 203

7.9 超前进位加法器的传播延迟时间 206

习题 206

第8章 电路实现技术 210

8.1 引言 210

8.2 可编程逻辑器件 210

8.2.1 可编程只读存储器(PROM)和查找表(LUT) 212

8.2.2 可编程逻辑阵列(PLA) 213

8.2.3 可编程阵列逻辑(PAL)或者通用阵列逻辑(GAL) 213

8.2.4 使用PROM或者LUT进行电路设计 214

8.2.5 使用PLA进行电路设计 215

8.2.6 使用PAL或者GAL进行电路设计 216

8.3 正逻辑规则和直接极性标志 217

8.3.1 信号名称 217

8.3.2 PLC和DPI系统的等效电路分析 218

8.4 更多关于多路选择器(MUX)和数据分路器(DMUX)的内容 221

8.4.1 MUX树设计 223

8.4.2 DMUX树设计 223

习题 224

第9章 复杂有限状态机的VHDL设计 227

9.1 引言 227

9.2 基于双进程PS/NS方法的设计 228

9.3 CPLD、FPGA和状态机编码风格浅析 231

9.4 有限状态机模型总结 234

9.5 利用摩尔输出设计紧凑编码状态机 235

9.6 利用摩尔输出设计单热点编码状态机 237

9.7 利用摩尔和米利输出设计紧凑编码状态机 241

9.8 利用摩尔和米利输出设计单热点编码状态机 243

9.9 利用算法公式法设计复杂状态机 245

9.10 提高复杂状态机的可靠性 251

9.11 其他状态机设计方法 255

9.11.1 双分配PS/NS方法 256

9.11.2 混合PS/NS方法 259

习题 262

第10章 基本的计算机体系结构 279

10.1 引言 279

10.2 通用数据处理系统或计算机 279

10.3 哈佛型计算机和RISC体系结构 280

10.4 普林斯顿(冯·诺依曼)型计算机和CISC体系结构 282

10.5 VBC1概述 283

10.6 VBC1设计原理 283

10.7 VBC1编程器寄存器模型 286

10.8 VBC1指令集体系结构 287

10.9 汇编语言程序的编写格式 289

习题 290

第11章 VBC1的汇编语言编程 292

11.1 引言 292

11.2 VBC1指令集 292

11.3 IN指令 293

11.4 OUT指令 296

11.5 MOV指令 298

11.6 LOADI指令 300

11.7 ADDI指令 301

11.8 ADD指令 303

11.9 SRO指令 304

11.10 JNZ指令 306

11.11 VBC1编程实例和技术 308

11.11.1 无条件跳转 308

11.11.2 标签 308

11.11.3 循环计数器 309

11.11.4 程序“横行” 310

11.11.5 减法指令 310

11.11.6 乘法指令 312

11.11.7 除法指令 312

习题 312

第12章 设计输入/输出电路 316

12.1 引言 316

12.2 设计仲裁电路 316

12.3 设计总线仲裁电路 318

12.4 设计可加载寄存器电路 319

12.5 设计输入电路 321

12.5.1 设计由4个滑动开关驱动的输入电路 323

12.6 设计输出电路 324

12.6.1 设计驱动4个LED的输出电路 325

12.6.2 设计一个可以驱动7段显示器的输出电路 326

12.6.3 仔细观察显示0的电路 328

12.7 结合输入输出电路搭建一个简单I/O系统 329

12.8 可选的VHDL设计风格 332

习题 333

第13章 设计指令存储器、加载程序计数器和去抖动电路 335

13.1 引言 335

13.2 设计一个指令存储器 335

13.2.1 指令存储器的代码变形 337

13.2.2 在启动阶段初始化VBC1的指令存储器 339

13.3 设计一个加载程序计数器 342

13.4 设计一个去抖动单脉冲电路 345

13.5 设计去抖动单脉冲电路的验证电路 348

习题 355

第14章 设计多路显示系统 357

14.1 引言 357

14.2 四个7段LED显示器构成的多路显示系统 357

14.3 用VHDL设计多路显示系统 360

14.3.1 设计模块一:四选一MUX阵列 360

14.3.2 设计模块二:十六进制显示译码器 361

14.3.3 设计模块三:2比特计数器和分频器 362

14.3.4 设计模块四:2-4线译码器 364

14.4 用平面设计方法设计多路显示系统 364

14.5 用层次化设计方法设计多路显示系统 367

14.6 利用平面设计方法设计一个字符显示系统 372

习题 377

第15章 设计指令译码器 379

15.1 引言 379

15.2 指令译码器设计目标 379

15.3 指令IN、OUT和MOV的指令译码器真值表 380

15.4 设计指令IN的指令译码器 382

15.5 设计指令OUT和MOV的指令译码器 383

15.6 指令LOADI的指令译码器真值表 384

15.7 指令ADDI的指令译码器真值表 385

15.8 指令ADD的指令译码器真值表 386

15.9 指令SR0的指令译码器真值表 387

15.10 设计指令SR0的指令译码器 388

15.11 指令JNZ的指令译码器真值表 389

15.12 设计指令JNZ的指令译码器 391

15.13 设计VBC1的指令译码器 393

习题 393

第16章 设计算术逻辑单元 398

16.1 引言 398

16.2 算术逻辑单元的使用 398

16.3 设计ALU的LOADI指令部分 399

16.4 设计ALU的ADDI指令部分 400

16.5 设计ALU的ADD指令部分 401

16.6 设计ALU的SR0指令部分 401

16.7 为VBC1设计一个ALU 402

16.8 用VHDL设计的附加电路 403

16.8.1 设计额外的ALU电路 403

16.8.2 设计移位电路 406

16.8.3 设计桶形移位电路 409

16.8.4 设计移位寄存器电路 412

习题 414

第17章 完成VBC1的设计 416

17.1 引言 416

17.2 设计一个运行程序计数器 416

17.3 将载入程序计数器与运行程序计数器结合起来 419

17.4 设计运行频率电路和速度电路 421

17.5 设计VBC1的指令存储器的载入电路 423

习题 424

第18章 VBC1-E的汇编语言编程 425

18.1 引言 425

18.2 指令总结 425

18.3 输入、输出与中断指令 427

18.4 数据存储指令 432

18.5 算术指令与逻辑指令 434

18.6 移位指令与循环移位指令 437

18.7 跳转指令、相对跳转指令与暂停指令 439

18.8 关于中断与汇编器命令的更多内容 443

18.9 VBC1-E完整指令集总结 448

习题 449

第19章 设计VBC1-E的输入/输出电路 458

19.1 引言 458

19.2 VBC1-E的输入电路设计 458

19.3 VBC1-E的修改后IN指令的指令译码真值表 460

19.4 VBC1-E的输出电路设计 462

19.5 VBC1-E的修改后OUT指令的指令译码真值表 464

19.6 VBC1-E的修改后IN和OUT指令的指令译码器设计 464

19.7 VBC1-E的LOADI、ADDI和JNZ指令的指令译码器设计 467

习题 468

第20章 设计VBC1-E的数据存储器电路 471

20.1 引言 471

20.2 设计VBC1-E的数据存储器 471

20.3 设计VBC1-E的寄存器和数据选择电路 475

20.4 VBC1-E的STORE和FETCH指令的指令译码器真值表 475

20.5 设计VBC1-E的STORE和FETCH指令的指令译码器 478

20.6 设计VBC1-E的MOV指令的指令译码器 479

习题 480

第21章 设计VBC1-E的算术、逻辑、移位、旋转和无条件跳转电路 482

21.1 引言 482

21.2 VBC1-E ALU的算术和逻辑指令部分设计 482

21.3 VBC1-E的算术和逻辑指令译码器设计 484

21.4 VBC1-E ALU的移位和旋转指令部分设计 485

21.5 VBC1-E的移位和旋转指令译码器设计 486

21.6 VBC1-E的JMP和JMPR电路设计 488

21.7 VBC1-E的JMP和JMPR指令译码器设计 489

习题 490

第22章 设计VBC1-E中手动载入时阻止程序执行的电路 493

22.1 引言 493

22.2 设计VBC1-E中修改手动载入的电路 493

22.3 修改手动载入时VBC1-E中的指令译码器 495

习题 495

第23章 设计VBC1-E的扩展指令存储器 496

23.1 引言 496

23.2 为VBC1-E修改指令存储器以增加扩展指令存储器 496

23.3 为VBC1-E修改运行程序计数器电路 500

23.4 为VBC1-E修改合理地址电路 501

23.5 为VBC1-E修改加载程序计数器电路 501

23.6 为VBC1-E修改JMPR电路 502

习题 502

第24章 设计VBC1-E的软件中断电路 504

24.1 引言 504

24.2 设计VBC1-E的运行程序计数器与选择电路的改进电路 504

24.3 设计VBC1-E的存储PCPLUS1的电路 509

24.4 VBC1-E的INT和IRET指令的指令译码器真值表 510

24.5 设计VBC1-E的INT和IRET指令的指令译码器 511

习题 513

第25章 完成VBC1-E的设计 516

25.1 引言 516

25.2 设计VBC1-E的去抖动单脉冲触发中断电路并修改RPC电路 516

25.3 设计VBC1-E的RETA信号的显示电路 521

25.4 设计VBC1-E的提供指令存储器的加载器功能的电路 525

习题 525

附录 528

附录A 实验案例 528

实验1A:门电路的设计与仿真 528

实验1B:完成设计流程 534

实验2:键盘编码系统的设计与测试 539

实验3:门电路检验系统的设计与测试 542

实验4:自定义十进制显示译码系统的设计与测试 546

实验5A:D锁存器与带CLR输入的D触发器的设计与测试 549

实验5B:8位寄存器与带PRE输入的D触发器的设计与测试 553

实验6A:简单计数系统的设计与测试——8位单热递增计数器 558

实验6B:简单计数器系统的设计与测试——两位格雷码计数器 562

实验6C:简单非常规计数系统的设计与测试——机器眼电路 565

实验6D:简单非常规计数系统的设计与测试——笑脸电路 569

实验7A:用平面设计方法进行简单错误检测系统的设计与测试 572

实验7B:用层次化设计方法进行简单4位加减系统的设计与测试 577

实验8:利用平面设计方法进行LUT系统的设计与测试 580

实验9A:用平面设计方法进行单热递增/递减计数系统的设计与测试 584

实验9B:用层次化设计方法进行十状态计数系统的设计与测试 589

实验10:VBC1系统EASY1(编辑器/汇编器/仿真器)的使用 593

实验11:用EASY1编写和仿真VBC1程序 598

实验12:VBC1的设计与测试(数据通路单元) 600

实验13:VBC1的设计与测试(指令存储单元) 605

实验14:VBC1的设计与测试(显示系统) 609

实验15:VBC1的设计与测试(指令译码器) 613

实验16:VBC1的设计与测试(算术逻辑单元) 617

实验17:VBC1的设计与测试(最终硬件设计) 621

实验17L:设计VBC1的指令存储器加载器 626

实验18:在VBC1上编写并运行汇编程序 632

实验19:VBC1-E的设计与测试(IN、OUT和未修改的指令) 635

实验20:VBC1-E的设计与测试(MOV和数据存储器指令) 640

实验21:VBC1-E的设计与测试(大部分指令) 645

实验22:VBC1-E的设计与测试(修改后的手动加载) 651

实验23:VBC1-E的设计与测试(添加扩展指令存储器) 654

实验24:VBC1-E的设计与测试(INT和IRET指令) 658

实验25:VBC1-E的设计与测试(最终硬件设计) 663

实验25L:设计VBC1-E的指令存储器加载器 668

附录B 用VHDL测试平台程序进行仿真 675

B.1 简介 675

B.2 例1:组合逻辑设计(工程AND_3) 675

B.3 例2:同步时序逻辑设计(工程DFF) 679

附录C FPGA管脚连接关系查询手册 683

C.1 BASYS 2开发板 683

C.2 NEXYS 2开发板 684

C.3 BASYS 2及NEXYS 2开发板上FPGA存储加载器的I/O引脚接口 685

C.4 FX2MIB(模块转接板):NEXYS 2外加电路板 686

附录D EASY1教程 687

D.1 简介 687

D.2 EASY1用户界面 687

D.3 EASY1界面布局 687

D.4 如何使用EASY1 689

D.5 例1:简单输入输出程序 689

D.6 例2:修改后能够一直执行的输入/输出程序 695

D.7 例3:简单状态机程序 696

D.8 例4:复杂状态机程序 696

D.9 例5:产生延时 698

D.10 用EASY1产生VBC1平台的机器码 699

附录E 将指令加载到存储器中的三种方法 701

E.1 手动载入存储器 701

E.2 在启动时初始化存储器内容 702

E.3 通过存储器加载程序载入存储器 703

索引 705