FPGA低温不能启动分析(转)

FPGA低温不能启动分析

现象描述:在给medium板光端机做低温试验时,分别给发送版、接收板断电重新启动,发现有的板子在-40°可以启动,而有些板子在-20°都不能启动,需要升高温度到0°以上才能启动,此时观察到的现象是指示状态的4个led灯都点亮,表现为FPGA一直处于复位模式。

针对这一问题,作如下分析:

FPGA在上电前是一片空白的芯片,既使断电前FPGA已经配置为一个正常工作的系统了,但只要断电,它又恢复了空白。也就是说FPGA内部的电路逻辑要落实到一个具体的结构需要有电的维持。

FPGA内部逻辑结构是由配置文件决定的,这个配置文件来自哪儿取决于FPGA使用哪种配置模式。Medium光端机FPGA采用的是主串模式,这是FPGA最常用的配置模式,主串配置模式电路图如下。

Medium光端机使用的FPGA芯片是Spartan3E,PlatformFlash是XCF04S。

FPGA芯片有两个配置触发事件:上电复位(POR, power on reset),软件复位。低温试验中,我们采用断电重启的方式来检测FPGA是否在低温下可以重新启动,这里主要对上电复位触发重新配置的过程进行如下描述:

(1)FPGA上电后,只有在内核电压、参考电压、IO口电压都正常的情况下,才进入配置模式;

(2)下拉PROG_B,FPGA复位,同时对配置存储空间进行初始化;

(3)将INIT_B,DONE管脚信号拉低,DONE信号与PROM芯片的CE管脚信号相连,从而使PROM片选信号有效;INIT_B为低,指示电源供压正常,FPGA正处于配置存储空间初始化中;

(4)FPGA在PROG_B管脚信号变为高电平时,开始配置过程;

(5)FPGA在INIT_B上升沿中读取配置管脚M[2:0]的值,从而确定FPGA的配置模式;

(6)PROM通过Do管脚将配置数据以CCLK时钟信号的速率传给FPGA

(7)配置完成后,将DONE管脚信号置为低电平,指示配置已经完成。

以下将针对FPGA主串模式配置过程中几个关键的因素进行分析:

1、POR电压要求

上电复位过程中,如果配置电源电压没有到达门限值,POR电路将保持复位状态。配置电源有三个:

VCCIINT,给FPGA内核逻辑供压;

VCCAUX,给专用配置管脚供压;

VOCC_2,给外部连接的配置数据源(如PROM)接口管脚供压

FPGA检测这三个电压值,一旦所有的三个电压值超出了特定的电压门限值要求,POR上电复位电路会释放对RESET控制,FPGA就可以在PROG_B出现低电平时,启动重新配置。

POR复位电压门限值表

2、配置模式选择:主串模式(Master Serial)

M[2:0]= <0:0:0>,FPGA配置模式选择管脚M[2:0]都应为低电平。在FPGA完成了内部配置存储空间初始化后,FPGAT_B在INIT_B上升沿的时候读取配置模式管脚的电平值,从而确定FPGA的配置模式。

==>查一下M0 M1 M2上的下拉电阻,这些脚FPGA内置的上拉很强,如果外接下拉电阻太大的话有可能下拉电平不够低,加上温度变化造成输入门限电压的变化就可能造成低温的时候不去用SPI Flash 初始化。推荐阻值470欧以下,如果不复用引脚的话,建议直接接地。

3、配置时钟CCLK

CCLK信号是JATG配置数据传输的时钟信号,其信号完整性非常关键。CCLK是由FPGA内部振荡器产生的,传给Platform Flash PROM的CLK管脚。相应的,PlatformFlash PROM通过DO以CCLK的速率将配置数据送给FPGA。如果CCLK信号没有,重点检查内核供压是否为1.2v。FPGA配置电路刚开始以最低的频率工作,如果没有特别指定,将逐渐提高频率。对于不同芯片和电平,CCLK最大值如下。

4、PROG_B—FPGA复位或者重新配置

PROG_B对FPGA 来说是一个异步控制输入信号,当PROG_B为低时,FPGA复位,同时对配置存储空间进行初始化;当PROG_B由低变为高时,FPGA开始重新配置过程;重新配置完成后,PROG_B保持高电平,一旦PROG_B出现下降沿,并且低电平持续时间大于500ns时,FPGA将开始重新配置过程。

PROG_B为低期间,IO管脚将表现为何种状态呢。在HSWAP为低电平的情况下,使能上拉电阻,一旦检测到PROG_B出现下降沿时,FPGA的IO管脚将无效,被上拉为高电平。如果HSWAP为高电平,上拉电阻无效,FPGA的IO管脚的状态是不确定的。

==>Medium光端机中,HSWAP通过一个510欧姆的电阻接地,因此HSWAP为低电平,当PROG_B为低电平时,FPGA的IO管脚将被上拉为高电平,此时指示状态的四个LED灯点亮正好说明了这一现象。

5、INIT_B—FPGA配置存储空间初始化指示信号

当电源供压达到电压门限值后,FGPA将INIT_B置为低电平,指示正在对配置存储空间进行初始化。在INIT_B信号由低变为高电平时,FPGA读取配置模式管脚M[2:0]的电平值,从而确定FPGA的配置模式。

在配置过程中,FPGA通过将INIT_B置为低电平来指示配置数据错误,比如CRC出错。

DONE—FPGA配置状态指示信号

当FPGA处于配置过程中时,DONE为低电平;配置完成后变为高电平。可以用来指示FPGA的配置状态。

==>Medium光端机中FPGA的DONE管脚外接240欧姆电阻(推荐值为330欧姆)与 相连,并且另一端外连接一个LED,然后接地。当LED点亮时,表示FPGA已经完成了配置。

6、小结:

通过以上的分析,当FPGA不能正常配置时,可以从以下几个方面进行排查:

1.    DONE指示信号LED灯是否亮,亮表示配置完成;

2.    测量电压是否正常,分别有内核电压(1.2v)、参考电压(2.5v)、IO口电压(3.3v);

3.    检查配置模式M[2:0]是否正确,(M[2:0]=<0:0:0>);

4.    使用示波器采集配置时钟信号,看是否正常,低于12M(Spartan 3e + XCF04S)

5.    查PROM的数据手册,PROM--XCF04S可以工作在-40°到+85°的环境下。

 7、参考文档:

1.DS312-Spartan-3E FPGA Family Data Sheet.pdf

2.UG332-Spartan-3 Generation Configuration User Guide.pdf

---------------------
作者:shanekong
来源:CSDN
原文:https://blog.csdn.net/shanekong/article/details/29923925?utm_source=copy
版权声明:本文为博主原创文章,转载请附上博文链接!

原文地址:https://www.cnblogs.com/limanjihe/p/9782100.html

时间: 2024-11-05 22:44:31

FPGA低温不能启动分析(转)的相关文章

powerpc-linux内核start_kernel之前启动分析(1)-开门见山

前段时间做了公司内核从arm处理器到一款powerpc处理器的移植(公司处理器换核,前期用FPGA仿真板进行了芯片验证和软件移植),借这个机会也学习了powerpc处理器的一些知识,对powerpc的内核启动也有所了解. 完成了arm版本内核start_kernel之前汇编分析,也想尝试写几篇文章对powerpc的启动进行分析,与大家分享. 在分析之前,首先罗嗦几句,这次移植工作之前我从来没有接触过powerpc相关的知识,因此是作为一个初学者来完成这次移植工作的. 初学者要完成一次完整的内核移

Tomcat启动分析(我们为什么要配置CATALINA_HOME环境变量)

原文:http://www.cnblogs.com/heshan664754022/archive/2013/03/27/2984357.html Tomcat启动分析(我们为什么要配置CATALINA_HOME环境变量) 用文本编辑工具打开用于启动Tomcat的批处理文件startup.bat,仔细阅读.在这个文件中,首先判断CATALINA_HOME环境变量是否为空,如果为空,就将当前目录设为CATALINA_HOME的值.接着判断当前目录下是否存在bin\catalina.bat,如果文件

Mysql的启动分析

一.Mysql启动配置文件的加载路径 # mysqldump --help| egrep -B2  "/etc/my.cnf" 或者 # mysqld --verbose --help |grep my.cnf Default options are read from the following files in the given order: /etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf -

第3阶段——内核启动分析之start_kernel初始化函数(5)

内核启动分析之start_kernel初始化函数(init/main.c) stext函数启动内核后,就开始进入start_kernel初始化各个函数, 下面只是浅尝辄止的描述一下函数的功能,很多函数真正理解需要对linux相关体系有很深的了解后才能明白 代码如下: asmlinkage void __init start_kernel(void) { char * command_line; extern struct kernel_param __start___param[], __sto

SpringBoot源码解析:tomcat启动分析

>> spring与tomcat的启动分析:war包形式 tomcat:xml加载规范 1.contex-param: 初始化参数 2.listener-class: contextloaderlister上下文监听 3.servlet-class: 4.filter-class 加载顺序:context - listener - filter - servlet

Tomcat启动分析(转自:http://docs.huihoo.com/apache/tomcat/heavyz/01-startup.html)

Tomcat启动分析 1 - Tomcat Server的组成部分 1.1 - Server A Server element represents the entire Catalina servlet container. (Singleton) 1.2 - Service A Service element represents the combination of one or more Connector components that share a single EngineSer

Android Zygote进程启动分析

dvm,app进程,linux进程三者关系 DVM指 dalivk 的虚拟机.每一个 Android 应用程序都在它自己的进程中运行,都拥有一个独立的 Dalvik 虚拟机实例.而每一个 DVM 都是在 Linux 中的一个进程,所以说可以认为是同一个概念 Zygote进程与app进程关系 Zygote是java层的进程即它也拥有一个独立的Dalvik 虚拟机实例,它是被linux层的第一个用户空间Init进程所启动的,它的主要作用就是用来孵化app进程和系统进程 fork一个app进程,是通过

ARM Cortex-M3/M4 启动分析

ARM Cortex-M3/M4启动分析 序: 之前在进行嵌入式开发的时候,并没有太过于关注ARM芯片的启动逻辑,现在IMXRT1052的学习过程中,发现了还真的老老实实的回去学习一下关于Cortex-M的启动逻辑和原理,才能惬意的玩转IMXRT芯片!此处做个随笔,主要是方便自己回顾,温故而知新嘛! 关键: 要分析cortex-m的启动原理需要从两个方面入手 1.芯片的memory map 2.链接文件 Memory Map: 我们用STM32F4XX来分析!The chip memory ma

Netty启动分析

基于Netty-3.2.5 先看一段Netty的服务端代码: import java.net.InetSocketAddress; import java.util.concurrent.Executors; import org.jboss.netty.bootstrap.ServerBootstrap; import org.jboss.netty.channel.Channel; import org.jboss.netty.channel.ChannelHandlerContext; i