作为一名业余硬件开发工程师,一次偶然的机会,我面试了一家互联网公司的项目经理。其实平台挺大的。这里的面试都过去了,面试过程中出现的一些问题也分享给大家。
面试有四轮,两轮技术面试,一轮综合面试,一轮hr面试,都是电话面试。
其中,我问FPGA的时候,只是第一次听说,不知道是什么。本着务实、求真、学习的态度,这篇文章就出来了。希望能在总结的同时与大家分享。
我将从三个部分向你介绍什么是FPGA,他的工作原理,以及更为复杂的FPGA架构。。
它是在PAL、GAL、CPLD(不可读系列)等可编程器件的基础上进一步发展的产物。与ASIC相比,它以半定制电路的形式出现,既解决了定制电路的缺点,又克服了有限可编程门阵列电路的缺点。
相信你应该有听过CPU,GPU等通用处理器吧,FPGA跟他们相比具有更高的效率,更高的速度、功耗更低等优点,但是他易于开发的程度远远不如GPU。
相比ASIC这种全职定制的电路,FPGA的开发难度更低,开发周期更短。更适合复杂多变的数据中心等应用,但它的缺点是什么?它牺牲了资源,成本更高,性能会比全时ASIC定制电路差,一定程度上不能完全替代ASIC。
这就是FPGA的原理,通过烧文件来配置查找表的内容,从而在相同的电路情况下实现不同的逻辑功能。
那么什么是查找表呢?
查找表(Look-Up-Table)简称为LUT,LUT本质上就是一个RAM.目前FPGA中有很多4输入的LUT,所以每一个LUT都可以看作是一个有4位地址线的RAM。当用户通过原理图或FPGA开发软件会自动计算逻辑电路的所有可能结果,并把真值表(即结果)事先写入RAM, HDL语言描述一个逻辑电路时,通过这种方式,每输入一个信号进行逻辑运算就相当于输入一个地址来查表,找出相应的内容,然后输出。
上面这段话简要概括就是:
通过开发软件,把所有可能的结果都写在LUT上,然后通过输入是什么状态直接搜索输出结果。下图应该能让你更直观的看到。它的查找表是什么?
在FPGA中,用户首先写& quoty=(ab)| c & quot;代码,并且软件工具(QUARTUS、ISE或VIVADO)分析这一行代码,得到A、B、C不同值处Y的值(总共8个不同值)。然后软件工具将结果写在LUT上,从而实现代码的功能。下图是FPGA实现的基本结构。LUT就像一个RAM,abc就相当于一个地址。通过abc的地址,你要读取值,赋给y,不难理解吧?目前为止。
FPGA——xc 2064是Xilinx公司于1985年推出的第一款FPGA,包含88=64个逻辑块的阵列,每个逻辑块包含一个四输入查找表和其他简单功能。
由于它们的容量非常有限,因此早期的FPGA只用来执行一些相对简单的任务,比如集中一些胶合逻辑,或实现基本的状态机。
但随着时间的推移和工艺节点的进步,FPGA的容量和性能不断提升,功耗却不断降低。直到大约2006年,四输入查找表被广泛使用。一些高端设备可能使用六个、七个或八个输入的查找表。这些大家伙可能被用作一个大的查找表或者被分割成许多更小的函数,例如两个四输入查找表或者一个三输入和一个五输入查找表。
在实际的高端器件中,这种可编程构造可以描述相当于百万级(有时甚至千万级)的原始逻辑门。
如果一个逻辑功能(如计数器)是由FPGA的可编程结构实现的,那么这个功能可以说是一个& quot软功能& quot,我们称之为软内核。
相比之下,如果一个功能直接由一个芯片实现,它就被称为& quot硬功能& quot,我们一般称之为硬核。
软内核的好处是你可以让他们做任何你想做的事。注意,是数字功能,不包括模拟功能。's硬核的优点是他们是占用较少的硅片面积,具有较高的性能,并且功耗较低,并且硬内核可用于实现模拟功能.比如PLL的倍频功能需要用在模拟电路中,所以这部分用FPGA内部的硬件实现。
总之FPGA理解起来就是一堆的门电路组合,可以反复的进行擦写,好的甚至可以擦写百万次,其实针对FGPA的还有两部分细节我还没跟大家介绍,由于篇幅有限,下篇会跟大家补上,主要是:
带嵌入式处理器的FPGAFPGA的编程方式让大家对它有个整体的认识,然后我就会详细的介绍他的设计与应用,也是为自己理解应用FPGA打下基础,在日后工作上有更深的理解。
欢迎大家点赞,评论,支持和收藏,你的支持是对我创作的认可!感谢!
上一篇:途观变速器是干式还是湿式
下一篇:十一放假去哪旅游