FPGA的可编程技术

不同于软件代码最终是翻译成一条条指令供CPU执行,CPU内部电路是固定的,FPGA的内部电路会根据用户所写硬件代码的不同而改变,即用户可以将自身设计的电路写入FPGA芯片,并可以反复更改,这种特性使得FPGA可适应各种不同的应用场合。那么FPGA芯片实现这一特性的原理是什么呢?又是哪种内部结构支撑电路反复更改呢?本文将介绍FPGA的可编程技术。

上一篇博客已经介绍了数字电路是如何搭建的,总结下来,数字电路的基本组成元件是与或非三种门电路,由它们组成组合逻辑电路,组成触发器构成时序逻辑电路。

传送门: 数字电路是如何搭建的

FPGA内部的硬件资源是固定的,简单理解一下,FPGA内部有固定的与门和或门,根据硬件代码,将外部输入A和B接到与门就实现了A&B,接到或门就实现了A||B,可以理解为有两个开关,通过控制连接与门的开关闭合实现与逻辑,控制连接或门的开关闭合实现或逻辑。FPGA内部这个起到开关作用的结构被称为可编程开关。所谓的可编程技术就是如何构成和控制这个可编程开关。

一. 可编程技术

FPGA通过可编程的开关来控制电路的结构,这种可编程开关可使用多种半导体技术来实现。FPGA历史上使用过熔丝,反熔丝,EPROM,EEPROM,SRAM与FLASH这几种技术来实现,现代FPGA常用的是其中的三种,反熔丝,FLASH和SRAM。

1.1 熔丝连接技术

熔丝连接技术是最早被用于PLD的可编程技术,它的概念与保险丝类似。当一个基于熔丝技术的可编程器件被买回来后,它的初始状态如下图所示,所有的熔丝都是连接状态,此时器件处于未编程状态。通过对器件的输入施加大的电流和电压,可以有选择的去除不需要的熔丝,以实现用户设计的逻辑电路,这个过程就是对器件编程。

例如:要实现y = a&(!b)的逻辑,可可以熔断上图中间两条熔丝,如下图:

基于熔丝连接技术的PLD被称为一次性可编程器件,即OTP(One Time Program),因为熔丝一旦熔断就不能再恢复原状。

1.2 反熔丝技术

基于熔丝连接技术的器件输入端开始是连接的,通过把熔丝熔断进行编程,与其相反,基于反熔丝连接技术的器件输入端开始是断开的,通过把熔丝加上进行编程。如下图:

自然,反熔丝也是一次性编程器件。

1.3 掩模编程器件-ROM

ROM是非易失的,通过一种称为掩模的技术将数据固化在ROM中。ROM单元的结构如下图所示,ROM中包含大量的行和列,每一列都有上拉电阻与逻辑1相连,还有一个晶体管和一个可能的掩模连接。通过掩模技术来控制哪些晶体管通过掩模连接到对应的列上。因为上拉电阻的存在,原本列上的值是逻辑1,当其中一行进入工作状态时,与此行相连的晶体管导通,有掩模连接的列被拉到逻辑0,这就是掩模编程的过程。所以,ROM中的值初始是全1的,通过编程将部分或全部改为0。基于ROM的PLD只能编程一次。

1.4 PROM

PROM和ROM是类似的,不同在于,ROM的编程类似使用熔丝连接,PROM的编程则使用反熔丝熔断,显然,基于PROM的器件也是一次性编程器件。

1.5 EPROM

从EPROM开始,后续的可编程技术就没有使用熔丝和反熔丝了,PLD也从仅可编程一次升级成了可多次编程。EPROM的单元结构如下图所示。当行工作时晶体管导通,与晶体管相连的列被拉到逻辑0,对EPROM进行编程是通过加大控制栅和漏极之间之间的电压(12V)来使得晶体管失效,从而与此相连的列回到逻辑1。

与标准的MOS晶体管相比,EPROM晶体管多了氧化层绝缘的多晶硅浮栅,内部结构如下图所示。当晶体管处于未编程状态时,浮栅不带电,也不影响控制栅即栅极的一般操作。当在栅极和漏极之间加大电压(12V)时,在电压驱动下,高能电子穿越氧化层进入浮置栅,这一过程称为热电子注入。当编程信号撤销后,负电荷储存在浮置栅中,这些电荷非常稳定,正常状态下可保持10年以上。浮栅里存储的电荷阻止了栅极的正常操作,未编程的晶体管在行线加导通电压时正常导通,列线为逻辑0;已编程的晶体管无法导通,列线为逻辑1。这样就可以把已编程的单元和没编程的单元区分开。

EPROM可以通过浮置栅放电来擦除,放电需要的能力由一个紫外(UV)射线源提供,擦除时间大约20分钟。另一个潜在的问题是,随着制造工艺的进步,晶体管越来越小,芯片表面大部分被金属覆盖,这是EPROM器件吸收紫外线照射变得困难,擦除时间会越来越长。

1.6 EEPROM

EEPROM实现可编程的思路和EPROM是相同的,EPROM通过栅漏间加大电压使浮栅带电来编程,通过紫外线照射使浮栅放电来返回未编程状态;EEPROM同样是在删漏间加大电压使浮栅带电,但可以通过在栅漏间加大的反向电压即加负压使浮栅放电。EEPROM单元结构如下图所示。

EEPROM晶体管与EPROM晶体管结构基本一致,不同点在于EEPROM浮栅周围的SiO2绝缘层非常薄,使得浮栅上的电子可以在电压驱动下转移到漏极。

一个EEPROM单元由一个普通MOS管和EEPROM晶体管串联组成,并加入了控制栅线和源线。一个EEPROM单元体积约是同等EPROM单元的2.5倍,因为它包括两个晶体管和这两个晶体管之间的距离。因为体积的问题,EEPROM的容量一般都不大。EEPROM的优势则是电可擦除,比紫外线擦除方便很多。

1.7 FLASH

FLASH的全称是FLASH EEPROM,所以FLASH其实是EEPROM的一种,但为了区别,一般说EEPROM指的都是常规EEPROM并不包含FLASH。FLASH被称为闪存,“闪”反映出这种技术的擦除时间要比EPROM和EEPROM快很多,这是因为EEPROM是按字节擦除的,而闪存是按块擦除,所以速度更快。闪存根据写入方式不同分为两种:NAND型和NOR型。NAND型写入时需要高电压,而NOR型写入时需要大电流。

FLASH的单元结构和EEPROM相似,如下图所示。

可以看到此单元由两个共浮栅共控制栅的MOS管组成,左边的MOS专门负责编程、擦除等操作,即是一个专用的写入/擦除晶体管,通过在左边MOS的控制栅极和源极间加正/负压来使浮栅带/放电,使得右边MOS也随之失效/有效。右边MOS管的作用相当于熔丝连接技术的熔丝,控制用户信号是否接入。

1.8 SRAM

SRAM即静态存储器的单元的原理如下图所示,左图是说明原理的门级电路图,右图是晶体管级别的电路图。SRAM单元由一个传输晶体管(Pass-Transistor,PT)和两个CMOS反相器构成的触发器组成,此处PT为一个NMOS管。SRAM单元利用触发器的双稳态(0和1)记录数据,通过字线来控制PT的导通/关断,导通时单元输出为数据,关断时单元输出为原值,通过字线和数据实现对SRAM单元的编程。

SRAM单元只用到了普通结构的MOS管,这使得SRAM可以应用现在最先进的CMOS工艺,这也成为SRAM可编程开关的最大优点,这一优点使得现在大部分的FPGA都是基于SRAM的。另外,SRAM是易失性存储器,断电丢失配置信息,所以采用SRAM的FPGA都需要外挂一个非易失存储器(通常是FLASH)来保存配置信息。

二 . 总结

前面介绍的8种可编程技术是整个PLD中使用过的,而作为PLD的子类FPGA在历史上所使用过的可编程技术(暂时)只有其中的四种,即反熔丝,EEPROM,FLASH 和 SRAM,其中,EEPROM随着技术发展现已经被FLASH替代。所以现代的FPGA可编程技术只有三种:反熔丝,FLASH 和 SRAM。下表总结了三种可编程技术的特征。

项目反熔丝FLASHSRAM
非易失性具备具备不具备
重配置次数一次10000次左右无数次
制造工艺CMOS工艺+反熔丝FLASH工艺CMOS工艺
工艺节点落后最新CMOS工艺几代落后最新CMOS工艺几代最新CMOS工艺
配置单元尺寸非常小比较小(2个晶体管)大(6个晶体管)
开关电阻500~1000Ω20~100Ω500~1000Ω
开关电容1~2 fF (1000 fF = 1 pF)< 1 fF1~2 fF
功耗适中适中

反熔丝技术在功耗,开关电阻方面有优势,但只能一次写入导致此技术使用存在较大风险,而且无法使用最新的CMOS工艺,导致芯片集成度低,所以反熔丝技术应用很少。

闪存既可重复编程又有非易失性,但重写闪存需要的功耗大,所以不适用于需要频繁重写的情况。另外闪存工艺也相对落后,集成度不高,所以现在闪存大部分作为FPGA的外接程序存储器,而不是作为FPGA的编程主体。

SRAM的主要缺点是易失性,其它缺点还有待机功耗大,耐放射能力弱,安全性弱(电路配置信息可能被盗取)等,但能应用最新的CMOS工艺这一个优点就能遮蔽所有缺点,工艺先进意味着高集成度和高性能,目前市场上绝大部分的FPGA都是基于SRAM工艺的。

三. 参考

  1. FPGA设计指南 器件、工具和流程 [美]Clive “Max” Maxfield著 杜生海、邢闻 译
  2. 《FPGA原理与结构》第二章 日本 田野英晴主编, 赵谦译

小尾巴

徐晓康的博客持续分享高质量硬件、FPGA与嵌入式知识,软件,工具等内容,欢迎大家关注。
  • 17
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
### 回答1: FPGA并行编程是指使用FPGA(现场可编程门阵列)进行并行计算的编程技术FPGA是一种硬件设备,通过可编程的逻辑和可编程的连接资源,可以在硬件级别上实现各种功能。并行编程是利用多个处理单元同时执行不同任务来提高计算效率。 FPGA并行编程的优势在于其可高度定制化和并行处理能力。与传统的CPU相比,FPGA可以根据具体需求对硬件进行定制,因此在某些特定的应用场景下能够提供更高的性能和能效比。同时,FPGA可以支持并行计算,通过将任务分配给多个处理单元同时处理,可以大幅度提升计算速度。 FPGA并行编程需要掌握一些关键技术。首先,需要了解硬件描述语言(HDL),例如VHDL或Verilog,以描述和设计硬件电路。其次,需要熟悉FPGA开发工具和平台,如Xilinx或Altera等。这些工具提供了开发环境和资源来设计和实现FPGA的硬件电路。 在FPGA并行编程中,需要将任务拆分成多个并行任务,并为每个任务分配合适的处理单元。在任务之间,可能需要进行数据通信和同步操作,以确保计算的正确性。为了充分利用并行计算资源,还需要考虑负载均衡和任务调度的问题。 FPGA并行编程的应用领域广泛。它可以用于数字信号处理、图像处理、神经网络、加密解密等许多领域。在这些领域中,FPGA并行编程能够提供高性能、低延迟和低功耗的解决方案。 总之,FPGA并行编程是一种利用FPGA硬件资源进行并行计算的编程技术。它具有高度定制化和并行处理的优势,在特定应用场景中具有较高的性能和能效比。掌握FPGA并行编程的关键技术,能够为各种应用领域提供高性能的解决方案。 ### 回答2: FPGA(Field-Programmable Gate Array)是一种可编程逻辑器件,可以实现硬件加速和并行计算的功能。与传统CPU不同,FPGA可以对硬件资源进行编程,以实现特定的功能和性能需求。 《FPGA并行编程PDF》是一本关于FPGA并行编程方面的电子书籍,在书中介绍了利用FPGA进行并行计算的原理、技术和方法。 在FPGA并行编程中,我们可以利用FPGA的并行计算能力来加速特定的任务,例如图像处理、信号处理、机器学习等领域。通过对FPGA进行编程,可以将计算任务划分为多个并行的子任务,并在FPGA上同时执行这些子任务,从而加速整个计算过程。 《FPGA并行编程PDF》探讨了如何在FPGA上设计并实现并行计算的算法和数据流。这本书首先介绍了FPGA的基本原理,包括FPGA的架构、逻辑单元和资源等。然后,它介绍了如何利用并行计算技术将计算任务划分为多个并行的子任务,并将这些子任务映射到FPGA上进行并行执行。同时,该书还详细解释了FPGA编程语言和工具的使用方法,以及如何进行性能调优和资源管理。 通过阅读《FPGA并行编程PDF》,读者可以掌握如何利用FPGA进行并行计算的基本原理和方法,并且能够利用FPGA编程语言和工具实际实现并行计算的算法和应用。这对于需要进行大规模计算和实时处理的应用领域来说,将会是一个极其有价值的参考资料。 总之,《FPGA并行编程PDF》是一本系统介绍FPGA并行编程的电子书籍,对于希望了解和应用FPGA并行计算技术的人来说,具有很高的参考价值。 ### 回答3: FPGA并行编程的PDF是指以PDF文档形式呈现的关于FPGA并行编程的内容。FPGA(Field Programmable Gate Array)是一种可编程的数字电路,通过灵活的并行计算能力,可用于各种应用领域。 FPGA并行编程的PDF通常会包含以下内容: 1. FPGA基础知识:介绍FPGA的工作原理、结构和特点,包括可编程逻辑单元(PLU)和可编程互连资源(PCB)等。 2. 并行计算原理:解释并行计算的概念和原理,包括并行性和并行计算模型等。 3. FPGA并行编程模型:介绍FPGA上的并行编程模型,例如数据流编程或基于任务的并行编程。 4. FPGA并行编程语言:介绍常用的FPGA并行编程语言,如VHDL或Verilog,以及高级语言与HLS(高级综合)的结合等。 5. FPGA并行编程工具:介绍常用的FPGA开发工具,如Quartus、Vivado等,以及相关的调试和优化技术。 6. FPGA并行编程案例:通过实际案例演示如何使用FPGA进行并行计算,例如图像处理、信号处理或机器学习等。 这样的PDF资料对于想要学习或深入了解FPGA并行编程的人来说非常有价值。通过阅读PDF文档,读者可以系统地学习FPGA的基础知识,了解并行计算的原理和方法,并掌握FPGA并行编程的相关技术和工具。同时,通过案例的分析和实践,读者还可以对FPGA并行编程的应用有更深入的理解,并能够根据具体需求进行开发和优化。无论是初学者还是有一定经验的开发人员,都可以通过阅读这样的PDF文档提升对FPGA并行编程的认识和技能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值