Xilinx FPGA电源设计与注意事项
1 引言
随着半导体和芯片技术的飞速发展,现在的FPGA集成了越来越多的可配置逻辑资源、各种各样的外部总线接口以及丰富的内部RAM资源,使其在国防、医疗、消费电子等领域得到了越来越广泛的应用。当采用FPGA进行设计电路时,大多数FPGA对上电的电源排序和上电时间是有要求的,所以电源排序是需要考虑的一个重要的方面。通常情况下,FPGA供应商都规定了电源排序、上电时间的要求。因为一个FPGA所需要的电源轨数量会从3个到10个以上不等。通过遵循推荐的电源序列,可以避免在启动期间吸取过大的电流,同时又可以防止器件受损坏。对一个FPGA的最小电路中的电源进行排序有多种方法。本文中主要以MP5650为例,来叙述把PGOOD引脚级联至使能引脚来实现排序。
- 研发案例
今天分享的案例是以明德扬公司研发的K7核心板,命名为MP5650为例。MP5650采用XILINX Kintex-7系列的XC7K325T-2FFG900I/XC7K410T-2FFG900I作为主控制器,在FPGA 芯片的HP 端口上挂载了4片DDR3存储芯片,每片DDR3 容量高达512M 字节,每片16bit组成64bit 位的数据位宽。1片128Mb 的QSPI FLASH 芯片用来静态存储FPGA 芯片的配置文件或者其它用户数据。核心板采用4个0.5mm间距120Pin 镀金连接器与底板连接,核心板四个脚放置了4个3.5mm固定孔,此孔可以与底板通过螺丝紧固,确保了在强烈震动的环境下稳定运行。核心板结构尺寸为65(mm)× 85(mm)。整个开发系统的结构如图1所示,实物图如图2所示。该板很适合高速数据通信;视频采集、视频输出、消费电子;机器视觉、工业控制;项目研发前期验证;电子信息工程、自动化、通信工程等电子类相关专业开发人员学习等领域及人群。

图1 核心板结构图

图2 核心板实物图
MP5650的K7FPGA所需要的电源轨如下:
(1)VCCINT
FPGA内部核心电压。其不损坏FPGA器件的范围为-0.5V1.1V,正常工作电压为0.97V1.03V,推荐工作电压为1.0V。
(2)VCCAUX
辅助供电电压。其不损坏FPGA器件的范围为-0.5V2.0V。正常工作电压为1.71V1.89V。推荐工作电压为1.8V。
(3)VCCBRAM
内部Block RAM的供电电压。其不损坏FPGA器件的范围为-0.5V1.1V。正常工作电压为0.97V1.03V,推荐工作电压为1.00V。
(4)VCCIO
对于HR BANK的接口电压来说,需要与外部器件的信号电平保持一致,其不损坏FPGA器件的范围为-0.5V3.6V。正常工作电压为1.14V3.465V。推荐工作电压与外部信号电平一致即可。对于HP BANK的接口电压来说,需要与外部器件的信号电平保持一致,其不损坏FPGA器件的范围为-0.5V2.0V。正常工作电压为1.14V1.89V。推荐工作电压与外部信号电平一致即可。
(5)VCCAUX_IO
IO辅助电压。其不损坏FPGA器件的范围为-0.5V2.06V。正常工作电压为1.14V1.89V/2.06V。推荐工作电压为1.8V/2V。
(6)VCCADC
XADC的供电电压。其不损坏FPGA器件的范围为-0.5V2.0V。正常工作电压为1.71V1.89V。推荐工作电压为1.80V。
(7)MGTAVCC
GTX收发器核心电压。其不损坏FPGA器件的范围为-0.5V1.1V。正常工作电压为0.97V1.08V,推荐工作电压为1.00V。
(8)MGTAVTT
GTX收发器终端匹配电压。其不损坏FPGA器件的范围为-0.5V1.32V。正常工作电压为1.17V1.23V。推荐工作电压为1.20V。
(9)MGTVCCAUX
GTX收发器辅助电压。其不损坏FPGA器件的范围为-0.5V1.935V。正常工作电压为1.75V1.85V。推荐工作电压为1.80V。
(10)MGTAVTTRCAL
GTX收发器校正电压。其不损坏FPGA器件的范围为-0.5V1.32V。正常工作电压为1.17V1.23V。推荐工作电压为1.20V。
官方推荐的上电顺序依次为VCCINT、VCCBRAM、VCCAUX、VCCAUX_IO、VCCO,断电顺序和上电顺序正好相反。另外如果VCCINT和VCCBRAM电源轨一致,则可同时上电/断电。VCCAUX_IO、VCCAUX与VCCO电源轨一致也可同时上电/断电。其它电源轨则无上电顺序。GTX收发器的上电顺序为VCCINT、MGTAVCC、MGTAVTT或者MGTAVCC、VCCINT、MGTAVTT。断电顺序正好相反。MGTVCCAUX无顺序。
- MP5650电源排序方法
实现排序的一种方法是把一个电源的电源良好(PGOOD)管脚级联至相继的下一个电源的使能(EN)管脚,如图3所示。在电源芯片在PG门限得到满足时开始接通。该方法的优势是成本低,但是无法轻松的控制定时。在EN管脚上增加电容在上电的级联上引入定时延时。

图3 把PGOOD引脚级联至使能引脚示意图
MP5650上选用的DC-DC电源芯片为LTM4628和LTNM4622,芯片的使用典型电路如图4所示。芯片通过控制TRACK/SS管脚,通过给该管脚外加电容来改变上电时间。电容越小,上电时间越短。若FPGA电源级数较多较多,若每级上电时间较长,会导致电源总的上电时间过慢,超过官方给的最大值,导致无法启动配置工作,FPGA工作不正常。官方提供的上电时间要求如图5所示,最大不超过50ms。

图4 LTM4628和LTNM4622芯片使用典型电路

图5 官方提供的上电时间要求
在我们最初的设计中TRACK/SS管脚电容选为0.1uF,我们发现经过四级级联后,上电有时Flash配置芯片配置不成功,经示波器测试发现上电时间过长,超过了Xilinx要求的50ms,如图6所示。经修改TRACK/SS管脚电容选为4.7nF后,上电时间大大缩短,如图7所示,约为3ms。满足了Xilinx上电时间要求,FPGA可以正常工作。设计中也可以将TRACK/SS管脚悬空,在默认情况下,上电时间有默认延时时间约为几百微秒。

图6 TRACK/SS管脚电容为0.1uF时,最后一级电源上电时间
- 总结
总得来说,kintex7 FPGA电源结构比较复杂。目前用户设计的7系列FPGA带上电顺序的电源方案常用各个电源芯片的输入EN和输出PGOOD来控制顺序,上电时间需满足Xilinx官方要求。通过开始描述,我们能够清晰看到这个MP5650核心板所含有的接口和功能。对于需要大量IO的用户,此核心板将是不错的选择。而且IO连接部分,同一个BANK管脚到连接器接口之间走线做了等长和差分处理,对于二次开发来说,非常适合。
相关文章:
Xilinx FPGA电源设计与注意事项
1 引言 随着半导体和芯片技术的飞速发展,现在的FPGA集成了越来越多的可配置逻辑资源、各种各样的外部总线接口以及丰富的内部RAM资源,使其在国防、医疗、消费电子等领域得到了越来越广泛的应用。当采用FPGA进行设计电路时,大多数FPGA对上电的…...
前端:地图篇(一)
1、前言 在很多的出行程序中,都会使用到地图这一个功能,在实际的开发中我们也不会去开发一个自己的地图模型。如果自己开发一个地图模型,那么需要投入的成本、人力都是非常巨大的。所以我们很多网站和APP中使用的都是第三方的接口和JS&#…...
刷题笔记 day6
力扣 57 和为s的两个整数 class Solution { public:vector<int> twoSum(vector<int>& nums, int target) {vector<int> v;int i 0 , j nums.size()-1;while(i < j){if(nums[i] nums[j] > target){--j;}else if(nums[i] nums[j] < target){i…...
Drools用户手册翻译——第四章 Drools规则引擎(十一)复杂事件处理(CEP)的属性更改设置和监听器
甩锅声明:本人英语一般,翻译只是为了做个笔记,所以有翻译错误的地方,错就错了,如果你想给我纠正,就给我留言,我会改过来,如果懒得理我,就直接划过即可。 事实类型的属性…...
[数据分析与可视化] Python绘制数据地图4-MovingPandas入门指北
MovingPandas是一个基于Python和GeoPandas的开源地理时空数据处理库,用于处理移动物体的轨迹数据。它提供了一组强大的工具,可以轻松地加载、分析和可视化移动物体的轨迹。通过使用MovingPandas,用户可以轻松地处理和分析移动对象数据&#x…...
基于SpringBoot+Vue的MOBA类游戏攻略分享平台设计与实现(源码+LW+部署文档等)
博主介绍: 大家好,我是一名在Java圈混迹十余年的程序员,精通Java编程语言,同时也熟练掌握微信小程序、Python和Android等技术,能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架…...
Linux sed 命令详解
Linux sed(Stream Editor)是一种强大的文本处理工具,它在命令行中执行对文本进行搜索、替换和编辑等操作。sed的设计理念是按行处理文本,可以将输入文本逐行读取并应用指定的操作,然后输出结果。 sed命令有多种选项和…...
算法通关村——如何使用中序和后序来恢复一棵二叉树
通过序列构造二叉树 给出以下三个二叉树遍历的序列: (1) 前序: 1 2 3 4 5 6 8 7 9 10 11 12 13 15 14 (2) 中序: 3 4 8 6 7 5 2 1 10 9 11 15 13 14 12 (3) 后序: 8 7 6 5 4 3 2 10 15 14 13 12 11 9 1 前中序复原二叉树 所需序列 (1) 前序: 1 2 3 4 5 6 8 7 9 10 …...
TypeScript的基本类型
typescript的定义 以JavaScript为基础构建的语言是js的超集可以在任何支持js的平台执行ts 拓展了js并增加了类型Ts不能被js解析器直接执行。 TS> 编译为js 执行的还是js. js 不易于维护,而ts易于维护。 可提高项目的可维护性。 类似less、sass 完善的语法写 样…...
Docker实战-如何去访问Docker仓库?
导语 仓库在之前的分享中我们介绍过,它主要的作用就是用来存放镜像文件,又可以分为是公共的仓库和私有仓库。有点类似于Maven的中央仓库和公司内部私服。 下面我们就来介绍一下在Docker中如何去访问各种仓库。 Docker Hub 公共镜像仓库 Docker Hub 是Docker官方提供的最…...
【力扣】722. 删除注释
以下为力扣官方题解,及本人代码 722. 删除注释 题目题意示例 1示例 2提示 官方题解模拟思路与算法复杂度 本人代码Java提交结果:通过 题目 题意 给一个 C C C 程序,删除程序中的注释。这个程序 s o u r c e source source 是一个数组&a…...
篇二:工厂方法模式:灵活创建对象
篇二:“工厂方法模式:灵活创建对象” 开始本篇文章之前先推荐一个好用的学习工具,AIRIght,借助于AI助手工具,学习事半功倍。欢迎访问:http://airight.fun/。 另外有2本不错的关于设计模式的资料ÿ…...
Python(六十二)字典元素的增、删、改操作
❤️ 专栏简介:本专栏记录了我个人从零开始学习Python编程的过程。在这个专栏中,我将分享我在学习Python的过程中的学习笔记、学习路线以及各个知识点。 ☀️ 专栏适用人群 :本专栏适用于希望学习Python编程的初学者和有一定编程基础的人。无…...
从零学算法138
**138.**给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点。 构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成,其中每个新节点的值都设为其对应的原节点的值。新节…...
CTF PWN练习之返回地址覆盖
今天进行的实验是CTF PWN练习之返回地址覆盖,来体验一下新的溢出方式。 学习地址覆盖之前还有些小知识需要掌握,不然做题的时候你肯定一脸懵逼,首先是函数调用约定,然后还要知道基本的缓冲区溢出攻击模型。 函数调用约定 函数调用约定描述…...
OpenCV中图像变换
一、介绍 transform():Transposes a matrix. perspectiveTransform():Performs the perspective matrix transformation of vectors. warpAffine():Applies an affine transformation to an image. warpPerspective():Applies a p…...
wordpress发表文章时报错: rest_cannot_create,抱歉,您不能为此用户创建文章(已解决)
使用wordpress 的rest api发布文章,首先使用wp-json/jwt-auth/v1/token接口获取token,然后再使用/wp-json/wp/v2/posts 接口发表文章,但是使用axios请求时,却报错: 但是,我在postman上却是可以的࿰…...
数学建模学习(7):Matlab绘图
一、二维图像绘制 1.绘制曲线图 最基础的二维图形绘制方法:plot -plot命令自动打开一个图形窗口Figure; 用直线连接相邻两数据点来绘制图形 -根据图形坐标大小自动缩扩坐标轴,将数据标尺及单位标注自动加到两个坐标轴上,可自定…...
CSS中所有选择器详解
文章目录 一、基础选择器1.标签选择器2.类选择器3.id选择器4.通配符选择器 二、复合选择器1.交集选择器2.并集选择器 三、属性选择器1.[属性]2.[属性属性值]3.[属性^属性值]4.[属性$属性值]5.[属性*属性值] 四、关系选择器1.父亲>儿子2.祖先 后代3.兄弟4.兄~弟 五、伪类选择…...
STM32 低功耗学习
STM32 电源系统结构介绍 电源系统:VDDA供电区域、VDD供电区域、1.8V供电区域、后备供电区域。 器件的工作电压(VDD)2.0~3.6V 为了提高转换精度,给模拟外设独立供电。电压调节器为1.8V供电区域供电,且1.8V供电区域是电…...
基于算法竞赛的c++编程(28)结构体的进阶应用
结构体的嵌套与复杂数据组织 在C中,结构体可以嵌套使用,形成更复杂的数据结构。例如,可以通过嵌套结构体描述多层级数据关系: struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...
IGP(Interior Gateway Protocol,内部网关协议)
IGP(Interior Gateway Protocol,内部网关协议) 是一种用于在一个自治系统(AS)内部传递路由信息的路由协议,主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...
376. Wiggle Subsequence
376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...
如何为服务器生成TLS证书
TLS(Transport Layer Security)证书是确保网络通信安全的重要手段,它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书,可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...
C++中string流知识详解和示例
一、概览与类体系 C 提供三种基于内存字符串的流,定义在 <sstream> 中: std::istringstream:输入流,从已有字符串中读取并解析。std::ostringstream:输出流,向内部缓冲区写入内容,最终取…...
unix/linux,sudo,其发展历程详细时间线、由来、历史背景
sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...
现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?
现有的 Redis 分布式锁库(如 Redisson)相比于开发者自己基于 Redis 命令(如 SETNX, EXPIRE, DEL)手动实现分布式锁,提供了巨大的便利性和健壮性。主要体现在以下几个方面: 原子性保证 (Atomicity)ÿ…...
Java求职者面试指南:计算机基础与源码原理深度解析
Java求职者面试指南:计算机基础与源码原理深度解析 第一轮提问:基础概念问题 1. 请解释什么是进程和线程的区别? 面试官:进程是程序的一次执行过程,是系统进行资源分配和调度的基本单位;而线程是进程中的…...
C# 表达式和运算符(求值顺序)
求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如,已知表达式3*52,依照子表达式的求值顺序,有两种可能的结果,如图9-3所示。 如果乘法先执行,结果是17。如果5…...
Caliper 负载(Workload)详细解析
Caliper 负载(Workload)详细解析 负载(Workload)是 Caliper 性能测试的核心部分,它定义了测试期间要执行的具体合约调用行为和交易模式。下面我将全面深入地讲解负载的各个方面。 一、负载模块基本结构 一个典型的负载模块(如 workload.js)包含以下基本结构: use strict;/…...
