网站内链怎么坐锚文本,加盟类网站怎么做,做融资的网站有哪些,外贸圈的尖子生转自#xff1a;FPGA到底是啥#xff1f; - 知乎
怎么才叫学会了FPGA#xff0c;怎么才叫学好了FPGA#xff1f;我相信有很多朋友有类似的问题#xff0c;因为在多数人的潜意识里#xff0c;FPGA是非常高深莫测的技术#xff0c;能够玩转FPGA的都是大神级的人物。
其实…转自FPGA到底是啥 - 知乎
怎么才叫学会了FPGA怎么才叫学好了FPGA我相信有很多朋友有类似的问题因为在多数人的潜意识里FPGA是非常高深莫测的技术能够玩转FPGA的都是大神级的人物。
其实呢这是一种误解你可以把FPGA当做是数字世界的乐高Lego它由几种最基本的单元每种单元数量有很多很多让你组成自己想实现的功能。能玩好乐高就一定能玩好FPGA。乐高玩得好不好取决于什么因素 通过一些最基本的积木块可以拼出任何复杂的物体
第一要素 - 先要了解供你玩的“乐高”套装里都有哪些单元每个单元都有哪些特性不同单元之间是如何拼接的没有这些全局的信息和知识在你的脑子里你要从几千个piece里面去组装一辆车、构建一个城堡将是非常困难甚至不可能的。
第二要素 - 要有正确的思维方式。你至少要知道搭建一辆车需要四个轮子、一个方向盘、一个发动机这些部件之间如何通过其它的单元有机组合在一起彼此之间如何搭配。不知道车子需要轮子不知道轮子要装在底盘上是无法组装出一辆车来的即便有再多的单元也没有用。 要通过积木构建一辆车首先要知道都有哪些积木零件可以用其次要知道这些部件之间的逻辑关系
学习使用FPGA的道理跟玩乐高没啥区别同样是
了解FPGA是什么玩乐高的人不用操心什么是乐高这个知识是由玩乐高的人的父母掌握了并帮他选好型了
要充分了解FPGA内部都有什么功能单元逻辑单元、存储器、时钟产生、可编程IO等 这些单元都有什么用用起来都有哪些要注意的地方各个单元之间如何配合尤其是针对你要用的具体型号你要知道你用的这个型号的器件内部的各种功能单元具体有多少数量够不够你项目使用的
数字逻辑的设计思想 - 针对任意一项具体的功能如何组合你器件内的单元来实现需要哪些单元如何连接这些单元各个单元之间连接的先后顺序如何这就需要比较扎实的数字电路/数字系统设计的基础知识以及逻辑思维能力。
当然你也需要一些工具来帮助你实现比如一套从头到尾执行的设计环境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芯片内部的主要功能单元
该器件的具体资源参数如下
4320个LUT资源 - 每个LUT查找表有4个输入16种状态并一个寄存器这就像乐高里的积木块用来实现各种逻辑功能至于4320是多还是少这个要看你做的项目需要的逻辑资源对于FPGA的初学者来讲4000多个LUT已经足够多实现很多没听说过的功能都已经绰绰有余了
92Kbit RAM - 这是在逻辑之外的成块状的存储器可以灵活配置成各种位宽、各种读写模式的存储功能比如FIFO、双口RAM等
96Kbit用户闪存 - 这是Lattice 的一个创新后来Altera/Intel也学着做了MAX10就是将配置FPGA的存储器从外面的PROM变成了集成在FPGA内部的Flash可以反复编程从此FPGA不再外挂一个累赘了用起来就像PLD一样方便
嵌入式功能块硬核一路SPI、一路定时器、2路I2C这可是MCU除了ALU、总线之外最基本的功能模块都硬化到该FPGA内部了也就意味着如果你想用这个FPGA做一个MCU玩玩可以直接将这些已经硬化的功能块通过总线挂在处理器上没必要再写这些功能并且占用逻辑资源了
22路PLLDLL - 我们前面讲过外部常用的时钟产生器比如晶振产生的频率不高但FPGA内部可以工作到很高的速度因此现在几乎所有FPGA器件都有内置的PLL将外部的低频率的时钟整到很高频率比如小脚丫的外部时钟为12MHz内部PLL可以将它倍频到400MHz非常快吧
支持DDR/DDR2/LPDDR存储器 - 这是说该器件能够直接挂这些存储器适配它们的电平和时序
104个可热插拔I/O - 每个I/O管脚可以单独编程为输入、输出、上拉或下拉、并可以设置器输出阻抗以便支持不同的接口协议就像城市连接外部的道路可进可出、有的铺沥青、有的是土路
内核电压2.5-3.3V供电电压的范围比较宽
132脚BGA封装引脚间距0.5mm芯片尺寸8mm x 8mm
看下面就是这个器件做成的板子的图片中间那个黑黑的就是FPGA芯片。 小脚丫正面图片-所有可以操作的功能 小脚丫FPGA背面的图片 - LDO稳压器件以及编程器件
FPGA能做什么
知道了FPGA内部的资源也就心里有数它能做什么了。就像一座城堡内部居民的生活丰富多彩无论他们以何种形式进行组合他们所做的事情取决于这些居民以及他们拥有的资源其生活模式被城堡的设计者所定义城市管理、文化等等等。
但从宏观上来看这个城堡起到的功能很大程度上取决于这个城堡同外部世界的连接没有这些同系统的连接城堡内部的任何行为对于系统来讲都没有意义。FPGA可以是系统的一个重要组成部分但它仅仅是一个部分而已就像一个城堡一样它只有同外部进行连接并执行系统通过这些连接给其分配的功能才有意义。
因此FPGA通过其I/O管脚连接外面的世界我们使用的小脚丫芯片有132个管脚除去电源、地之外还有104个管脚可以用来同外界进行联系。 小脚丫FPGA器件的管脚分布像城堡连接外面世界的条条道路
做为一款让FPGA初学者学习的平台首先要满足初学者基于掌握的数字电路知识进行做项目的定位先要体验组合逻辑、时序逻辑、状态转换等数字电路的基础概念而体验这些概念就需要一些必要的输入按键、开关和必要的输出通过单色LED灯、三色灯、数码管进行各种方式的显示综合考虑板子的尺寸以及初学者随时随地能练习的要求我们经过取舍后选定了如下的板上功能及连接 通过FPGA的IO管脚连接的板上功能
板载资源
两位7段数码管 - 可以以状态、数值的变化来显示内部逻辑运行的信息
两个RGB三色LED - 可以以LED的亮度、颜色灯的变化显示内部逻辑运行的信息
8路用户LED - 可以通过组合来形象地显示内部逻辑运行的信息
4路拨码开关 - 做为状态的输入
4路按键 - 做为外部条件变换的输入 板子上的这些功能说明
当然作为一个灵活的学习模块我们还要给用户留下一定的灵活扩展的空间让用户以各种方式来连接其计划连接的其它器件在这个模块的周边我们留出了36个信号管脚4个电源、地除外给用户用户可以灵活配置、应用这些管脚让自己的系统充分利用这些管脚让FPGA内部的逻辑资源执行分配的任务。 还有36个管脚可以做进一步的灵活连接由未来的用户来定义
小脚丫FPGA模块在兼顾初学者学习功能的前提下同时留给工程师更多扩展的灵活性小脚丫团队也开发了一些扩展的模块并通过独特的适配板连接世界上开源硬件最强大的两个生态系统的扩展卡 - Arduino、树莓派小脚丫FPGA的使用者可以充分利用这些生态系统里现有的扩展模块进行FPGA逻辑设计就可以了。
两款小脚丫FPGA选用的FPGA器件 - Lattice的LCMXO2-4000和Intel的MAX10M08内部资源都足够大至少在你学好了FPGA编程之前都能够完美展现你的逻辑智慧。