大多数FPGA的程序存储器(FLASH)为什么都放在外面呢?FPGA的主要应用又是什么?
FPGA由于其较高的价格和成本,决定了FPGA不能像单片机那样被广泛的使用,FPGA的针对于高端处理市场(类如:手机处理器,平板,工业控制系统)或许你会有些疑问,为什么在高端电子产品市场几乎难以看到FPGA的使用,几乎全是专用集成电路(ASIC)芯片,就是我们常说的定制芯片,为什么FPGA的应用会这么的少,因为专用集成电路(ASIC)芯片速度要比FPGA快,性能强。
FPGA的主要应用:
FPGA由于其较高的价格和成本,决定了FPGA不能像单片机那样被广泛的使用,FPGA的针对于高端处理市场(类如:手机处理器,平板,工业控制系统)或许你会有些疑问,为什么在高端电子产品市场几乎难以看到FPGA的使用,几乎全是专用集成电路(ASIC)芯片,就是我们常说的定制芯片,为什么FPGA的应用会这么的少,因为专用集成电路(ASIC)芯片速度要比FPGA快,性能强。
FPGA和专用集成电路(ASIC)成本比较,在初始时FPGA成本较低,但在大批量使用时FPGA成本大量上升, 专用集成电路(ASIC)初始时成本较高,但在大批量使用时成本较低,可以推断出专用集成电路(ASIC)使用上要比FPGA多是因为在大量智能化的设备中因为成本低。
在这里FPGA还是用于了专用集成电路(ASIC)芯片的设计验证,FPGA除了开发周期快有没有什么一点强于专用集成电路(ASIC)呢?有,在这里我们先代入关于FPG的其他内容。
关于程序存储的问题:
FPGA芯片大部分都外置基础FLASH存储器,只有很少一部分FPGA内部集成FLASH,为什么不像单片机那样内置存储器呢?这样就减少外部设计,提高了内置集成度,当FIASH不够用时在外置寄存器,这样不好吗?
或许有人会这样回答:FPGA程序数据复杂,内容较多占用空间较大,不容易存储在芯片内部,或者是在外面不容易产生干扰,程序放在外面芯片损坏更有修复的可能。那么这些的回答对不对呢?也对,但也不完全对这些的回答未免也太勉强了,
我们先来看着几张内部结构图:
安捷伦DSO7104B示波器采用赛灵思(Xilinx)XC6000系列FPGA,主处理器采用安捷伦定制的芯片。
普源精电HDO4000示波器采用赛灵思(Xilinx)Zynq-7000系列(XC7A100T)FPGA,主处理器采用瑞芯微电子的RK3399。
鼎阳SDS3000高端示波器采用多个(能看到有4个)Zynq-6000 系列FPGA,主处理器在散热片下面有两个目前未知。
这是一个FPGA的典型应用:示波器(第五代示波器,混合域示波器,注意这里的示波器是正常全功能的示波器,不是百元机),示波器必不可少的就是FPGA器件,看了上面的图会发现一些高端的示波器使用的FPGA数量会更多,很显然FPGA已经成为了示波器的必不可少的器件,在这里或许会有疑问FPGA为什么会被示波器广泛使用呢,为什么不要专用集成电路(ASIC)芯片呢?这样不更节省成本吗?
如果细心的就会发现FPGA在这里的使用并不是主机(这里的主机是指在该主板上发出主要控制或实现功能的元器件,控制从机),而是当做了从机(这里的从机是指在该主板上由主处理器发出对该器件的控制就叫从机)来使用,在智能化电子产品中为了集成度高,把很多的芯片功能集成到了一起,为了保证大量低成本使用芯片,即使需要FPGA芯片也把它集成到了专用集成电路(ASIC)芯片中。
之前我们所说的FPGA在使用中很少,这只是把FPGA当做主机使用,FPGA很少拿来做控制器,这取决于内部结构,因为内部采用大量的逻辑单元,没有主要的核心控制器(或中央处理器CPU),如果采用FPGA当做主机来使使用需要在内部定义一个从逻辑搭建的处理器,不如把FPGA当做从机使用在电路中通过主机(处理器)来控制FPGA来输出,这样能更好的实现逻辑功能,因为这样可以不采用单独的定制芯片,做到分离式控制,用简单的处理器实现强大的逻辑功能,因此FPGA应用在从机的方面较多。
FPGA的内部结构图
正是FPGA的主要使用领域是从机,被受到其他设备的控制,所以大部分FPGA内部 没有FLASH程序存储器(除了一些FPGA逻辑数量少,性能较低的内部包含有FLASH),因为FPGA在从机使用较多,所以做内部不集成FLASH程序存储器是为了更好的针对FPGA从机的应用,更能灵活的实现FPGA的灵活功能。
PROGRAM_B端口和JTAG(或QSPI)部分:
这个端口PROGRAN_B端口和JTAG(或QSPI)调节引脚在FPGA从机的模式中必不可少。JTAG或QSPI端口可以通过主机把程序下载到FPGA中,对FPGA直接进行控制,但是程序下载到FPGA中程序数据是无法更改的。
于是针对这种情况在芯片上设计了PROGRAM_B引脚,该引脚的作用是清除内部程序数据,和芯片复位的状态不一样,芯片复位是把内部所有的内容清除,并重新配置芯片开启数据包括清除内部时序。PROGRAM_B引脚的功能就是只把芯片上正在运行的数据清除,以主机重新向从机传入程序数据,这个就可以对内部逻辑的排列就有了重新的定义,所以FPGA在从机的领域使用较多,因为他在内部排列和架构上利于重新排列的,针对FPGA使用的方法更支持并倾向于从机。
结尾和总结:
不知道你们在使用示波器的时候有没有这样的功能:在按下自动输出波形的时候示波器屏幕会不动,然后听见内部继电器响几下,几秒后波形在屏幕上显示出来了。有没有想过为什么屏幕会突然停下?因为内部的FPGA芯片的程序数据会被重新下载,停下的时间就是主机向FPGA传入新的程序内容。
总而言之FPGA主要是因为灵活的特点,内部结构改变速度快,逻辑性强,所以在芯片领域有着重要的,不可替代的特点。
好啦,本文章到这里就结束了,不知道你有没有解决你的问题呢?文章有问题欢迎随时指出,我会随时改正的,谢谢啦。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)