目录 1
序言 1
第1章 VHDL设计概念 1
1.1 数字电路设计简介 1
1.2 ASIC和FPGA组件比较 2
1.2.1 ASIC 2
1.2.2 FPGA 4
1.3 FPGA和ASIC设计流程简介 5
1.4 数字电路设计所需考虑的因素 7
2.1.1 ModelSim简介 10
2.1 功能仿真软件ModelSim 10
第2章 EDA软件介绍 10
2.1.2 建立一个新的项目 11
2.1.3 基本VHDL仿真 14
2.1.4 除错 16
2.1.5 Finding names and values 19
2.1.6 使用Wave窗口 20
2.1.7 性能分析器仿真 22
2.1.8 Code Coverage仿真 25
2.1.9 ModelSim常用指令集 28
2.2 综合工具Synplify 30
2.2.1 Synplify简介 30
2.2.2 Synplify的特色 31
2.2.3 Synplify FPGA设计流程 32
2.2.4 安装事项 32
2.2.5 Synplify用户接口 33
2.2.6 设定源文件 33
2.2.7 检查源文件 35
2.2.8 RTL View 35
2.2.9 Synplify Altera Flow 37
2.3 Altera MaxplusⅡ EDA Tool 42
2.3.1 MaxplusⅡ版本介绍及安装方式 43
2.3.2 设计输入 53
2.3.3 功能仿真 57
2.3.4 平面布局 64
2.4 结论 70
第3章 初探HDL语言 71
3.1 HDL的好处 71
3.2 VHDL和Verilog的比较 71
3.3 如何选择电路的结构 72
3.4 HDL程序的组成 73
3.5 HDL程序结构 77
第4章 基本VHDL要素 79
4.1 标识符 79
4.2 数据对象 80
4.3.1 标量数据类型 82
4.3 数据类型 82
4.3.2 复合数据类型 84
4.3.3 数组数据类型 84
4.3.4 记录数据类型 85
4.4 运算操作符 85
第5章 VHDL行为模型 91
5.1 简介 91
5.2 实体声明 91
5.3 结构体 92
5.4 进程语句 93
5.5 变量赋值语句 94
5.7 Wait语句 95
5.6 信号赋值语句 95
5.8 if语句 97
5.9 Case语句 100
5.10 Null语句 104
5.11 Loop语句 104
5.12 Exit语句 109
5.13 Next语句 109
5.14 Assertion语句 110
5.15 Report语句 111
5.16 信号赋值语句进阶探讨 112
5.16.1 惯性延迟模型 112
5.17 建立信号波形 113
5.16.2 传输延迟模型 113
5.18 多进程 114
第6章 数据流模型 117
6.1 简介 117
6.2 并发性信号赋值语句 117
6.3 并发性与顺序性信号赋值 118
6.4 探讨Delta delay 119
6.5 条件信号赋值语句 121
6.6 选择信号赋值语句 122
6.7 Unaffected值 123
6.8 块语句 124
7.2 简单的范例 127
7.1 简介 127
第7章 结构化模型 127
7.3 元件声明 128
7.4 元件实例化 130
7.5 层次式结构 131
7.6 其他范例 134
第8章 VHDL中的属性和配置 142
8.1 简介 142
8.2 数值属性 142
8.2.1 数值类型属性 143
8.2.2 数值数组属性 143
8.3 函数属性 144
8.3.1 函数类型属性 144
8.2.3 数值块属性 144
8.3.2 函数数组属性 145
8.3.3 函数信号属性 147
8.4 类型属性 148
8.5 范围属性 148
8.6 信号属性 149
第9章 层次式模块化设计 151
9.1 简介 151
9.2 类属和配置 151
9.2.1 类属 151
9.2.2 配置 153
9.3 生成语句 162
第10章 子程序及包 167
10.1 简介 167
10.2 子程序 167
10.2.1 函数 167
10.2.2 过程 170
10.3 运算符重载 171
10.4 包 175
10.4.1 包声明 175
10.4.2 包主体 177
11.2 多选器设计 180
11.1 简介 180
第11章 组合逻辑电路设计 180
11.3 编码器设计 183
11.4 优先级编码器设计 187
11.5 译码器设计 189
11.6 含有使能的译码器设计 192
11.7 四位地址译码器设计 194
11.8 使用Generic N to M位的二进制译码器 197
11.9 比较运算符 200
11.10 算术逻辑单元设计 202
12.1 简介 205
12.2 D型触发器 205
第12章 时序逻辑电路设计 205
12.3 触发器应用电路 212
12.3.1 延迟电路 212
12.3.2 微分器电路设计 214
12.4 计数器设计 216
12.5 同步计数器电路设计 220
12.6 分频电路设计 220
第13章 状态机设计 227
13.1 状态机简介 227
13.2 Moore状态机 227
13.3 Melay状态机 231
14.1 简介 234
14.2 如何写测试平台 234
第14章 测试平台 234
14.3 波形产生器 235
14.3.1 重复性和非重复的测试样本 235
14.3.2 使用向量的方式 238
14.4 整数转换成time数据类型 240
14.5 将结果保存为文本文件 240
14.6 从文本文件中读取向量 242
15.2 初探Coding Guideline 245
15.3 基本的代码注意事项 245
15.3.1 一般的命名方式 245
15.1 简介 245
第15章 RTL Coding Guideline 245
15.3.2 结构名称命名规则 246
15.3.3 标题文件的注意事项 246
15.3.4 注释 247
15.3.5 一行的长度 248
15.3.6 缩进 248
15.3.7 Port的顺序 248
15.3.8 端口映射和类属映射 249
15.3.9 实体、结构和配置 250
15.3.10 使用函数 250
15.3.11 使用Loops和Arrays 250
15.3.12 使用有意义的标记名称 251
15.4.2 不要使用实际的数值 252
15.4.1 使用IEEE标准类型 252
15.4 可移植性 252
15.4.3 包 253
15.4.4 转换(VHDL至Verilog) 253
15.5 有关Clock和Reset的准则 253
15.5.1 避免使用混合频率触发 253
15.5.2 避免对频率信号做处理 254
15.5.3 避免内部产生频率信号 254
15.5.4 门时钟和低功率设计 255
15.5.5 避免内部产生Reset信号 255
15.6 Coding for Synthesis 256
15.6.1 触发器的写法 256
15.6.2 避免锁存器 257
15.6.3 避免使用组合逻辑的反馈 262
15.6.4 完整的敏感表 262
15.6.5 信号和变量赋值 264
15.6.6 Case语句与if-then-else语句 264
15.6.7 状态机的编程风格 265
15.6.8 Partitioning for Synthesis 267
第16章 高级设计范例 269
16.1 数字闹铃电路设计 269
16.2 最大公因子电路设计及验证 278
16.2.1 设计要求 278
16.2.2 设计概念 278
16.2.3 测试平台的设计 285