电子说
今天在群里有工程师问我,怎么才叫学会了FPGA,怎么才叫学好了FPGA?我相信有很多朋友有类似的问题,因为在多数人的潜意识里,FPGA是非常高深莫测的技术,能够玩转FPGA的都是大神级的人物。
其实呢,这是一种误解,你可以把FPGA当做是数字世界的乐高(Lego),它由几种最基本的单元(每种单元数量有很多很多)让你组成自己想实现的功能。能玩好乐高就一定能玩好FPGA。乐高玩得好不好,取决于什么因素?
通过一些最基本的积木块可以拼出任何复杂的物体
要通过积木构建一辆车,首先要知道都有哪些积木零件可以用,其次要知道这些部件之间的逻辑关系
学习使用FPGA的道理跟玩乐高没啥区别,同样是:
当然你也需要一些工具来帮助你实现,比如一套从头到尾执行的设计环境(FPGA厂商提供的编译工具 - Lattice的Diamond、Intel的Quartus、Xilinx的Vivado),一种连接你的逻辑思维和机器操作之间的沟通工具 - 设计语言(原理图、Verilog、VHDL等等)。
下面我们以小脚丫FPGA为例,看看我们要学好FPGA必须掌握哪些知识。
首先FPGA是什么?
四个字母Field(现场) Programmable(可编程) Gate(逻辑门) Array(阵列)凸显了大量的 逻辑门单元 ,这些逻辑单元是可以在任何地方随时进行组装的,这是不是跟乐高玩具一样?逻辑门单元是构成一切数字逻辑器件的基本单元,在数字世界里你想做任何事情、实现任何功能,都可以通过逻辑门的堆砌来实现,也就是说FPGA在数字领域里几乎无所不能,因此n年前我国的某一个FPGA公司在向国务院领导描述其产品的时候称他们做的是“万能芯片”(用这种通俗易懂的说法忽悠国家的经费)。万能有些夸张,但FPGA高度灵活,理论上来讲,只要有足够的资源(积木数量足够多)几乎可以实现数字域的任何功能,受限的是速度、功耗以及系统的成本。
一个典型的FPGA架构及其内部主要功能单元
FPGA里面有什么?
我们以基于Lattice的FPGA的小脚丫看一下该FPGA内部都有哪些资源以及相应资源的数量,如下是该器件LCMXO2-4000HC-4MG132C内部的功能框图:
Lattice版本小脚丫FPGA芯片内部的主要功能单元
该器件的具体资源参数如下:
FPGA能做什么?
知道了FPGA内部的资源,也就心里有数它能做什么了。就像一座城堡,内部居民的生活丰富多彩,无论他们以何种形式进行组合,他们所做的事情取决于这些居民以及他们拥有的资源,其生活模式被城堡的设计者所定义(城市管理、文化等等等)。
但从宏观上来看这个城堡起到的功能很大程度上取决于这个城堡同外部世界的连接,没有这些同系统的连接,城堡内部的任何行为对于系统来讲都没有意义。FPGA可以是系统的一个重要组成部分,但它仅仅是一个部分而已,就像一个城堡一样,它只有同外部进行连接并执行系统通过这些连接给其分配的功能才有意义。
因此FPGA通过其I/O管脚连接外面的世界,我们使用的小脚丫芯片有132个管脚,除去电源、地之外还有104个管脚可以用来同外界进行联系。
)
做为一款让FPGA初学者学习的平台,首先要满足初学者基于掌握的数字电路知识进行做项目的定位,先要体验组合逻辑、时序逻辑、状态转换等数字电路的基础概念,而体验这些概念就需要一些必要的输入(按键、开关)和必要的输出(通过单色LED灯、三色灯、数码管进行各种方式的显示),综合考虑板子的尺寸以及初学者随时随地能练习的要求,我们经过取舍后选定了如下的板上功能及连接:
通过FPGA的IO管脚连接的板上的功能
板载资源:
板子上的这些功能说明
当然作为一个灵活的学习模块,我们还要给用户留下一定的灵活扩展的空间,让用户以各种方式来连接其计划连接的其它器件,在这个模块的周边我们留出了36个信号管脚(4个电源、地除外)给用户,用户可以灵活配置、应用这些管脚,让自己的系统充分利用这些管脚让FPGA内部的逻辑资源执行分配的任务。
全部0条评论
快来发表一下你的评论吧 !