编者按:几年前,我写了一篇“如何学习ARM和FPGA的文章”,虽然流传甚广,但回头来看还是有很多的不足之处,为什么呢?因为今天的社会环境已经发生了很大的变化,人们对于学习的渴望与八十年代比较相去甚远。与此同时今天的人们更具有个性化和自由的思想,因此文化的传播和价值观的传递更需要注重人文关怀。
人们时常说,现在的大学生不好学,真的是这样吗?或许,每个人的需求不一样,他不一定非要学什么做什么,每个人可以按照自己的喜好与意愿去发展,这就是今天与过去的不同。事实上,学习仅仅是培养一个人成才的训练过程,他可能没有掌握技术的细节,但他已经掌握了常用的方法,这同样是我这些年来思考的问题之一。
基于上述原因,我在教学与图书创作过程中,将更多的精力用于研究“他们”为什么学不会?“他们”与“我们”相比为什么没有那么大的兴趣?而不是埋怨“他们”不好学。事实上,学生不知道为什么要学习FPGA?学习FPGA到底有什么用途?其次,到底只需要学习那些内容,学生就能够达到举一反三的效果,而不是一味按照图书作者的意愿或老师的意愿或人云亦云的错误思想,将什么都灌输给学生,最后反而将学生灌晕了,倒了胃口食之无味弃之可惜,这是人们很少研究的问题。第三,我们应该如何设计教学实践案例,不仅要达到引起学生产生兴趣的目的,而且要做到课程之间知识点的相互融合(比如,同样一个示例,在不同的课程中,采用多种方法来实现),这也是我们在教学中很少研究和关注的问题。
《可编程逻辑电路设计基础教程》前言
一、创作起因
其实两年前就已经写好了这本书,为什么没有提交给出版社呢?我们一直在问自己一个问题,面对已经面世的上百本图书,如果再出版一本岂不多余吗?
尽管很多大学都开设了这门课,且花大价钱投入了很多的教学实验设备,但我们也一直在苦思冥想,为什么熟练掌握FPAG的学生却寥寥无几呢?
虽然我们公司有专业的SoC可编程逻辑电路设计团队,但依然感到培养一个合格的开发人员仍然有一定的难度。到底问题出在哪里呢?哪些内容才是培养一个合格开发工程师必须掌握的重要知识点,这个问题成了我们研究的重点。每年我们都在修改培养方案,终于发现精选教学内容和合理设置实践案例才是关键所在。
二、教学内容的组织与安排
为了提高学生的动手能力,我们为《新编计算机基础教程》编写了一本浅显易懂的电子版配套图书《项目驱动——数字电路实践与制作基础教程(1)》,采用step-to-step的方法引导初学者,学习如何设计和制作一台基于80C51单片机的微型计算机的方法和过程,最终达到深入了解计算机体系结构的目的。
与此同时,我们在此基础上加入了更多的基础理论,写作了电子版《项目驱动——数字电路实践与制作基础教程(2)》,用作《电子技术基础(数字部分)》配套的实验指导。
针对这门课程更进一步地,我们写作了电子版《项目驱动——可编程逻辑电路设计与实践基础教程》,其特点是将其中的每一个集成电路全部用FPGA来实现,接着将微型计算机的地址、数据输入和显示电路、SRAM以及读写控制电路全部用一个FPGA来实现,构成一台完整的微型计算机。最后在单片FPGA中设计一台完整的基于80C51软核的微型计算机,这就是本书的全部构思。
实践证明,对于初学者来说,经过上述训练之后,已经完全具备了成为一个合格开发工程师的必要基础和能力。
1. 本书的第一部分内容
第1章——FPGA基础知识。本章主要是介绍FPGA的基本知识,了解什么是FPGA?它与数字电路之间有什么关系?我们用怎样的方式将FPGA与数字电路进行有机的结合?同时了解FPGA的发展历程,有助于从源头上认识FPGA,并结合实用的角度介绍FPGA的使用流程和FPGA的特点。
第2章——FPGA基本结构。了解了什么是FPGA之后,读者一定想要知道FPGA的内部结构到底是怎样的。因此本章内容主要是从FPGA最基本的单元结构出发,详细介绍FPGA的结构特点,其中包括开关结构、逻辑单元、布线资源和I/O结构等,了解这些内容可以帮助大家对FPGA的结构有一个全新的认识。
第3章——FPGA片内外设。目前的FPGA除了逻辑单元以外,往往还带有非常多的片内外设,如同MCU一样,这些外设让FPGA的单芯片实现成为可能,同时可以实现更多的功能。因此本章介绍FPGA内部常用的外设,其中包括SRAM、FIFO、PLL、模拟电路等等,从而了解FPGA为什么如此强大的原因。
2. 本书的第二部分内容
第4章——Verilog基础语法。如果要用FPGA来做设计,学会FPGA的设计语言非常地关键,如同使用MCU一样,学习C语言是基础。本章介绍了国内最为流行、使用人数最多的FPGA编程语言——Verilog的基本语法,从基本概念到强大的系统任务都逐一详细介绍,为后面的FPGA设计打下坚实的基础。
3. 本书的第三部分内容
第5章——常用IP设计。从本章开始,注重FPGA的实战练习,学习FPGA的设计应用,将理论在实践中得以验证。因此,本章将从FPGA独特的IP设计开始,学习如何利用FPGA来设计一些常用的IP,例如:I2C、UART、SPI、PWM等,甚至可以用FPGA来实现CPU,自定义特有的MCU。
第6章——典型应用设计。本章从应用的角度出发,结合工程设计中常用的案例,介绍如何实现一些典型的FPGA设计,从而达到学以致用的目的。本章从大量的实例中精心挑选了五个例子作为教学,分别是频率计、DDS、产品版本号控制器、伪随机序列、并行总线,详细介绍了其原理和实现方式,并留有一定的空间让读者自行补全设计内容,锻炼动手能力。
第7章——DIY创新应用设计。创新是我们进步的阶梯,是我们与众不同的途径之一,也是我们超越对手的方式之一。因此,本章注重发挥大家的动手和创新能力,更进一步地将FPGA的应用发挥得淋漓尽致。读者可以通过矩阵键盘管理设计、开平方算法设计、同步FIFO设计锻炼大家DIY创新设计的思维与能力。
面向对象
本书是为电子信息工程、电气自动化、自动化、电子科学与技术、测控技术、通信、医学电子、机电一体化等专业编写的。
结束语
本书由江西理工大学周立功教授、广州周立功单片机科技有限公司刘银华与北京航空航天大学夏宇闻教授历时3年的构思与实践创作而成,是“高等院校电类专业新概念教材.卓越工程师教育”丛书的第四册,由周立功担任本书主编,负责全书内容的组织策划、构思设计和最终的审核定稿。