
FPGA作为一种高新技术,由于其特殊的结构,可以重复编程,开发周期短,因此越来越受到电子爱好者的青睐,应用也逐渐普及到各行各业。因此,越来越多的学生或工程师希望踏入FPGA的大门,掌握这项技术。网上各种开发板和培训班多如牛毛,仿佛告诉你不懂FPGA就OUT了。那么玩FPGA必须具备哪些基础知识呢?如何学习FPGA?让我们慢慢来。
(一)了解什么是FPGA
既然要玩FPGA,那么对我们来说第一件也是最重要的事情当然是了解FPGA是什么。Fpga(现场可编程门阵列)是指现场可编程门阵列。农民看到编程这个词就笑。只是编程,这是我们的强项。等一下,这个编程不是另一个编程。我们必须区分FPGA编程和软件编程。
在软件编程中,处理器会将语言逐一翻译成各种控制信号来控制内部电路完成一项操作或运算。那么FPGA的编程是如何实现的呢?不管Altera FPGA和Xlinix FPGA有什么区别,基本单元都差不多,都是由真值表和D触发器组成。改变真值表的值就改变了逻辑函数,然后结合D触发器就实现了任何时序逻辑。
所以我们对FPGA的编程其实就是修改这些真值表和连接关系,让它们形成一个特殊的真值表来实现特定的功能。这和软件编程一步一步运行程序有本质区别。想玩FPGA,必须了解FPGA的内部工作原理,学会如何利用这些单元实现复杂的逻辑设计。
(二)正确理解HDL语言
Hdl(硬件描述语言),硬件描述语言。从名字就可以看出,HDL语言是一种“描述”语言,与C语言有本质区别。正确理解描述的含义,对学好HDL语言很有帮助。HDL语言只是以文本的形式描述硬件电路。在阅读HDL程序时,我们应该能够在脑海中反映出一个完整的硬件电路结构。
另一方面,在写HDL语言之前,我们对要实现的电路有一个清晰的概念。所以HDL语言只是描述我们头脑中特定回路的工具。玩弄FPGA的不是语言,而是逻辑电路设计。不用担心我该学VHDL还是Verilog,哪个语言更容易学。如果学习FPGA的重点是学习语言和记忆一些语法,那自然是不对的。
语言在日常使用中会越来越熟练,不需要很长时间就能学会。当然,一份好的参考资料,随时都可以轻松查阅,很有帮助。
(3)数字电路基础
说到底,FPGA只是一堆数字逻辑组合起来实现特定功能。所以数字电路的基础知识是根本。如果你连触发器、组合电路、时序电路、竞争、毛刺等基本概念都搞不清楚的话。那玩FPGA只能是白日做梦。一定要学好数字电路基础课,数字电路基础都烂熟于心。
为进一步发展打下坚实的基础。当我们能够从抽象的算法中提取出算法的结构,然后分解成具体的模块,并通过硬件电路来实现,那么我们就从新手级别步入了老鸟级别。
(四)硬件设计思路
这应该说是重中之重。学习FPGA,必须要有硬件设计的思路。比如在编写软件时,一秒钟可以实现5次乘法,如果系统要求一秒钟50次乘法呢?我们会尽量优化代码,让代码更简洁高效,或者提高系统频率,让系统运行更快。但在FPGA中,我们不这么想。
在FPGA中实现一个乘法器是不够的,我就实现两个和三个,满足系统要求;我可以设计装配线;串行操作模式不够快。我可以先将串行转换为并行,然后并行处理.只要FPGA的资源足够,我就可以充分利用资源满足系统要求。因为我手里拿的是一堆硬件资源,我要做的就是把它们组合成一个有用的电路。
评价硬件描述语言编写质量的标准与其他软件编程语言完全不同。所以一定要摒弃软件编程的一些固有观念,学会用硬件解决问题。时刻提醒自己,你是在设计一个电路,而不是一行空代码。对于很多做软件编程的人来说,这是一个很难跨越的坎。
学了半天FPGA,还是不知道用if_else语句还是case语句。但我们无法透过这些语句的表面看到它们所代表的具体回路。只有确立了硬件设计思路,才能更深入的学习FPGA。
如何学习FPGA?
笔者经常在FPGA相关技术论坛和FPGA技术交流QQ群回答初学者在学习过程中遇到的技术问题,发现很多初学者都是抱着浮躁的心态学习FPGA,总是急于求成。
在学习FPGA设计技术的过程中,虽然一开始学习的热情很高,但真正坚持到“学会”的人很少。除了学生个人持之以恒之外,还有一个重要原因就是没有很好的学习教程指导,没有正确学习方法的指导。
FPGA的原始学习门槛远高于单片机,缺乏动手系列教程资料和正确的学习方法,使得初学者学习FPGA的难度更大。很多初学者因为找不到入门的方法,逐渐失去了学习FPGA的兴趣和信心。
该系列教程主要分为FPGA开发工具的使用、verilog语言学习、FPGA底层硬件解释、SDRAM读写控制、数字信号处理;
FPGA开发工具的使用:以XILINX开发工具Vivado和GOWIN开发工具为例,讲解FPGA开发流程,帮助没有FPGA开发经验的工程师入门FPGA开发。因为要掌握FPGA的技术,光有扎实的理论知识是远远不够的。买一块FPGA开发板,多加练习,显得尤为重要。
Verilog语言学习:主要是让初学者掌握硬件描述语言,结合具体的项目实例,掌握verilog在从门级到开关级的各种抽象设计层次的数字系统建模中的应用。通过本教程学习,主要是让初学者掌握verilog语言。
FPGA底层硬件解读:结合XILINX、GOWIN等器件的对比分析,让学生在理解硬件底层结构时,掌握实际FPGA的特点和异同。
SDRAM读写控制:原厂例子讲解FPGA,掌握读写操作和写命令。同时,引导学生完成基于高云半导体“小蜜蜂”系列的SDRAM读写控制的熟练操作。
数字信号处理:结合实践深入浅出地讨论了数字信号处理的基本概念和应用。包括表示、定点、截断等方法。
FPGA入门简单,但很难掌握。想入门就买开发板,按套路走。事实上,在你打下坚实的基础之前,你是到不了马平川的。









