本书系统介绍EDA与FPGA设计技术,主要内容包括EDA设计流程与典型设计工具、FPGA/CPLD器件、Verilog硬件描述语言等。本书以Quartus II、Synplify Pro/Synplify软件为平台,以Verilog-1995和Verilog-2001为语言标准,以可综合的设计为重点,以大量经过验证的数字设计实例为依据,系统地阐述了EDA设计方法与设计技术,深入讨论了设计优化的问题。
本书的特点是:着眼于实用,紧密联系教学实际,实例丰富。全书深入浅出,概念清晰,语言流畅。本书可作为电子、通信、信息、测控、电路与系统等专业高年级本科生和研究生的教学用书,也可供从事电路设计和系统开发的工程技术人员阅读参考。
样章试读
目录
- 第1章 EDA技术概述
1.1 EDA技术及其发展
1.2 Top-down设计与IP核设计
1.2.1 Top-down设计
1.2.2 Bottom-up设计
1.2.3 IP复用技术与SOC
1.3 EDA设计的流程
1.3.1 输入
1.3.2 综合
1.3.3 适配
1.3.4 仿真
1.3.5 编程
1.4 常用的EDA软件工具
1.5 EDA技术的发展趋势
习题
第2章 PLD器件
2.1 概述
2.2 PLD的分类
2.2.1 按集成度分类
2.2.2 按编程特点分类
2.2.3 按结构特点分类
2.3 PLD的基本原理与结构
2.4 低密度PLD的原理与结构
2.5 CPLD的原理与结构
2.5.1 宏单元结构
2.5.2 典型CPLD的结构
2.6 FPGA的原理与结构
2.6.1 查找表结构
2.6.2 典型FPGA的结构
2.7 PLD器件的编程元件
2.7.1 熔丝型开关
2.7.2 反熔丝型开关
2.7.3 浮栅编程元件
2.7.4 基于SRAM的编程元件
2.8 边界扫描测试技术
2.9 在系统编程
2.10 FPGA/CPLD器件概述
2.10.1 Lattice的FPGA/CPLD
2.10.2 Xilinx的FPGA/CPLD
2.10.3 Altera的FPGA/CPLD
2.11 PLD的发展趋势
习题
第3章 典型FPGA/CPLD的结构与配置
3.1 Stratix高端FPGA系列
3.1.1 Stratix器件
3.1.2 StratixII器件
3.2 Cyclone低成本FPGA系列
3.2.1 Cyclone器件
3.2.2 CycloneII器件
3.3 ACEX1K器件
3.4 典型CPLD器件
3.4.1 MAXII器件
3.4.2 MAX7000器件
3.5 FPGA/CPLD的配置
3.5.1 CPLD器件的配置
3.5.2 FPGA器件的配置
习题
第4章 QuartusII集成开发工具
4.1 QuartusII原理图设计
4.1.1 半加器原理图输入
4.1.2 半加器编译与仿真
4.1.3 全加器设计与仿真
4.2 QuartusII文本设计
4.2.1 创建工程文件
4.2.2 编译与仿真
4.3 QuartusII的优化设置
4.3.1 Setting设置
4.3.2 分析与综合设置
4.3.3 优化布局布线
4.3.4 设计可靠性检查
4.4 QuartusII的时序分析
4.4.1 时序设置与分析
4.4.2 时序逼近
4.5 SynplifyPro/Synplify综合器
习题
第5章 Verilog设计初步
5.1 Verilog简介
5.2 Verilog设计举例
5.3 Verilog模块的结构
5.4 Verilog语言要素
5.5 常量
5.6 数据类型
5.6.1 net型
5.6.2 variable型
5.7 参数
5.8 向量
5.9 运算符
习题
第6章 Verilog设计进阶
6.1 过程语句
6.1.1 always过程语句
6.1.2 initial过程语句
6.2 块语句
6.2.1 串行块begin-end
6.2.2 并行块fork-join
6.3 赋值语句
6.3.1 持续赋值与过程赋值
6.3.2 阻塞赋值与非阻塞赋值
6.4 条件语句
6.4.1 if-else语句
6.4.2 case语句
6.5 循环语句
6.5.1 for语句
6.5.2 其他循环语句
6.6 编译指示语句
6.7 任务与函数
6.7.1 任务
6.7.2 函数
6.8 顺序执行与并发执行
习题
第7章 Verilog设计的层次与风格
7.1 Verilog设计的层次
7.2 结构描述
7.2.1 Verilog内置门元件
7.2.2 门级结构描述
7.3 行为描述
7.4 数据流描述
7.5 不同描述风格的设计
7.6 基本组合电路设计
7.6.1 门电路
7.6.2 编译码器
7.6.3 数据选择器
7.6.4 其他组合电路
7.7 基本时序电路设计
7.7.1 触发器
7.7.2 锁存器与寄存器
7.7.3 计数器与串并转换器
7.7.4 简易微处理器
习题
第8章 宏功能模块设计
8.1 Megafunctions库
8.1.1 算术运算模块库
8.1.2 逻辑门库
8.1.3 I/O模块库
8.1.4 存储器模块库
8.2 Maxplus2库
8.3 Primitives库
8.3.1 缓冲器库
8.3.2 引脚库
8.3.3 存储单元库
8.3.4 逻辑门库
8.3.5 其他模块
习题
第9章 Verilog数字电路设计
9.1 加法器
9.1.1 级联加法器
9.1.2 并行加法器
9.1.3 超前进位加法器
9.1.4 流水线加法器
9.2 乘法器
9.2.1 并行乘法器
9.2.2 移位相加乘法器
9.2.3 查找表乘法器
9.2.4 加法树乘法器
9.3 乘累加器
9.4 奇数分频与小数分频
9.4.1 奇数分频
9.4.2 半整数分频与小数分频
9.5 数字跑表
9.6 数字频率计
9.7 交通灯控制器
9.8 乐曲演奏电路
9.9 自动售饮料机
9.10 实用多功能数字钟
习题
第10章 设计的优化
10.1 设计的可综合性
10.2 流水线设计技术
10.3 资源共享
10.4 有限状态机设计
10.4.1 基于状态机的设计
10.4.2 基于状态机的设计要点
10.5 多层次结构电路的设计
10.6 进程
10.7 阻塞赋值与非阻塞赋值
10.8 FPGA设计中毛刺的消除
习题
第11章 仿真
11.1 系统任务与系统函数
11.2 用户自定义元件
11.2.1 组合电路UDP元件
11.2.2 时序逻辑UDP元件
11.3 延时模型的表示
11.3.1 时间标尺定义′timescale
11.3.2 延时的表示与延时定义块
11.4 数字电路的仿真
11.4.1 测试平台
11.4.2 组合电路的仿真
11.4.3 时序电路的仿真
习题
第12章 Verilog语言的发展
12.1 语法结构的扩展与增强
12.1.1 模块声明的扩展
12.1.2 对符号和运算符的扩展
12.1.3 对向量部分选择的扩展
12.1.4 矩阵的扩展
12.1.5 表达式确定的数据位宽的改动
12.1.6 变量声明赋值
12.1.7 generate语句
12.1.8 任务和函数中增加关键字automatic
12.1.9 常数函数
12.1.10 模块实例化时的参数重定义
12.1.11 新增条件编译语句
12.2 设计管理
12.3 定时检查
12.4 系统任务和系统函数的扩展
12.4.1 系统任务和系统函数的调整
12.4.2 新增系统任务和系统函数
12.5 VCD文件的扩展
12.6 综合
12.6.1 硬件单元建模
12.6.2 属性
12.7 编程语言接口
习题
第13章 数字设计实例
13.1 直接数字频率合成器
13.1.1 DDS原理与顶层设计
13.1.2 ROM初始化数据文件生成
13.1.3 宏功能模块的定制
13.1.4 使用嵌入式逻辑分析仪进行在线测试
13.2 基于FPGA实现点阵式液晶显示控制
13.2.1 GDM12864的结构及指令
13.2.2 顶层设计及状态分配
13.2.3 源代码及仿真
13.3 等精度频率计
13.3.1 等精度频率测量原理
13.3.2 源代码及仿真
13.4 UART异步串行接口
13.4.1 UART工作原理
13.4.2 源代码及仿真
13.5 VGA彩条信号发生器
13.5.1 VGA显示原理
13.5.2 源代码及仿真
13.6 VGA图像显示控制器
13.7 FIR数字滤波器
13.8 数字相关器
13.9 信道编译码器
13.10 CRC校验码
习题
附录A 有关术语与缩略语
附录B VerilogHDL(IEEEStd1364-1995)关键字
附录C VerilogHDL(IEEEStd1364-2001)关键字
附录D QuartusII支持的Verilog结构
附录E SynplifyPro/Synplify可综合的Verilog结构
附录F EDA实验系统简介
参考文献