目 录 1
前言 1
第1章概述 1
1.1 PLD、CPLD及FPGA 1
1.2 CPLD/FPGA结构与原理 2
1.2.1基于乘积项(Product-Term)的CPLD结构 2
1.2.2乘积项结构CPLD的逻辑实现原理 4
1.2.4基于查找表(LUT)的FPGA的结构 5
1.2.3查找表(Look-Up-Table)的原理与结构 5
1.2.5查找表结构的FPGA逻辑实现原理 6
1.3数字系统的设计方法 8
1.3.1传统的硬件设计方法 8
1.3.2 EDA设计 8
1.4 PLD系统设计方式 9
1.4.1基于原理图的PLD设计 9
1.4.2基于HDL的PLD设计 10
1.4.3 HDL与原理图的混合设计 11
1.5.1硬件描述语言的分类 12
1.5硬件描述语言 12
1.5.2VHDL语言的特点 13
1.5.3 PLD开发工具 13
1.6可编程逻辑器件的最新发展趋势 13
1.7思考与练习 15
第2章 认识Protel DXP 16
2.1 Protel DXP的系统需求 16
2.2初识Protel DXP 16
2.2.1设置系统参数 17
2.2.2 Protel DXP文档组织 24
2.3面板的操控 25
2.4工具栏的摆放 27
2.4.1启动原理图编辑器 28
2.4.2摆放工具栏 29
2.5关闭文档及编辑窗口 30
2.6思考与练习 30
第3章基于原理图的FPGA设计 31
3.1 认识Protel DXP_Sch设计界面 31
3.2.1创建项目组文档 33
3.2创建FPGA设计项目 33
3.2.2 FPGA项目文档 34
3.2.3设置FPGA项目选项 36
3.3创建原理图源文件 37
3.3.1图纸创建及设置 37
3.3.2厂家选择及单元库的装载 38
3.3.3放置元件 39
3.3.4放置端口 40
3.3.5创建连接 42
3.4设计配置 45
3.5产生EDIF-FPGA网表 47
3.6后向标注FPGA项目 48
3.7后向标注PCB项目 49
3.8仿真分析 49
3.8.1创建测试平台文档 49
3.8.2仿真FPGA设计 52
3.9思考与练习 55
4.1 VHDL程序的设计单元 57
第4章VHDL语言程序结构 57
4.1.1实体的组织和设计 58
4.1.2实体说明 59
4.1.3构造体 64
4.2构造体的描述方式 66
4.2.1构造体的行为描述方式 66
4.2.2构造体的数据流描述方式 68
4.2.3构造体的结构描述方式 69
4.3构造体的子结构 71
4.3.1构造体的多模块描述 72
4.3.2构造体的多进程描述 75
4.3.3构造体的子程序描述 77
4.4库、包集合及包集合体 81
4.4.1库 81
4.4.2包集合 83
4.4.3包集合体 84
4.5配置 85
4.6在Protel DXP环境下编辑VHDL源文件 86
4.6.1创建源文件 87
4.7思考与练习 90
4.6.2设计仿真 90
第5章对象、数据类型及运算符 91
5.1信号的使用 91
5.1.1信号的初始化 92
5.1.2信号的使用 92
5.2变量的使用 94
5.3常数及常量的使用 95
5.3.1常数 95
5.3.2常量 96
5.4数据类型及子类型 97
5.4.1标量类型 98
5.4.2复合类型 101
5.4.3存取及不完全类型 104
5.4.4文件类型 105
5.5类型转换及类型标记 107
5.5.1显式类型转换 107
5.5.2类型转换函数 108
5.5.3多义常量类型 110
5.5.4决断和非决断类型 111
5.6了解VHDL的运算符 114
5.6.1逻辑运算符 116
5.6.2关系运算符 117
5.6.3 adding运算符 118
5.6.4符号运算符 119
5.6.5 multiplying运算符 119
5.6.6其他运算符 120
5.7思考与练习 122
6.1 IEEE 1164标准 123
第6章标准逻辑的使用 123
6.1.1 IEEE 1164标准的优点 124
6.1.2使用标准逻辑包 124
6.1.3 Std_logic_vector和Std_ulogic_vector 126
6.2类型转换及标准逻辑 126
6.3 IEEE 1164标准逻辑数据类型 128
6.3.1 Std_ulogic类型 128
6.3.2 Std_ulogic_vector类型 128
6.3.3 Std_logic类型 128
6.4.2数组逻辑运算符 129
6.4.1逻辑运算符 129
6.3Std_logic_vector类型 129
6.4标准逻辑运算符 129
6.5标准逻辑类型转换函数 130
6.5.1类型转换函数 130
6.5.2强制类型转换函数 130
6.6边沿检测及其他函数 131
6.6.1边沿检测函数 131
6.6.2其他函数 131
6.7 1076.3标准 131
6.7.1数值型数据类型的使用 132
6.7.2数值型标准运算符 133
6.7.3数字大小调整函数 136
6.7.4数值类型转换函数 136
6.7.5数值匹配函数 136
6.7.6数值变换函数 137
6.8思考与练习 137
第7章并发语句 138
7.1并发域 138
7.2信号代入语句 139
7.2.1并发信号代入语句 140
7.2.2条件信号代入语句 140
7.2.3选择信号代入语句 141
7.2.4条件与选择信号代入语句的对比 143
7.3并发过程调用语句 144
7.4生成语句 145
7.4.1 for-generate语句 145
7.4.2 if-generate语句 146
7.5并发进程语句 148
7.6元件例化语句 149
7.7端口及类属的映射语句 151
7.7.1端口映射语句 151
7.7.2类属映射语句 152
7.8延时说明子句 153
7.8.1惯性延时语句 154
7.8.2传输延时语句 155
7.9信号驱动 156
7.10思考与练习 157
8.1进程中的顺序语句 158
8.1.1用进程语句描述组合逻辑 158
第8章顺序语句 158
8.1.2用进程语句描述寄存器逻辑 160
8.1.3用进程语句描述状态机 161
8.1.4用进程描述测试激励 164
8.2子程序中的顺序语句 165
8.3信号及变量代入语句 166
8.4.1简单if语句结构 168
8.4 If语句 168
8.4.2 if语句的双路选择结构 169
8.4.3 if语句的多路选择结构 170
8.5 Case语句 174
8.6 Loop语句 176
8.6.1Forloop结构 176
8.6.2 While loop语句 178
8.6.3无限循环语句 179
8.6.4 Exit语句 180
8.6.5 Next语句 181
8.7 Wait语句 182
8.7.1 wait on结构 182
8.7.2 wait-until结构 183
8.7.3 waitfor结构 184
8.8 Assert语句 184
8.9 Null语句 185
8.10思考与练习 186
9.1.1一般数据的数值属性 187
第9章对象的属性描述 187
9.1数值类属性 187
9.1.2数组的数值属性 189
9.1.3块的数值属性 190
9.1.4实体的数值属性 191
9.2函数类属性 191
9.2.1数据类型的属性函数 191
9.2.2数组的属性函数 194
9.2.3信号的属性函数 195
9.3.1 S′delayed[(t)]属性 198
9.3信号类属性 198
9.3.2 S′stable[(t)]属性 200
9.3.3 S′quiet[(t)]属性 201
9.3.4 S′transaction[(t)]属性 201
9.4数据类型类属性 202
9.5区间类属性 202
9.6 自定义属性 203
9.7思考与练习 204
10.1默认配置 205
第10章配置 205
10.2元件建模与元件配置 206
10.2.1元件建模 207
10.2.2元件配置 211
10.3 Generic配置 212
10.4 Block的配置 215
10.5构造体的配置 217
10.6思考与练习 218
11.1 一个简单的测试台 219
第11章测试平台的描述 219
11.2用断言语句显示复杂字符串 224
11.3使用循环语句及多进程 226
11.4编写测试向量 227
11.5使用textI/O 231
11.5.1读出/写入表格数据 231
11.5.2非表格数据的读出 235
11.6使用Protel DXP测试平台程序模板 235
11.6.1创建FPGA项目文档及源文件 235
11.6.2为设计创建测试平台程序 237
11.7思考与练习 239
第12章VHDL与原理图的混合设计 244
12.1创建VHDL设计文档 245
12.2创建VHDL顶级原理图文档 249
12.3 FPGA项目设置 254
12.4设计编译 255
12.5创建VHDL测试平台程序 258
12.6设计仿真 261
12.7思考与练习 266
13.1.1 四2输入与非门(74HCT00) 267
13.1 门电路设计 267
第13章组合逻辑电路的VHDL设计 267
13.1.2四2输入或非门(74HCT32) 268
13.1.3 N输入与门 268
13.1.4异或门 269
13.2比较器的设计 271
13.2.1 4位二进制数大小比较器(74HC85) 271
13.2.2 8位相等比较器(74HCT688) 272
13.3.1 7段BCD码显示译码器(74LS48) 273
13.3译码器的设计 273
13.3.2双2-4译码器(74HCT139) 274
13.3.3 3-8线译码器(74LS138) 275
13.3.4地址译码器(M68008) 276
13.4数据选择器 277
13.5编码器 278
13.5.1 8-3优先编码器(74LS148) 278
13.5.2汉明纠错码编码器 279
13.6运算器 281
13.6.1半加器 281
13.6.2全加器 282
13.6.3 N位加法器 283
13.6.4全减器 284
13.6.5 4位加/减器 285
13.6.6求补运算器 286
13.7总线器件的设计 286
13.7.1 8位总线收发器(74HCT245) 286
13.8编码转换器 287
13.8.1 BCD码转换为二进制数 287
13.7.2三态总线 287
13.8.2 8421BCD码转换为余3码 289
13.8.3 BCD码转换为移位码 290
13.8.4 BCD码转换为格雷码 291
13.8.5二进制转换成BCD码 292
13.9奇偶校验位发生器设计 293
13.10思考与练习 294
第14章时序逻辑电路设计 295
14.1触发器的设计 295
14.1.1 D触发器设计 295
14.1.2 JK触发器设计 298
14.2计数器设计 299
14.2.1同步计数器设计 299
14.2.2异步计数器设计 310
14.3寄存器设计 311
14.3.1锁存寄存器设计 311
14.3.2移位寄存器 312
14.4思考与练习 317
15.1.1反馈信号 318
15.1 反馈机制 318
第15章有限状态机(FSMs) 318
15.1.2反馈变量 319
15.2 Moore状态机 320
15.2.1输出寄存器 321
15.2.2输入寄存器 322
15.3 Mealy状态机 322
15.4状态机的设计步骤 323
15.5状态机设计举例 326
15.5.1 Mealy状态机设计 326
15.5.2 Moore状态机设计 331
15.6思考与练习 334
第16章CPU及外围器件设计 335
16.1存储器设计 335
16.1.1只读存储器(ROM) 335
16.1.2随机读写存储器(RAM) 337
16.2模数及数模转换器 340
16.2.1模数转换器 340
16.3简单微处理器设计 343
16.2.2数模转换器 343
16.3.1 CPU指令定义包集合 344
16.3.2运算函数包集合 344
16.3.3 256字节ROM设计 347
16.3.4 16字节RAM设计 348
16.3.5 8位CPU模型设计 349
16.3.6微处理器系统结构描述 352
16.4可编程并行接口8255A的设计 353
16.5思考与练习 357
参考文献 358