FPGA基础知识

FPGA基础知识

1、什么是FPGA

  • FPGA全称为Field-Programmable Gate Array,即现场可编程门阵列。FPGA是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。简而言之,FPGA就是一个可以通过编程来改变内部结构的芯片。
  • 直观来说,FPGA 就是一个可以“改变”内部结构的芯片,而让这个芯片来实现怎样的功能,就需要通过编程即设计硬件描述语言,经过 EDA 工具编译、综合、布局布线成后转换为可烧录的文件, 最终加载到 FPGA 器件中去,改变 FPGA 内部的连线,最终完成所实现的功能。此时的 FPGA 就可以认为是用来实现具体功能的一个粗糙的芯片。
  • 单片机用途广泛,多用于控制流水线上;FPGA 的结构是查找表, 它的结构比较复杂,相对应的它可以实现的功能也很强大,一般应用于通信接口设计、数字信号处理等比较高端的场合,而且FPGA 还有一个特殊的应用场合,即 ASIC 的原型验证。
  • 相较于专职专用的 ASIC,FPGA 工具在开发难度上降低了许多,并且大大缩短了开发周期,而且由于 FPGA 是可重复编程的,其研发成本与风险也要比 ASIC 减少许多,更适用于复杂多变的数据中心等应用。
  • 但是 FPGA 也不是万能的,优势有时候也是劣势。虽然 FPGA 相比于单片机、CPU 等集成电路芯片拥有效率更高、功耗更低的特点,但是易于开发程度远远不如单片机、CPU;在数字芯片设计领域,FPGA 虽然相比 ASIC 具有更短的开发周期与开发难度,但是其存在着成本过高、性能较差并且在资源的利用率上远不及ASIC 等问题,不能真正的替代 ASIC。

2、FPGA的基本结构

  • FPGA 可编程的特性决定了其实现数字逻辑的结构不能像专用ASIC那样通过固定的逻辑门电路来完成,而只能采用一种可以重复配置的结构来实现,而**查找表(LUT)**可以很好地满足这一要求。
  • 比较FPGA时可编程逻辑模块的数量、固定功能逻辑模块(如乘法器)的数目及存储器资源(如嵌入式 RAM)的大小是最重要的参考指标。在最底层的可配置逻辑模块(如片上的逻辑单元)上,存在着基本的两种部件:触发器和查找表(LUT),而触发器和查找表的组合方式不同,是各个 FPGA 家族之间区别的重要依据,并且查找表本身的结构也可能各不相同(有 4 输入或 6 输入或其他)。
  • 查找表(Look-Up-Table)简称为 LUT,其本质上就是一个 RAM。目前FPGA 内部中多使用 4输入的 LUT,每一个 LUT 可以看成一个有 4 位地址线的 RAM。当用户在 EDA 工具上通过原理图或硬件描述语言设计了一个逻辑电路以后,FPGA 开发软件会自动计算逻辑电路的所有可能结果,并把真值表(即结果)事先写入 RAM 中。这样,每输入一个信号进行逻辑运算就等于输入一个地址进行查找表操作,通过地址找到对应的 RAM 中的结果,最后将其输出。
  • 以实现数字逻辑 Y=A&B&C 的功能为例。如果是在专用 ASIC 中,为了实现该逻辑,逻辑门都已经事先确定好,Y 的输出值为两个逻辑与运算后的结果,其基本的实现结构如下图所示:
    Y=A&B&C 的实现结构
Y=A&B&C 的实现结构
  • 而在 FPGA 的结构中若要实现同样的逻辑功能,用户首先在 EDA 工具中使用硬件描述语言设计出“Y=A&B&C”逻辑代码,EDA工具(Vivado或其他开发工具)分析这一行代码,得出 A、B、C 在不同输入组合下(共 8 种),Y 的值分别是多少,其真值表如下表所示:
    Y=A&B&C的真值表
Y=A&B&C的真值表
  • 然后软件工具将所有的结果写到查找表上,从而实现了该代码的功能。下图就是 FPGA 的实现基本结构。查找表就类似于一个RAM,输入 A、B、C 则相当于地址,通过 A、B、C 的地址就得读到值赋给Y并输出。
    Y=A&B&C的FPGA实现基本结构
Y=A&B&C的FPGA实现基本结构
- 在 FPGA 内部,有着“软内核”与“硬内核”之分。比如若利用 FPGA 的可编程性在芯片内部构造实现了一个计数器逻辑,那么在构造计数器逻辑过程中使用到的功能便可以被称为“软功能”,又称之为软内核。而如果某个功能若是直接利用芯片实现的,则是利用了芯片内部的“硬功能”,一般又称之为硬内核。软内核与硬内核之间优势互补,软内核的优势在于可以在利用芯片资源的基础上利用编程设计让其完成需要实现的任何功能(注意是数字功能,不包括模拟功能)。而硬内核由于是实现固定功能的器件,因此其优势在于资源利用率高且功耗较低,占用硅片的面积也较小,并具有较高的性能。而两者最重要的区别在于:与软内核相比硬内核可用于实现模拟功能,例如锁相环的倍频功能, 这个功能需要在模拟电路下实现,所以这一部分是在 FPGA 内部用硬件来实现的。

3、 数据存储以及配置方式

  • 在 FPGA 内部存在着存储单元片内 RAM 块,数据是存放在RAM 中并由其来设置工作状态的,若想要 FPGA 进行工作,就需要对片内
    RAM 进行编程。而如果外部有大量数据交互时,就要通过增加外设来对数据进行暂时性的存储,如 SDRAM 存储器或者DDR3存储器,暂存在外设中的数据最终也是要通过 FPGA 内部的 RAM 进行存储与处理。当在 EDA 工具上将程序设计完成之后,便需要将软件上的程序烧录进 FPGA 内部。通过不同的配置模式,FPGA 便会有不同的编程方式。以下为常用的几种配置模式:

  • 并行模式:通过并行 PROM、Flash 配置 FPGA;

  • 主从模式:使用一片 PROM 配置多片 FPGA;

  • 串行模式:串行 PROM 配置 FPGA;

  • 外设模式:将 FPGA 作为微处理器的外设,由微处理器对其编程。

  • 目前,主流的 FPGA 都是基于 SRAM 工艺的,在大部分的 FPGA 开发板上,使用的都是串行配置模式。由于 SRAM 掉电就会丢失内部数据,因此往往都会外接一个能够掉电保存数据的片外存储器以保存程序。这样一来,上电时 FPGA 便将外部存储器中的数据读入片内 RAM 以完成配置,对 F PGA 编程完成后便进入工作状态;掉电后 FPGA 内部 SRAM 中存储的数据丢失,逻辑清零。以这种方式配置 FPGA 不仅能反复使用,还无需重复的手动配置。完成一次主动配置之后每次上电便会自动的实现 FPGA 的内部编程。

第一次写博客,希望通过写博客巩固自己的所学知识,加油!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值