【FPGA】编程方式

news2024/11/13 22:20:55

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.coloradmin.cn/o/2154950.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用 Terminator 的广播功能,其他窗口中输入的字母会加倍重复

现象 比如我在窗口中输入的是 ls -l,那么其他广播中的其他窗口输入的则会变成 llss --ll。 看大神们的分析,造成这个的原因可能是由于 ibus 中的一个 bug。而不是 Terminator 软件的问题。而且总会在新的 ibus 版本中出现问题,所以作者已经放…

构建与优化自定义进程池

1. 什么是进程池? 简单来说,进程池就是预先创建固定数量的工作进程,通过设计任务队列或调度算法来分配任务给空闲的进程 —— 实现“负载均衡”。 2. 进程池框架设计 枚举错误返回值: enum {UsageError 1,ArgError,PipeError };…

SpringBoot环境配置(Spring Boot Profile)

一、介绍 在Spring Boot中,spring.profiles 配置用于定义不同环境下的配置文件。这使得应用可以在不同的环境中使用不同的配置,比如开发环境、测试环境和生产环境等。这种方式可以避免在代码中硬编码配置信息,并且能够更灵活地管理应用的环境…

Linux之实战命令02:shred应用实例(三十六)

简介: CSDN博客专家、《Android系统多媒体进阶实战》一书作者 新书发布:《Android系统多媒体进阶实战》🚀 优质专栏: Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏: 多媒体系统工程师系列【…

12年计算机408考研-计算机网络

【题33】在TCP/IP体系结构中,直接为ICMP提供服务的协议是(B) A. PPP B.IP C.UDP D. TCP ICMP报文协议处与网际层,PPP协议处于数据链路层,TCP和UDP都是运输层协议。 他们都由IP直接提供服务。 【题…

算法题之每日温度

每日温度 给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是指对于第 i 天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用 0 来代替。 示例 1: 输入…

【数据仓库】数据仓库层次化设计

一、基本概念 **1. RDS(RAW DATA STORES,原始数据存储)** RDS作为原始数据存储层,用于存储来自各种源头的未经处理的数据。这些数据可能来自企业内部的业务系统、外部数据源或各种传感器等。RDS确保原始数据的完整性和可访问性&…

物理学基础精解【9】

文章目录 直线与二元一次方程两直线夹角直线方程斜率两点式方程截距式方程将不同形式的直线方程转换为截距方程直线的一般方程直线一般方程的系数有一个或两个为零的直线 参考文献 直线与二元一次方程 两直线夹角 两直线 y 1 k 1 x b 1 , y 2 k 2 x b 2 形成夹角 a 1 和 a…

MATLAB语言编写的EKF程序,带大量的中文注释

三维非线性状态量的EKF(扩展卡尔曼滤波),几乎每一行都有中文注释,方便初学者上手。 文章目录 代码说明绘图 代码说明 状态变量:x 表示三维状态,包括位置和速度。 协方差矩阵:P 用来表示估计的…

构建数字化生态系统:打造数字化转型中开放协作平台的最佳实践和关键实施技巧

在数字化转型浪潮中,企业如何确保成功实施至关重要。除了技术上的革新,企业还必须在战略执行、架构优化以及合规性管理等方面掌握最佳实践。随着云计算、大数据、人工智能等新兴技术的迅速发展,企业通过正确的实施技巧不仅能提升业务效率&…

CentOS中使用DockerCompose方式部署带postgis的postgresql(附kartoza/docker-postgis镜像下载)

场景 CentOS中使用Docker部署带postgis的postgresql: CentOS中使用Docker部署带postgis的postgresql_centos postgis插件在容器中如何安装-CSDN博客 上面使用Docker搜索和拉取kartoza/postgis时并没有任何限制。 当下如果不能科学上网时,大部分镜像源…

react hooks--React.memo

基本语法 React.memo 高阶组件的使用场景说明: React 组件更新机制:只要父组件状态更新,子组件就会无条件的一起更新。 子组件 props 变化时更新过程:组件代码执行 -> JSX Diff(配合虚拟 DOM)-> 渲…

消息中间件---Kafka

一、什么是Kafka? Kafka是一个分布式流处理平台,类似于消息队列或企业消息传递系统; 流处理事什么呢? 流处理就是数据处理工作流,本质上是一种计算机编程范例。流处理是对接收到的新数据事件的连续处理。‌它涉及对从生产者到消…

Sublime text3怎么关闭提示更新

问题 sublime text 3有新版本后,会不停地在每次启动后弹窗提示更新版本 第一步 软件安装之前,切记是软件安装之前!!!需要在hosts中添加以下内容(屏蔽官网联网检测):hosts的位置一般在C:\Windows\System32\drivers\etc…

展锐平台手机camera 软硬件架构

曾经在紫光展锐做过几年的camera驱动,经历过从2013 年最初的几人团队,每人独当一面,负责很多的模块的粗放,到后面的逐步的精细化,设计部门按照内核驱动,hal驱动,tuning效果,3A&#…

华为HarmonyOS地图服务 11 - 如何在地图上增加点注释?

场景介绍 本章节将向您介绍如何在地图的指定位置添加点注释以标识位置、商家、建筑等,并可以通过信息窗口展示详细信息。 点注释支持功能: 支持设置图标、文字、碰撞规则等。支持添加点击事件。 PointAnnotation有默认风格,同时也支持自定…

Diffusion Model Stable Diffusion(笔记)

参考资料: 文章目录 DDPM架构模型如何拥有产生逼真图片的能力Denoise模型功能Denoise模型如何训练考虑进文字 文生图流程(Stable Diffusion) DDPM架构 模型如何拥有产生逼真图片的能力 Denoise模型功能 通过Denoise将一个噪音图一步步生成为目标图像 Denoise实际…

Java | Leetcode Java题解之第415题字符串相加

题目: 题解: class Solution {public String addStrings(String num1, String num2) {int i num1.length() - 1, j num2.length() - 1, add 0;StringBuffer ans new StringBuffer();while (i > 0 || j > 0 || add ! 0) {int x i > 0 ? n…

Linux文件IO(八)-文件共享

什么是文件共享?所谓文件共享指的是同一个文件(譬如磁盘上的同一个文件,对应同一个 inode)被多个独立的读写体同时进行 IO 操作。多个独立的读写体大家可以将其简单地理解为对应于同一个文件的多个不同的文件描述符,譬…

大数据新视界 --大数据大厂之 Node.js 与大数据交互:实现高效数据处理

💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…