搜索
bottom↓
回复: 10

Cyclone 系列 FPGA 上电复位的考虑

[复制链接]

出0入0汤圆

发表于 2014-12-5 09:39:31 | 显示全部楼层 |阅读模式
Cyclone 系列 FPGA 上电复位不知道大家一般是怎样实现的

一般的开发板上 都是3.3V --1K--10uF--地,这样一个电路,然后在电容处引出线到FPGA IO管脚,当然最好用时钟输入管脚

于是做了一个测试
always@( ...CLK,...nRESET)
begin
   if(!nRESET)
        testpin_buf <= 1'b0;
   else
        testpin_buf <= 1'b1;       
end


assign TESTPIN =testpin_buf;

然后烧写,断电重启,观测TESTPIN的波形

上电拉高200ms+,然后拉低120ns+,然后一直高


理解:上电拉高200ms这段期间是因为EPCS在对FPGA进行配置,配置完之后拉低120ns,说明进入了if(!nRESET),但只有120ns,就跳出来置高了
将1K换做10K,拉低从120ns-->129ns,基本无变化

用双通道监测RESET管脚信号,和TESTPIN管脚信号
发现当TESTPIN拉高200ms的这段期间内,RESET管脚充电已经接近3.3V

根据特权同学的上电时间公示:t = RC*Ln[(V1-V0)/(V1-Vt)]
10K,10uF,大致在70ms左右就可以达到阈值电平1.7V

特权同学 上电复位的博客
http://bbs.ednchina.com/BLOG_ARTICLE_2026515.HTM

问题来了:既然在200ms配置完之后,RESET管脚已经达到高电平了,为何又进入进入了if(!nRESET),而且只有120ns
后来又将10K,换成51K,现象依旧。


目前的解决方案:
在CONFIG_DOWN处有一非门(三极管),原本是用于当配置完成之后,CONFIG_DOWN置高,经过非门拉低,
这样3.3V--270R--LED--CONFIG_DOWN非,LED亮,用以指示配置成功。
所以现在将复位电路改为3.3V--10K--10uF--CONFIG_DOWN非,
如此上电观测TESTPIN管脚信号
上电拉高200ms+,然后拉低100ms+,然后一直高

至少这样能从原理上解释的通。

不知道大家是如何设计RESET电路的,对于以上问题又能怎样解释?

阿莫论坛20周年了!感谢大家的支持与爱护!!

你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。

出0入0汤圆

发表于 2014-12-6 10:27:38 | 显示全部楼层
会不会 TESTPIN  初始状态就是低 所以配置完成后 会拉低一段时间 然后被逻辑拉高 也就是不是你的程序问题而是配置问题?

出0入0汤圆

发表于 2014-12-6 14:10:50 | 显示全部楼层
觉得 sczh0001 说的有道理!

楼主在声明 testpin_buf 时有没初始化?  我的猜测是:没有初始化的话默认应该是‘0’,那这样的话,当FPGA配置完成后,TESTPIN会输出‘0’,而nRESET在FPGA配置完成的时候已经是‘1’了,故 TESTPIN 要等到CLK触发沿来了之后才会跳为‘1’,CLK的频率是多少呢?若是8MHZ那就约为120ns。如果CLK频率远不是8MHZ,那我这个推论应该就是错误的!

出0入0汤圆

发表于 2014-12-7 09:13:15 | 显示全部楼层
楼主看到的现象,分析都是有道理的.你可以考虑缩短EPCS加载时间,增大复位阻容时间,应该也是可以的。
事实上,上电配置后可以保证电路处于有效复位状态,外部的复位信号是不需要的。我向来是直接上拉到高电平的。

出0入0汤圆

发表于 2014-12-7 10:45:29 | 显示全部楼层
一般FPGA系统有外配MCU,我是靠MCU的IO来初始化FPGA,MCU先控制FPGA下载(从串)完毕,然后给FPGA复位

出0入0汤圆

 楼主| 发表于 2014-12-9 21:08:05 | 显示全部楼层
本帖最后由 Link_Ling 于 2014-12-9 21:09 编辑

3楼 ,主板晶振为40MHz,所以抱歉你的推论是错误的

4楼,上电配置后怎样才能保证电路处于有效复位状态?

默认高电平本来也无可厚非,但是若是IO管脚用来驱动继电器,即IO--驱动(uln2803/三极管)--继电器,一般继电器上拉VCC,IO控制nln2803或是三极管,使继电器工作。
所以问题来了: IO为高的时候,uln2803输出低(三极管导通),继电器通电,即上电会导致继电器工作,

即使加了reset,想让IO在复位状态下输出低,继电器断电,
但是因为配置过程中(200ms)IO是为高的,所以上电的一刹那就会听到继电器啪啪啪的切换声音,不是很舒服

所以上电IO输出低电平,在某些场合还是很必要的

目前解决方法:
1 加非门,不切实际,成本、PCB空间都是不允许的
2 在需要上电输出低的IO处,加下拉电阻,官方推荐1~2K,
目前是在uln2803输入口出“飞"了几个0805的电阻,然后打上胶水,另一头用导线并起来连到GND

但纠结的是,5、6个继电器,哪怕10来个继电器,下拉电阻也无所谓,但是FPGA啊,动不动几十个IO,若是在其他方案中要IO上电输出低电平,难道要几十个下拉电阻么?

出0入0汤圆

发表于 2015-1-14 13:22:14 | 显示全部楼层
进来学习一下哦。

出0入0汤圆

 楼主| 发表于 2015-1-29 18:52:01 | 显示全部楼层
结贴!谢谢大家!

出0入0汤圆

发表于 2015-1-29 19:21:52 | 显示全部楼层
直接用PLL的锁定信号做复位不就好了。

出0入0汤圆

发表于 2015-1-29 19:40:01 来自手机 | 显示全部楼层
如果楼主必须用这个型号,建议控制电源,而不是复位,如果可以actel基于flash的,上电可配置

出0入0汤圆

发表于 2015-1-31 00:05:23 | 显示全部楼层
muok@sohu.com 发表于 2014-12-7 09:13
楼主看到的现象,分析都是有道理的.你可以考虑缩短EPCS加载时间,增大复位阻容时间,应该也是可以的。
事实 ...

对,配置后寄存器无条件为0,仅仅在系统运行时候需要一个复位的时候才有必要设置复位引脚,就说动态复位吧。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-10-3 15:30

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表