【FPGA】编程方式

news/2024/9/28 21:46:25/

FPGA编程方式

  • 1 什么是PLD?
  • 2 什么是颗粒度?
  • 3 可编程逻辑器件的编程方式有哪些?
    • 3.1 SRAM 编程技术
    • 3.2 Flash/EEPROM 编程技术
    • 3.3 反熔丝编程技术
    • 3.4 编程技术比较
  • 参考资料

1 什么是PLD?

可编程逻辑器件 英文全称为:programmable logic device 即 PLD。在修改和升级PLD时,不需要额外地改变PCB,只在计算机上修改和更新程序,使硬件设计工作成为软件开发工作,缩短了系统设计的周期,提高了实现的灵活性并降低了成本,因此获得了广大硬件工程师的青睐,形成了巨大的PLD产业规模。
目前常见的PLD产品有编程只读存储器(Programmable Read Only Memory,PROM),现场可编程逻辑阵列(Field Programmable Logic Array,FPLA),可编程阵列逻辑(Programmable Array Logic,PAL),通用阵列逻辑(Generic Array Logic,GAL),可擦除的可编程逻辑器件(Erasable Programmable Logic Array,EPLA),复杂可编程逻辑器件(Complex Programmable Logic Device,CPLD)和现场可编程门阵列(Field Programmable Gate Array,FPGA)等类型。PLD器件从规模上又可以细分为简单PLD(SPLD)、复杂PLD(CPLD)及FPGA。
PLD器件类别

图1 PLD器件类别

2 什么是颗粒度?

FPGA中的颗粒度是指可编程逻辑器件按照基本单元颗粒度的大小分类。‌

可编程逻辑器件根据基本单元颗粒度可以分为三类:

  • ‌小颗粒度‌:这种类型的可编程逻辑器件以单个逻辑门为基础,例如“门海(sea of gates)”架构,其中每个基本单元是一个逻辑门。
  • 中等颗粒度‌:FPGA属于这一类别,其基本单元不是单个逻辑门,而是由多个逻辑门组成的更大规模逻辑块。
  • ‌大颗粒度‌:CPLD(Complex PLD)属于这一类别,它由多个小规模的SPLD(Simple PLD)作为基本逻辑块,通过开关连接而成,形成中规模(大规模)PLD。这种结构避免了单纯扩大AND-OR阵列规模导致的资源浪费,因为CPLD的逻辑部分和开关部分的延迟时间比较固定,设计较为容易。

3 可编程逻辑器件的编程方式有哪些?

按照编程工艺可以分为4类:

  • 【非易失】熔丝(Fuse)和反熔丝(Antifuse)编程器件
  • 【非易失】可擦除的可编程只读存储器(UEPROM)编程器件
  • 【非易失】电信号可擦除的可编程只读存储器(E2 PROM)编程器件(如CPLD)
  • 【易失】SRAM编程器件(如FPGA)。

3.1 SRAM 编程技术

SRAM使用标砖CMOS工艺设计加工。通过传输管控制存储信息的读写。当传输管导通时,SRAM单元内存储的信息可由数据端读取或改写;当传输管截止时,存储的信息被首尾相连的两个反相器锁定,由Q和Q′端输出。理论上,SARM单元可被配置无数次。
图1 5管 SRAM单元结构

图2 5管 SRAM单元结构

基于SRAM单元的可编程技术存在一系列需要解决的问题:

  1. 断电后,SRAM存储的信息将全部丢失,所以通常使用外部非易失性存储器来存储相关配置信息,如Flash或E2 PROM等。
  2. 上电复位后,配置信息需从外部存储器写入器件,配置信息有可能被窃取
  3. SRAM单元用来控制传输管的导通或截止,对FPGA内的信号传输路径进行编程,传输管并不是一种理想开关元件,对信号传输会带来相当大的阻性和容性负载,降低信号完整性

3.2 Flash/EEPROM 编程技术

与SRAM相比,Flash结合了非易失性和可重复编程的特点,上电后无须配置。用Flash结构替代FPGA中的5管或6 管SRAM存储单元,可大大减少晶体管数量,降低静态功耗,整个器件的静态电流可低至微安量级;而基于SRAM存储结构的主流商用FPGA产品,静态电流普遍在毫安量级。但是,基于Flash结构的FPGA具也有其自身局限性,表现在:

  1. Flash存储单元擦写寿命是有限的,如Actel公司的PorASIC3系列产品,只能编程500次左右,这个次数对于大多数FPGA开发应用来说是远远不够的。
  2. Flash结构需要特殊的半导体工艺,无法在第一时间应用最新工艺技术,器件规模和密度也远低于基于SARM可编程技术的FPGA。目前基于Flash结构的最大规模的商用FPGA器件只有约300万系统门容量,而最新基于SRAM存储单元的产品容量可达数千万系统门。
  3. 同SRAM技术一样,Flash技术也具有传输管带来的信号完整性问题

3.3 反熔丝编程技术

反熔丝结构在编程之前通常是开路的,通过编程使反熔丝结构局部小区域内具有相当高的电流密度,瞬间产生巨大的热功耗,将薄绝缘层介质熔化形成永久性通路。采用反熔丝结构的FPGA具有非易失性,面积小,信号传输路径具有较小寄生电阻和电容可上电后直接使用信息安全性高等优点。
但是,反熔丝技术的局限性非常明显,具体表现在以下几个方面:

  1. 无法重复编程,不适用新产品开发。
  2. 一次性编程不利于器件可靠性检测,编程后器件一次成功率低于另外两种技术。
  3. 在不同工艺下,反熔丝材料的电性能具有相当大的差异,在最新工艺节点下实现反熔丝结构非常困难。
    采用反熔丝结构的FPGA在工艺上往往要落后于最新的工艺节点,规模和密度也低于采用SRAM可编程技术的FPGA。

3.4 编程技术比较

使用反熔丝技术和Flash技术可以获得最佳的面积和速度性能;使用EPROM和E2 PROM技术也可以获得较好的面积,但是性能较差;使用SRAM技术需要占用最大的芯片面积。
在这里插入图片描述

图3 5种编程技术比较

参考资料

《Xilinx FPGA高级设计及应用》汤琦、蒋军敏著


http://www.ppmy.cn/news/1531630.html

相关文章

Docker部署MongoDB教程

嘿,大家好!今天我在三丰云免费服务器上进行了一次激动人心的MongoDB部署测试。这款免费云服务器1核CPU、1G内存、10G硬盘、5M带宽,是不错的免费服务器选择。 首先,让我们简要介绍一下使用到的Docker和MongoDB软件。Docker是一个开…

Apache Iceberg 数据类型参考表

Apache Iceberg 概述-链接 Apache Iceberg 数据类型参考表 数据类型描述实例方法注意事项BOOLEAN布尔类型,表示真或假true, false用于条件判断,例如 WHERE is_active true。确保逻辑条件的正确性。INTEGER32位有符号整数42, -7可用于计算、聚合&#xf…

影刀RPA实战:java结合影刀同步采购订单数据

1.实战目标 本次实战我们用java语言结合影刀,实现从自用ERP系统同步订单到旺店通中,在工作中,有时候我们的运营数据不是直接在旺店通ERP中操作,比如我们有自己的ERP,完成一些特定的内部工作后,再把数据同步…

【Linux】线程同步与互斥

一、线程间互斥 1 .进程线程间的互斥相关概念 临界资源:多线程执行流共享的资源就叫做临界资源 临界区:每个线程内部,访问临界资源的代码,就叫做临界区 互斥:任何时刻,互斥保证有且只有一个执行流进入临界…

多路复用和事件轮询机制

多路复用:Nio 服务端只有一个线程处理多个连接 事件轮询机制:select 底层用了 epoll。 select open 调用了 epoll 通过3个方法来实现事件轮询 1.epoll.create 创建epoll 多个集合 2.epoll.ctl 如果有事件会把事件挪到就绪事件列表。 3.epoll.wait 会监听…

使用python获取百度一下,热搜TOP数据详情

一、查找对应链接 # 警告:以下代码仅供学习和交流使用,严禁用于任何违法活动。 # 本代码旨在帮助理解和学习编程概念,不得用于侵犯他人权益或违反法律法规的行为。 1、打开百度页面 百度一下,你就知道 2、点击F12 或 右键鼠标…

vue3中使用iframe不成功的问题

再做大屏的时候&#xff0c;引用了一个html的页面&#xff0c;但是vue3编码&#xff0c;所以需要用到iframe&#xff0c;但是一直报错&#xff0c;故将解决方法做一个备份&#xff1a; <template><div class"screen-bg"><iframe src"/static/in…

Linux集群部署RabbitMQ

目录 一、准备三台虚拟机&#xff0c;配置相同 1、所有主机都需要hosts文件解析 2、所有主机安装erLang和rabbitmq 3、修改配置文件 4、导入rabbitmq 的管理界面 5、查看节点状态 6、设置erlang运行节点 7、rabitmq2和rabbitmq3重启服务 8、查看各个节点状态 二、添加…