当前位置: 首页 > news >正文

FPGA的电源供电

目录

1、供电要求

 2、PCB设计的电源和地叠层分布

3、退耦电容


电源供电看似微不足道,但对于特定的FPGA应用来说却并非如此。如果FPGA周围缺乏足够退耦,将会显著降低FPGA设计的可靠性。更为糟糕的是,大部分问题都不是那种可以容易复现且在实验环境下也很难发现的(尤其是在没有很好理;解故障本质时出现的问题)。最可怕的故障就是那种无法复现的故障。

1、供电要求

现代FPGA的封装都非常小,而且通常都需要多种供电电压和复杂的供电要求。虽然可以找到很多关于供电方面的应用文档和白皮书,但目前还没有针对每一个FPGA应用都非常完美的供电和退耦方案。原因就在于FPGA本身可以被广泛地配置成各种不同的功能、I/O标准以及系统时钟速率,对应这些不同配置的电源要求可能会不同。处于电磁屏蔽环境下的小型低速器件将不会对供电有显著影响,而且过多的退耦将只会增加不必要的成本。相反,那些有高电磁干扰或由高速信号产生过度瞬变的应用对系统供电会产生重大影响,而且如果对这些影响考虑不周将会导致器件出现故障。

不同器件之间,FPGA对于供电的整体要求会有差异,但是除了这些不同要求外,还有单调性、软启动、电压爬升控制(最小和最大爬升时间)、峰峰值纹波、变化波动率、用于时钟管理的干净电源以及上电顺序和跟踪等供电要求是值得在此进行讨论的。

单调性(或线性)要求,是指在上电过程中,电源轨是单调爬升而不会掉头往下掉(也称单调非负特性)。也就是说,电源必须始终具有正斜率(或零斜率)。例如,图1-8显示了一个电源的时域曲线。从图中可以看到,该电源就违反了上述原则。作为比较,再看图1-9中的曲线,该曲线显示此电源具有个单调爬升曲线,曲线斜率总是正的(或者更精确地说是非负斜率,或曲线具有非减特性)。

软启动要求是指在FPGA上电时定义了可以提供给FPGA的浪涌电流,或者说定义了电源上电时的输出浪涌电流。目前市面上很多电源模块都内置了软启动功能,如果所选择的电源内部并无此功能,那么可以在PCB.上添加一个外部电路来满足这一要求。

图1-10所示为一个典型的软启动电路,如果电源电压爬升太快,导通晶体管栅极_上的极性将会自我调整以增大供电电源的输出阻抗,从而可以降低电源电压的爬升速度。该功能模块也直接关系到FPGA对电源的爬升时间的要求。

 最大和最小爬升时间要求定义了FPGA上电过程中供电电压的上升速率。电压爬升太快将会导致前述的浪涌状况:而如果爬升太慢,则会使电压长时间徘徊在阈值电压附近,从而可能使器件无法正确复位,如图1-11所示。

 对于一些如时钟控制等敏感的模拟元件来说,有时候对供电电压纹波的变化率有一定的要求,如图1-12所示。换句话说,电源输出必须足够干净,必须滤除某个阈值范围以上的所有高频分量

敏感的模拟电路要求干净的供电,通常需要使用线性电源,尤其是那些在电源轨上滤除了主要高频分量的电源器件( 整个带宽内只剩线性电压自身)。举例来说,FPGA的PLL、Transceiver等 模块中模拟部件都要求单独使用线性电源供电。

通常来说,一个好的设计应该像图1-13那样,给电源供电设计加入电压上电顺序和电源跟踪。这来源于FPGA的I/O电压必需要在核心电压上电以后才能上电的基本规律。大部分IC包括FPGA都会有内置的电路以防止未知逻辑值被驱动到输出的灾难性故障发生,但是这些问题不会总是能被成功消除(不管器件手册怎么说),而且作为一个好的设计行为,FPGA核心电压就应该在I/O上电之前上电。

 2、PCB设计的电源和地叠层分布

 

 

 

 

3、退耦电容

 退耦电容可以在电源轨波动时为其提供少量的瞬态能量。大部分PCB设计者在培训的时候都被告知要为电源添加电容,而且要考虑将这些电容放到靠近IC电源引脚位置。问题是,很多时候设计者(特别是FPGA设计者)并未完全理解如何添加这些电容,所以电源退耦策略并未被正确执行,且浪费了并未给电路带来任何实际好处的电容。举例来说,很多设计者只是简单地给供电电源添加一种类型的电容,然后在PCB上所有的电源引脚附近复制这种动作。通常大家会在PCB周围广布o.1μF的电容,这样就为电源稳压器输出放置了大容量电容。还有-些其他PCB设计者会使用各种尺寸的电容,但是却没有理解为什么要添加这些电容,他们只是按照经验以一定比例使用这些电容,而不是比较恰当地使用这些电容以获取最佳的退耦效果。

Xilinx已经发布了一个关于电源分配系统(PDS)设计的应用手册,即XAPP623。同样,Altera也发布了类似的PCB电源分配网络(PDN)设计应用手册,即AN574。建议读者学习这些手册以深入理解本节主题。后面将详细描述可能会发生在FPGA设计者身上的这些问题。

 

 

 本文来自《FPGA设计实战演练》

相关文章:

  • 【牛客刷题-算法】NC31 第一个只出现一次的字符 (哈希表、队列两种解法)
  • Python之人机猜拳游戏
  • Win10 固定IP地址方法
  • Linux 下查看文件系统类型
  • 上传百度文库有什么技巧吗?百度文库上传怎样才能成功
  • 机器学习之手写决策树以及sklearn中的决策树及其可视化
  • C++初识
  • 成都跨境电商开发
  • 无人机 gazebo 仿真---rotors_simulator 功能包介绍
  • LeetCode刷题总结---二分查找详解
  • vue中watch原理浅析
  • Graph Representation Learning Chapter[2]
  • 一个测试岗面了 30 多人,100多个人投简历,真的太卷了,不能再真实了....
  • 准备半年,面试2个月,上岸快手拿个35K应该不算高吧?
  • java计算机毕业设计网课信息管理系统源代码+数据库+系统+lw文档
  • ----------
  • -------------------- 第二讲-------- 第一节------在此给出链表的基本操作
  • 【剑指offer】让抽象问题具体化
  • Apache的基本使用
  • Brief introduction of how to 'Call, Apply and Bind'
  • gf框架之分页模块(五) - 自定义分页
  • Hexo+码云+git快速搭建免费的静态Blog
  • JavaScript异步流程控制的前世今生
  • JDK 6和JDK 7中的substring()方法
  • leetcode讲解--894. All Possible Full Binary Trees
  • MobX
  • node和express搭建代理服务器(源码)
  • Promise面试题2实现异步串行执行
  • Protobuf3语言指南
  • spring security oauth2 password授权模式
  • Web Storage相关
  • 代理模式
  • 海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践...
  • 坑!为什么View.startAnimation不起作用?
  • 如何解决微信端直接跳WAP端
  • 如何用Ubuntu和Xen来设置Kubernetes?
  • 【运维趟坑回忆录】vpc迁移 - 吃螃蟹之路
  • 专访Pony.ai 楼天城:自动驾驶已经走过了“从0到1”,“规模”是行业的分水岭| 自动驾驶这十年 ...
  • #include
  • (12)Linux 常见的三种进程状态
  • (附程序)AD采集中的10种经典软件滤波程序优缺点分析
  • (附源码)ssm本科教学合格评估管理系统 毕业设计 180916
  • (算法)前K大的和
  • (原创)Stanford Machine Learning (by Andrew NG) --- (week 9) Anomaly DetectionRecommender Systems...
  • (转)树状数组
  • ***汇编语言 实验16 编写包含多个功能子程序的中断例程
  • .jks文件(JAVA KeyStore)
  • .net core Swagger 过滤部分Api
  • .NET Core 网络数据采集 -- 使用AngleSharp做html解析
  • .NET 中什么样的类是可使用 await 异步等待的?
  • .net通用权限框架B/S (三)--MODEL层(2)
  • .php文件都打不开,打不开php文件怎么办
  • .vimrc php,修改home目录下的.vimrc文件,vim配置php高亮显示
  • @EnableWebMvc介绍和使用详细demo
  • [100天算法】-x 的平方根(day 61)