第一章 概述 1
1.1 可编程ASIC 1
1.1.1 可编程ASIC与可编程器件 2
1.1.2 编程技术 3
1.1.3 可编程数字ASIC 5
1.2 可编程模拟ASIC 6
1.2.1 ASIC设计概述 7
1.2.2 用可编程逻辑器件设计ASIC 8
1.2.3 用半定制电路设计ASIC 9
1.2.4 大规模集成电路的设计技术 11
1.3 SOC与IP核复用技术 12
1.3.1 何为嵌入式SOC IC 12
1.3.2 IP知识产权模块(IP Core)的定义 13
1.3.3 IP模块的种类与应用 13
1.3.4 系统芯片和IP复用 16
1.4 SOC系统芯片与SOC设计技术 18
1.4.1 SOC系统集成芯片 18
1.4.2 SOC芯片的设计模式 18
1.4.3 利用FPGA实现片上系统 20
1.4.4 SOC芯片设计的技术优势 22
1.4.5 片上系统设计方法的发展趋势 23
1.5 电子系统设计的新技术 24
1.5.1 FPSOC:下一代FPGA 24
1.5.2 电子设计最优化(EDO) 26
1.5.3 在线可“重构”技术 27
1.5.4 数字/模拟系统混合设计 28
1.5.5 硬件/软件的协同设计 30
习题 32
第二章 可编程ASIC器件 33
2.1 PLD器件 33
2.1.1 PROM结构 33
2.1.2 FPLA结构 34
2.1.3 PAL和GAL结构 35
2.2 CPLD 36
2.2.1 CPLD结构 36
2.2.2 典型CPLD器件 38
2.3 FPGA 41
2.3.1 FPGA的结构 42
2.3.2 SRAM查找表类型 43
2.3.3 反熔丝多路开关类型 47
2.4 可编程ASIC的基本资源 49
2.4.1 功能单元 50
2.4.2 输入输出接口 51
2.4.3 布线资源 56
2.4.4 片内RAM 59
2.4.5 系统级FPGA的特点 60
2.4.6 平台级FPGA的特点 63
2.5 边界扫描技术 68
2.6 可编程ASIC的编程元件 71
2.6.1 熔丝型开关 71
2.6.2 反熔丝开关 72
2.6.3 浮栅编程技术 73
2.6.4 静态存储器(SRAM) 77
2.7 CPLD和FPGA的比较和选用 81
2.7.1 结构比较 81
2.7.2 逻辑块之间的互连结构不同 81
2.7.3 性能的选用 81
习题 83
第三章 硬件设计描述语言VHDL 84
3.1 概述 84
3.1.1 VHDL的主要优点 85
3.1.2 采用VHDL设计综合的过程 86
3.2 VHDL程序基本结构 87
3.2.1 VHDL语言设计的基本单元 87
3.2.2 结构体的子结构描述 91
3.2.3 包集合、库及配置 97
3.3 VHDL语言的数据类型 102
3.3.1 VHDL语言的对象及其分类 103
3.3.2 VHDL语言的数据类型 107
3.4 VHDL语言的运算操作符 115
3.4.1 逻辑运算符 115
3.4.2 算术运算符 115
3.4.3 关系运算符 116
3.4.4 并置运算符 116
3.4.5 移位运算符 116
3.5 VHDL最基本的描述语句 118
3.5.1 顺序描述语句 118
3.5.2 并行描述语(Concurrent Statements) 130
3.5.3 其他语句和有关规定的说明 135
3.6 预定义属性(ATTRIBUTE)描述 135
3.6.1 值类属性 136
3.6.2 函数类属性 137
3.6.3 信号类属性 139
3.7 VHDL语言结构体的描述风格 142
3.7.1 结构体的行为描述方式 142
3.7.2 结构体的数据流描述方式 146
3.7.3 结构体的结构描述方式 150
习题 155
第四章 可编程ASIC的设计 159
4.1 数字系统综合概述 159
4.2 综合技术基础 161
4.2.1 基本符号 161
4.2.2 图形 162
4.2.3 组合最优化(Combinatorial Optimization) 166
4.2.4 布尔网络 170
4.2.5 可处理和不可处理问题 173
4.3 数字系统的高级综合 178
4.3.1 概述 178
4.3.2 高级综合 179
4.2.3 数据通道的综合 185
4.3.4 控制器 188
4.4 可编程ASIC的逻辑综合 190
4.4.1 逻辑综合概述 190
4.4.2 两级逻辑最小化 192
4.4.3 基于查找表结构的多级逻辑优化 197
4.4.4 立方体归并(cube-paching) 203
4.4.5 工艺映射 204
4.4.6 基于MUX结构的多级逻辑优化 205
4.5 状态机设计 208
4.5.1 二进制编码 209
4.5.2 一个有效的编码 209
4.6 FPGA的布局和布线 214
4.6.1 布局 215
4.6.2 布线 218
4.6.3 布通率和布线资源 223
4.6.4 网线延时 224
习题 226
第五章 FPGA/CPLD芯片结构及应用 227
5.1 概述 227
5.2 XC9500系列CPLD结构 228
5.2.1 功能块(FB) 229
5.2.2 宏单元 229
5.2.3 乘积项分配器 231
5.2.4 FastCONNECT开关矩阵 232
5.2.5 I/O块(IOB) 233
5.2.6 持续性 234
5.2.7 设计保密性 235
5.2.8 低功率模式 235
5.2.9 加电特性 235
5.2.10 XC9500时序模型 236
5.3 XC4000E/Spartan系列FPGA结构 239
5.3.1 可配置逻辑功能块(CLB) 241
5.3.2 输入/输出功能块(IOB) 244
5.3.3 布线通道 249
5.3.4 分布RAM 252
5.3.5 快速进位逻辑 256
5.3.6 全局信号 258
5.3.7 片内振荡器 260
5.3.8 沿边宽译码器(仅XC4000E) 260
5.4 Virtex/Spartan Ⅱ系列FPGA结构 261
5.4.1 Vittex/Spartan Ⅱ系列特点 261
5.4.2 结构描述 262
5.4.3 Virtex的DSP性能 270
5.5 边界扫描电路 286
5.5.1 边界扫描硬件描述 287
5.5.2 Virtex的边界扫描 291
5.5.3 CPLD系统内编程 292
5.6 FPGA配置 293
5.6.1 配置模式 293
5.6.2 设置CCLK频率 298
5.6.3 数据流格式 298
5.6.4 配置和读回的CRC校验 299
5.6.5 配置顺序 300
5.6.6 FPGA的可编程配置PROM和编程 304
5.6.7 PROM由CPLD接口配置FPGA 306
习题 312
第六章 面向仿真和综合的VHDL设计描述 313
6.1 面向仿真的VHDL设计描述 313
6.1.1 仿真的概念 313
6.1.2 仿真的层次 314
6.1.3 仿真方法 316
6.1.4 仿真系统的组成及仿真过程 318
6.2 面向综合的VHDL设计描述 320
6.2.1 综合的三个层次 320
6.2.2 逻辑综合 321
6.2.3 面向综合的VHDL设计描述的特点 323
6.3 组合逻辑电路设计 326
6.3.1 用VHDL描述的译码器 327
6.3.2 用VHDL描述的编码器 330
6.3.3 用VHDL描述的比较器 331
6.3.4 用VHDL描述的移位器 334
6.3.5 用VHDL描述的半加器和全加器 335
6.3.6 用VHDL描述的乘法器 336
6.3.7 其他组合逻辑设计举例 337
6.4 时序电路设计 341
6.4.1 时序电路VHDL程序的一般形式 341
6.4.2 信号的特征及特殊问题 344
6.4.3 用VHDL描述的锁存器 347
6.4.4 用VHDL描述的D触发器(DFF) 348
6.4.5 用VHDL描述的计数器 352
6.4.6 D触发器应用设计举例 354
6.4.7 用VHDL描述的存储器 359
6.5 有限状态机的设计 367
6.5.1 在FPGA中设计的有限状态机 367
6.5.2 有限状态机的描述 369
6.5.3 状态机应用设计举例 375
6.6 同步设计 381
6.6.1 保证系统的时钟信号不产生相位偏移 381
6.6.2 准稳态的产生和消除 382
6.6.3 毛刺的产生和消除 383
6.6.4 利用预定标技术来提高计数器性能 385
6.6.5 所设计电路的工作速度和性能估计 386
6.6.6 设计中要注意的一些问题 387
6.7 系统级综合 388
6.7.1 VHDL软件包 388
6.7.2 VHDL函数 389
6.7.3 VHDL过程 390
6.8 系统仿真与仿真测试程序设计 396
6.8.1 系统仿真概述 396
6.8.2 仿真测试程序设计 398
6.8.3 测试激励设计方式 402
6.9 FPGA在数字信号处理领域的应用简介 406
习题 407
第七章 可编程ASIC的设计与实现 411
7.1 FPGA/CPLD设计工具Xilinx ISE 5.x 413
7.1.1 Xilinx ISE 5.x特点介绍 413
7.1.2 设计输入 415
7.1.3 仿真行为模型(功能仿真) 420
7.1.4 设计实现 424
7.1.5 硬件验证(加载位流文件) 427
7.1.6 由Core Generator产生模块 430
7.1.7 块RAM及设计举例 431
7.1.8 利用软件包设计 439
7.2 FPGA/CPLD设计工具Mentor Graphics FPGA Advantage 442
7.3 设计仿真 465
7.4 设计实现 467
习题 469
第八章 可编程ASIC应用设计实例 470
VHDL数字逻辑电路设计实验 470
实验一:双向计数器 471
实验二:八位序列检测器 472
实验三:奇偶校验器 476
实验四:用计数器进行时钟分频 478
实验五:VGA接口设计 480
实验六:PS/2键盘接口设计 483
实验七:简单的空调有限状态机 485
实验八:8位乘法器 486
实验九:模可变16位加法计数器 491
实验十:数字频率计设计 492
实验十一:秒表设计 496
实验十二:A/D采样控制器设计 497
实验十三:单片机与FPGA/CPLD接口逻辑设计 501
实验十四:用FPGA实现DDS 504
实验十五:512×8位的Block RAM结构的FIFO 507
实验十六:基于FPGA和DSP的高速数据采集系统 517
实验十七:从模式PCI总线接口VHDL设计 524
附录 可编程ASIC实验开发系统简介 528
附录1 电子科技大学可编程ASIC实验开发系统简介 528
附录2 清华大学可编程ASIC实验开发系统实物图 529
参考文献 530