第1章 绪论 1
1.1 EDA技术 1
1.1.1 EDA设计的技术优势 2
1.1.2 EDA设计流 6
1.2可编程逻辑器件及其开发环境 7
1.3知识产权核及片上系统 9
习题 9
第2章 可编程逻辑器件 10
2.1可编程逻辑阵列PLA 10
2.2可编程阵列逻辑器件PLD 11
2.3通用逻辑阵列器件GAL 12
2.4 CPLD结构 13
2.4.1逻辑阵列块 13
2.4.2逻辑单元 14
2.4.3用户Flash存储块 15
2.4.4输入输出口 15
2.5 FPGA结构 16
2.5.1嵌入式乘法器 16
2.5.2输入输出口 17
2.5.3时钟网络和锁相环逻辑块 18
2.5.4高速差分接口 19
2.5.5存储器块 19
2.6配置与编程 21
2.6.1在系统编程接口 22
2.6.2设计安全 25
习题 26
第3章 Verilog HDL语言 27
3.1 Verilog HDL的历史及特点 27
3.2标识符与关键字 28
3.3注释 29
3.4格式 30
3.5数据类型 31
3.5.1值集合 31
3.5.2矢量与标量 31
3.5.3数组 32
3.5.4参数 32
3.5.5字符串 33
3.5.6网络类型 34
3.5.7变量类型 37
3.6赋值 38
3.6.1连续赋值 39
3.6.2过程赋值 41
3.7表达式 42
3.7.1操作数 42
3.7.2操作符 50
3.8强度 53
3.8.1电荷强度 53
3.8.2驱动强度 54
3.9编译指令 61
3.9.1宏定义 62
3.9.2条件定义 62
3.9.3默认类型 62
3.9.4文件包含 62
3.9.5复位编译器指令 63
3.9.6时间单位 63
3.10系统任务和系统函数 63
3.10.1信息显示 64
3.10.2跟踪显示与触发显示 65
3.10.3仿真时间函数 65
3.10.4停止仿真任务 65
3.10.5仿真随机函数 66
习题 66
第4章 层次结构 68
4.1系统及结构要素 68
4.2设计方法 69
4.3模块及模块抽象 74
4.3.1模块 74
4.3.2模块抽象 75
4.4例化 75
4.4.1模块例化 75
4.4.2原语例化 77
4.4.3生成例化与等价验证 81
习题 84
第5章 行为建模 86
5.1过程语句 86
5.1.1 initial语句 86
5.1.2 always语句 87
5.1.3阻塞式过程赋值 88
5.1.4非阻塞式过程赋值 90
5.2延时控制 93
5.3条件语句 95
5.4条件运算符 97
5.5循环语句 98
5.5.1 repeat语句建模 98
5.5.2 for语句建模 99
5.5.3 while语句建模 99
5.5.4 forever语句建模 100
5.5.5异常情况下退出循环 100
5.6多路分支语句 101
5.7任务和函数 104
5.7.1任务 104
5.7.2函数 107
5.7.3函数和任务的比较 108
5.7.4共享任务和函数 111
5.8行为建模实例 113
5.8.1交通灯演示模型 113
5.8.2伺服电机调速控制器 115
习题 119
第6章 并行建模 121
6.1事件控制 121
6.1.1边沿触发事件控制 122
6.1.2电平敏感事件控制 122
6.2等待控制 123
6.3顺序控制 123
6.4并行控制 125
6.5并行建模实例 127
习题 131
第7章 逻辑设计 132
7.1组合逻辑设计 132
7.1.1多路开关 132
7.1.2译码器 134
7.1.3编码器 137
7.1.4比较器 138
7.1.5加法器和减法器 139
7.1.6乘法器 143
7.1.7初等函数与通用查找表 148
7.2时序逻辑设计 149
7.2.1锁存器和触发器 149
7.2.2有限状态机 154
7.2.3计数器 157
习题 163
第8章 用户定义原语建模 164
8.1定义用户定义原语 164
8.1.1用户定义原语的基本形式 164
8.1.2用户定义原语的表符号 165
8.1.3组合逻辑UDP 166
8.1.4时序逻辑UDP 166
8.1.5时序UDP的初始化 168
8.2用户定义原语建模 169
习题 171
第9章 设计校验 172
9.1设计校验概述 172
9.1.1校验标准 172
9.1.2等价验证 173
9.1.3模块检查 173
9.1.4校验重用 174
9.1.5校验方法 174
9.2功能校验 174
9.2.1测试平台 174
9.2.2代码封装 176
9.2.3数据抽象 177
9.2.4竞争 179
9.3时序校验 182
9.3.1延时类型 182
9.3.2路径延时 183
9.3.3时序检查 187
9.3.4标准延时格式文件与反向标注 195
习题 200
第10章 QuartusⅡ开发环境 204
10.1工程设计流程 204
10.1.1 Quartus Ⅱ设计流程 204
10.1.2 Quartus Ⅱ及EDA工具设计流程 208
10.2设计输入 209
10.2.1创建工程 210
10.2.2块编辑器 210
10.2.3文本编辑器 212
10.2.4状态机编辑器 216
10.2.5参数化模块库 217
10.2.6约束输入 220
10.3综合 222
10.4布局与布线 226
10.4.1分析适配结果 227
10.4.2优化适配 229
10.5时序分析 231
10.5.1 TimeQuest时序分析器 232
10.5.2标准时序分析器 233
10.5.3时序分析流程 237
10.6时序逼近 238
10.6.1平面布局图或器件布局图 239
10.6.2时序优化向导 240
10.6.3使用网表优化实现时序逼近 241
10.6.4时序逼近设计方法 242
10.7功耗分析 243
10.7.1功耗分析器工具 243
10.7.2早期功耗估算 244
10.8编程与配置 244
10.8.1编程文件与编程设置 244
10.8.2编程模式与编程电缆联机 246
10.8.3编程操作 249
10.9形式验证 251
10.9.1形式验证工具 252
10.9.2形式验证工具设置 252
10.10系统集成工具 252
10.11系统调试工具 257
习题 258
第11章 ModelSim仿真工具 260
11.1 ModelSim SE简介 260
11.1.1 ModelSim SE的主窗口及仿真流程 260
11.1.2创建工程和工作库 262
11.1.3编译仿真文件 264
11.1.4加载顶层设计模块 265
11.1.5执行仿真 266
11.1.6调试 267
11.2库的创建和运用 271
11.3波形分析 272
11.3.1仿真波形窗口介绍 272
11.3.2缩放波形 273
11.3.3时标 273
11.3.4输出波形文件 274
11.4时序仿真 275
11.5例化存储器 280
11.6用Profiiler进行性能分析 288
11.7代码覆盖率 293
11.8值变转储文件 299
11.8.1转储系统任务 299
11.8.2四态转储文件 300
11.8.3扩展转储文件 302
11.8.4操作VCD文件 303
习题 310
第12章 基于Nios Ⅱ的嵌入式系统设计 311
12.1 Nios Ⅱ处理器 312
12.1.1算术逻辑单元 313
12.1.2寄存器 313
12.1.3异常处理 318
12.1.4存储器和输入输出口 319
12.1.5运行模式及存储器管理 320
12.1.6地址空间和存储器分区 321
12.1.7调试和复位信号 322
12.1.8 JTAG调试模块 322
12.1.9指令集 322
12.1.10处理器的内核类型选择 332
12.1.11例化Nios Ⅱ处理器 333
12.2 Avalon接口 334
12.3嵌入式系统设计流 335
12.4软件设计 336
12.4.1配置BSP工程和应用工程 339
12.4.2硬件抽象层API设计 341
12.4.3优化设计 352
12.4.4系统启动配置 354
习题 355
参考文献 357
索引 359