第1章 概述 1
1.1 EDA技术及其特征 1
1.1.1 EDA技术基本概念 1
1.1.2 EDA技术实现目标 2
1.1.3 EDA技术的特征 3
1.1.4 EDA的基本工具 4
1.2 EDA技术的发展历程 5
1.3 FPGA与CPLD简介 7
1.3.1 引言 7
1.3.2 早期的PLD 8
1.3.3 CPLD简介 9
1.3.4 FPGA简介 11
1.3.5 其他类型的FPGA和PLD 14
1.3.6 选择CPLD还是FPGA? 14
1.4 EDA技术中几个重要的概念 14
第2章 常用的FPGA与嵌入式系统器件 16
2.1 PLD厂商概述 16
2.2 Altera公司器件 17
2.2.1 主流PLD产品 17
2.2.2 主流FPGA产品 17
2.2.3 FPGA配置芯片 19
2.2.4 NoisⅡ软处理器 20
2.3 Xilinx公司器件 20
2.3.1 主流PLD产品 20
2.3.2 主流FPGA产品 21
2.4 Lattice公司器件 24
2.4.1 主流PLD产品 24
2.4.2 主流FPGA产品 25
2.4.3 数模混合产品 25
2.5 Actel公司器件 26
2.6 QuickLogic公司器件 27
第3章 硬件描述教程 28
3.1 HDL的现状与发展 28
3.1.1 HDL发展状况 28
3.1.2 几种代表性的HDL语言 29
3.1.3 各种HDL的体系结构和设计方法 30
3.1.4 目前可取可行的策略和方式 32
3.1.5 国内发展的战略选择 33
3.2 Verilog语言 33
3.2.1 Verilog语言要素 33
3.2.2 Verilog表达式 40
3.2.3 模块 44
3.2.4 延迟 46
3.2.5 数据流描述方式 46
3.2.6 结构化描述方式 47
3.2.7 混合设计描述方式 48
3.2.8 设计模拟 49
3.2.9 行为描述方式 52
3.3 VHDL 59
3.3.1 VHDL的基本结构 59
3.3.2 VHDL的设计实体 59
3.3.3 VHDL中的对象和数据类型 62
3.3.4 行为描述 65
3.3.5 结构描述 74
3.4 Verilog与VHDL比较 78
3.5 HDL编程风格 79
3.5.1 文件头和修订列表 79
3.5.2 命名规则 80
3.5.3 HDL编码指导 83
3.5.4 Verilog编码指导原则 83
3.5.5 VHDL代码指导原则 84
第4章 FPGA设计工具介绍 87
4.1 Quartus Ⅱ综合IDE的使用 87
4.1.1 顶层VHDL文件设计 88
4.1.2 正弦信号数据ROM定制 92
4.2 DSP Builder设计向导 103
4.2.1 可控正弦信号发生器设计 103
4.2.2 MATLAB窗口使用嵌入式逻辑分析仪SignalTapⅡ(自动设计流程) 113
4.3 使用ModelSim进行设计仿真 118
4.3.1 启动ModelSim 119
4.3.2 建立仿真工程项目 119
4.3.3 编辑仿真 121
4.3.4 装载仿真模块和仿真库 121
4.3.5 执行仿真 122
第5章 FPGA与嵌入式系统 125
5.1 嵌入式系统的定义与发展历史 125
5.1.1现代计算机的技术发展 125
5.1.2 嵌入式系统的定义与特点 126
5.1.3 嵌入式系统的独立发展道路 127
5.1.4 嵌入式系统的两种应用模式 128
5.2 嵌入式系统的基本特征 129
5.2.1 嵌入式系统工业是不可垄断的高度分散的工业 129
5.2.2 嵌入式系统具有的产品特征 129
5.2.3 嵌入式系统软件的特征 130
5.2.4 嵌入式系统需要专用开发工具和环境 130
5.2.5 嵌入式系统软件需要RTOS开发平台 130
5.3 嵌入式系统的基本组成 130
5.4 嵌入式处理器的分类 132
5.4.1 嵌入式微处理器 132
5.4.2 嵌入式微控制器 133
5.4.3 嵌入式DSP处理器 133
5.4.4 嵌入式片上系统 133
5.4.5 RTOS 134
5.5FPGA在嵌入式系统中的地位和作用 135
5.5.1 在FPGA中实现RISC处理器内核 135
5.5.2 在FPGA中实现高速DSP算法 135
5.5.3 在FPGA中嵌入ASIC模块 136
5.5.4在FPGA中实现数字IP Core 136
5.6 基于FPGA的嵌入式系统设计方法 137
第6章 IP内核复用与SoC和SOPC 138
6.1 IP内核基本概念与现状 138
6.1.1 IP内核基本概念 138
6.1.2 IP内核产业的三类主体 139
6.1.3 设计复用相关的组织 139
6.1.4 IP内核的现状 140
6.2 SoC单片系统 141
6.2.1 CoreConnect总线 143
6.2.2 AMBA总线 145
6.2.3 Wishbone总线 147
6.3 SOPC及其技术 149
6.3.1 基于FPGA嵌入IP硬核的SOPC系统 149
6.3.2 基于FPGA嵌入IP软核的SOPC系统 149
6.3.3 基于HardCopy技术的SOPC系统 150
6.4 基于FPGA和SOPC技术的处理器 151
6.5 基于FPGA和SOPC技术的DSP 153
6.6 FFT MegaCore核函数 156
6.6.1 FFT MegaCore核函数简介 156
6.6.2 FFT MegaCore核函数的应用 161
6.6.3 FFT MegaCore核函数规范 172
第7章 简化RISC CPU设计 179
7.1 RISC CPU结构 179
7.1.1 时钟发生器 179
7.1.2 指令寄存器 183
7.1.3 累加器 184
7.1.4 算术运算器 185
7.1.5 数据控制器 186
7.1.6 地址多路器 187
7.1.7 程序计数器 187
7.1.8 状态控制器 188
7.1.9 外围模块 194
7.2 RISC CPU寻址方式和指令系统 196
7.3 RISC CPU模块的调试 196
7.3.1 RISCCPU模块的前仿真 196
7.3.2 RISC CPU模块的综合 211
7.3.3 RISC CPU模块的优化与布局布线 212
第8章 Nios嵌入式系统开发向导 213
8.1Nios软硬件开发流程 213
8.2Nios硬件开发流程 214
8.2.1 新建SOPC设计项目 214
8.2.2 基本SOPC系统介绍 216
8.2.3 加入Nios CPU Core 216
8.2.4 加入boot-monitor-rom 217
8.2.5 加入UART 218
8.2.6 加入Timer 218
8.2.7 加入Button PIO 218
8.2.8 加入Led PIO 218
8.2.9 加入数码管PIO 218
8.2.10 加入Avalon三态总线桥 219
8.2.11 加入SRAM 219
8.2.12 加入Flash 220
8.2.13 Flash ROM锁定地址 220
8.2.14 调整所有存储器的地址 221
8.3 SOPC整体系统生成 222
8.4 Nios硬件系统生成 223
8.4.1 设置编译SOPC系统 225
8.4.2 下载完成 225
8.5 MicroC/OS-Ⅱ在Nios上的移植 227
8.5.1 MicroC/OS-Ⅱ简介 227
8.5.2 MicroC/OS-Ⅱ的移植 228
8.5.3 Nios处理器 228
8.5.4 移植工作 229
8.5.5 内核测试 230
8.6 Nios软核处理器的uClinux的移植 231
8.6.1引导程序U-boot的移植 231
8.6.2 uClinux移植 233
第9章 Nios Ⅱ与嵌入式操作系统移植 235
9.1 Nios Ⅱ简介 235
9.1.1 Nios Ⅱ处理器的特点 235
9.1.2 Nios Ⅱ处理器的优点 240
9.1.3 Nios Ⅱ处理器的系统组成 240
9.2 Nios Ⅱ快速入门 241
9.2.1 建立Nios Ⅱ系统 241
9.2.2 编写程序 251
9.2.3 编译整个项目 253
9.2.4 下载与测试 253
9.3 在Nios Ⅱ上运行MicroC/OS-Ⅱ程序 254
9.3.1 软硬件要求 254
9.3.2 软硬件设计文件 255
9.3.3 MicroC/OS-Ⅱ工程设计 255
第10章 PicoBlaze处理器IP Core的原理与应用 261
10.1 概述 261
10.2 PicoBlaze原理与结构分析 262
10.3 PicoBlaze的指令集和调试器 263
10.4 PicoBlaze的应用系统设计 264
第11章 FPGA在嵌入式系统应用中的配置 266
11.1 配置的基本概念 266
11.1.1 FPGA配置的必要性 266
11.1.2 FPGA配置种类 266
11.1.3 FPGA器件的配置方式和配置文件 267
11.2 PS配置 267
11.2.1 PS配置基本概念 267
11.2.2 配置电路结构和原理 268
11.2.3 软件设计 269
11.3 采用单片机的配置方法 270
11.3.1 PLD的配置原理 271
11.3.2 用WINBOND78E58单片机配置PLD 271
11.4 基于EPM7128的主动和被动配置 274
11.4.1 时钟驱动模块设计 275
11.4.2 地址指针模块 277
11.4.3 移位寄存器模块 279
11.4.4 数据计数器模块 281
11.4.5 复位计数器模块 283
11.4.6 配置控制器模块 285
第12章 嵌入式系统FPGA同步设计 294
12.1 建立时间与保持时间 294
12.2 如何提高同步系统中的工作时钟 297
12.2.1 通过改变走线的方式来减小延时 297
12.2.2 通过拆分组合逻辑的方法来减小延时 297
12.2.3 不同时钟域之间的同步 302
12.3 FPGA内部时钟处理的常见设计方法 305
12.3.1 倍频 305
12.3.2 分频 307
12.3.3 Xilinx器件、Altera器件对差分时钟输入的不同处理 308
12.4 案例一:异步FIFO的设计 309
12.4.1 异步FIFO的设计原理 309
12.4.2 采用格雷码进行异步FIFO的设计 310
12.4.3 异步FIFO的结构组成 312
12.4.4 异步FIFO的HDL实现 312
12.4.5 异步FIFO的仿真与RTL级电路结构 315
12.5 案例二:交织器与反交织器的设计 316
12.5.1 交织的基本思想 316
12.5.2 矩阵转置法交织 316
12.5.3 采用FSM设计交织器 317
12.5.4 影响交织器时钟因素的探讨 318
12.5.5 交织器的HDL实现 318
12.5.6 交织器的仿真与RTL电路结构 323
参考文献 326