本书是基于课堂教学和全国大学生电子设计竞赛的特点和需要进行编写的。通过项目简明而系统地介绍了FPGA/CPLD应用技术的相关内容。第一篇包括FPGA/CPLD的基本结构、开发流程及开发环境,硬件描述语言(VHDL)的基本知识。第二篇侧重应用开发,共分为9个项目,依据CDIO理念,把相关知识融入项目中学习。项目4~项目9为常用逻辑单元电路,训练读者基本的VHDL程序设计能力,掌握VHDL程序结构和VHDL并行语句与顺序语句。项目10~项目12为综合实用型项目,旨在培养读者的VHDL程序设计能力,有助于读者掌握VHDL层次化设计。 本书在取材和编排上力求理论联系实际、由浅入深、循序渐进。每个项目后面附有小结和习题,便于读者学习和教学使用。
本书内容精练、实践性和针对性强、实例丰富,既可作为电子信息类专业学生参加电子设计竞赛、技能大赛的培训教材,也可作为高等专科和职业院校电子类专业学生的教材与参考书。
EDA(电子设计自动化)技术,是以可编程逻辑器件为设计载体、以硬件描述语言为系统逻辑描述的主要表达方式,以计算机为工作平台,以EDA工具软件为开发环境,自动完成电子系统设计的全过程。EDA技术已经发展成为电子系统设计者完成电子系统设计的重要工具。
本教材适用于高职高专电类专业和本科非电子信息类专业。全书分为两篇,第一篇介绍FPGA/CPLD的基础知识,共分为3个项目。分别讲解了FPGA/CPLD的基本结构、VHDL语言的基本知识和FPGA/CPLD的开发环境。基础知识以“必需、够用”为原则。第二篇侧重应用开发,共分为9个项目,依据CDIO理念,把相关知识融入项目中学习。所选项目难度由易到难,项目4~项目9为小型简单项目,训练学生基本的VHDL程序设计能力,掌握VHDL程序结构和VHDL并行语句与顺序语句。项目10~项目12为综合实用型项目,训练学生复杂VHDL程序设计能力,掌握VHDL层次化设计,综合项目基本覆盖课程的主要内容。通过本课程的学习,学生能够熟练使用EDA开发工具,具备初步的VHDL程序设计能力,能够利用FPGA/CPLD器件完成电子产品的开发。同时,作为现代企业所需要的高技能人才的社会能力,也能够通过该门课程的学习得以提升。
本教材的主要特色有以下几点。
(1) 体现基于CDIO的项目化教学的工程教育理念。以项目为主线让学生在做项目的过程中学习必要的专业基础知识,基础知识以“必需、够用”为原则,加强学生学习能力的培养,注重培养学生应用所学知识解决实际问题的能力,指导学生循序渐进地完成好一个个精选的、适合于多数学生的工程项目,使学生在做项目的过程中提高项目构思、设计、实现、运行的能力,然后再运用这种能力去解决新的工程实际问题,从而提高适应工作环境和技术发展变化的能力。
(2) 行业企业工程技术人员参与教材编写。聘请行业企业工程技术人员参与教材编写,可得到更多的先进技术的支持,使教材内容更具有新意; 获得更多的来源于工程实际的案例资源; 把他们丰富的工程实践经验引入教材,使教材更贴近于行业企业的应用实际。
本书紧密结合高职高专学生的实际,选材精炼、突出实践、讲究实用,不仅可以作为高职高专类学生的教材,还可作为高职高专学生全国电子设计竞赛的培训教材,对电子信息类专业的工程技术人员也有较高的参考价值。
山东凯文科技职业学院韩晓敏老师担任本教材主编,负责全书的统稿工作,并编写了项目4~项目7; 山东省计算中心助理研究员张鹏担任副主编,编写了项目8~项目12及3.3节; 江苏理工学院刘海妹老师担任副主编,编写了项目1、项目2、3.1、3.2节; 山东奥太电气有限公司张洪亮工程师担任参编,在项目的程序调试和硬件制作方面做了大量工作。
山东大学张有志教授、张平慧教授为本书的完成提供了大量支持、帮助,在此表示感谢。
由于信息技术发展迅速,其应用领域不断扩展,限于编者的常识水平和知识范围,错误之处在所难免,敬请广大读者批评指正。
编者2014.4
第一篇基 础 知 识
项目1了解FPGA/CPLD
1.1FPGA/CPLD的基本结构
1.1.1FPGA的基本结构
1.1.2CPLD的基本结构
1.1.3FPGA和CPLD的比较
1.2Altera的FPGA/CPLD
1.2.1Altera的FPGA
1.2.2Altera的CPLD
1.2.3FPGA/CPLD选型
1.3FPGA/CPLD的开发流程
小结
课后练习
项目2学习VHDL语言的基本知识
2.1VHDL程序结构
2.1.1简单VHDL程序举例
2.1.2实体
2.1.3结构体
2.1.4库和程序包
2.1.5配置
2.2VHDL的语言要素
2.2.1语法规则
2.2.2标识符
2.2.3数据类型
2.2.4运算操作符
2.3VHDL基本语句
2.3.1顺序语句
2.3.2并行语句
2.3.3子程序
小结
课后练习
项目3熟悉FPGA/CPLD的开发环境
3.1常用开发软件
3.2Quartus Ⅱ的使用
3.2.1Quartus Ⅱ的用户界面
3.2.2设计输入
3.2.3设计编译
3.2.4设计仿真
3.2.5器件编程
3.3DE2开发板
3.3.1DE2开发板简介
3.3.2DE2开发板的使用
小结
课后练习
第二篇应 用 开 发
项目4门电路设计
4.1基本逻辑门的设计
4.1.1设计要求
4.1.2构思——方案选择
4.1.3设计——VHDL源程序设计
4.1.4实现——编辑、编译
4.1.5运行——仿真、编程测试
4.2三态门的设计
4.2.1设计要求
4.2.2构思——方案选择
4.2.3设计——VHDL源程序设计
4.2.4实现——编辑、编译
4.2.5运行——仿真、编程测试
小结
课后习题
项目5编码器设计
5.1普通编码器的设计
5.1.1设计要求
5.1.2构思——方案选择
5.1.3设计——VHDL源程序设计
5.1.4实现——编辑、编译
5.1.5运行——仿真、编程测试
5.2优先编码器的设计
5.2.1设计要求
5.2.2构思——方案选择
5.2.3设计——VHDL源程序设计
5.2.4实现——编辑、编译
5.2.5运行——仿真、编程测试及结果分析
小结
课后练习
项目6译码器设计
6.13?8译码器的设计
6.1.1设计要求
6.1.2构思——方案选择
6.1.3设计——VHDL源程序设计
6.1.4实现——编辑、编译
6.1.5运行——仿真、编程测试
6.2二?十进制BCD译码器的设计
6.2.1设计要求
6.2.2构思——方案选择
6.2.3设计——VHDL源程序设计
6.2.4实现——编辑、编译
6.2.5运行——仿真、编程测试
小结
课后练习
项目7触发器设计
7.1同步RS触发器的设计
7.1.1设计要求
7.1.2构思——方案选择
7.1.3设计——VHDL源程序设计
7.1.4实现——编辑、编译
7.1.5运行——仿真、编程测试
7.2同步复位D触发器的设计
7.2.1设计要求
7.2.2构思——方案选择
7.2.3设计——VHDL源程序设计
7.2.4实现——编辑、编译
7.2.5运行——仿真、编程测试
小结
课后练习
项目8计数器设计
8.1同步计数器设计
8.1.1设计要求
8.1.2预备知识
8.1.3构思——方案选择
8.1.4设计——编写VHDL源程序
8.1.5实现——编译与仿真
8.1.6运行——编程测试与结果分析
8.2异步计数器设计
8.2.1设计要求
8.2.2预备知识
8.2.3构思——方案选择
8.2.4设计——编写VHDL源程序
8.2.5实现——编译与仿真
8.2.6运行——编程测试与结果分析
小结
课后练习
项目9分频器设计
9.1占空比与分频系数可调的分频器设计
9.1.1设计要求
9.1.2预备知识
9.1.3构思——方案选择
9.1.4设计——编写VHDL源程序
9.1.5实现——编译与仿真
9.1.6运行——编程测试与结果分析
9.2占空比为50%的奇数分频器设计
9.2.1设计要求
9.2.2构思——提出设计方案
9.2.3设计——VHDL源程序设计
9.2.4实现——编译与仿真
9.2.5运行——编程测试与结果分析
小结
课后练习
项目10电梯控制器
10.1设计要求
10.2必备知识
10.2.1状态机的基本概念
10.2.2状态机的VHDL设计
10.3项目实施
10.3.1构思——总体方案设计
10.3.2设计——编写各模块的VHDL源程序
10.3.3实现——编译与仿真
10.3.4运行——编程测试与结果分析
小结
项目11交通灯控制器
11.1设计要求
11.2构思——总体方案确定
11.3设计——VHDL编程
11.3.1分频模块设计
11.3.2控制模块设计
11.3.3显示模块设计
11.3.4顶层设计
11.4实现——硬件编程
11.5运行——测试结果分析
小结
项目12简单微处理器设计与实现
12.1设计要求
12.2预备知识
12.2.1微处理器的硬件系统
12.2.2微处理器的指令系统
12.3构思——设计思路与方案
12.4设计——VHDL源程序设计
12.5实现——编译与仿真
12.6运行——编程测试与结果分析
小结
参考文献