原创 SPARTAN3 AN系列电路设计及使用注意事项

2009-6-10 17:02 5666 8 11 分类: FPGA/CPLD

XILINX在前年推出了内置FLASH的SPARTAN FPGA系列,不仅可以为FPGA提供上电加载配置,而且还可以为应用提供数据存储空间。换句话说,就是内部的FLASH单是为FPGA配置你还用不掉,所以可以用来存放数据信息,且掉电之后还可以保存例如你可以将单板的序列好(SN)存放放在里面,或者其他的加密校验数据。


我们最常用的XC3S50AN,XC3S200AN,XC3S700AN和XC3S1400AN。


相对于其他系列,SPARTAN3AN系列的价格还是很有诱惑力的,绝大多数的单片价在100人民币之内,完全可以替代CPLD。


注意事项一:VCCAUX必须使用3.3V供电


另外一个好处是,SPARTAN3AN系列里面你可以只提供两组电源,内核VCCINT为1.2V,其他的VCCAUX和VCCIO可以接3.3V,事实上,你要使用内部的FLASH加载特性,你必须将VCCAUX接3.3V,如果你按照以往的经验,将VCCAUX接2.5V,那么则无法使用内部FLASH配置特性。


注意事项二:M0~M2必须通过电阻上下拉,不能直接连接到电源或者地


我们有的工程师喜欢直接将M0~M2这三个模式位直接上拉到电源或者地,这个在其他产品系列中使用可能没有什么问题(事实上我不认为这是一个很好的设计习惯),但在SPARTAN3AN系列中,你将遇到一些麻烦,要么你无法直接从内部FLASH中启动,要么你的JTAG无法访问FPGA。


其原因在于,如果你想要从内部FLASH中加载并配置FPGA,那么M0~M2必须配置为110,而JTAG模式要求M0~M2配置为101,如果你直接将M0~M2模式脚接到电源(1)或者地(0)上面,那么内部的弱上拉、弱下拉无法实现JTAG所要求的模式值,所以比如会出现JTAG无法访问的问题。


注意事项三:内部FLASH编程时不要轻易选中DATA LOCKDOWN选项


我曾经遇到一个例子,在电路设计及调试的过程中已经规避了上述这两个问题,但老是出现“‘1′: Verifying device…Verify failed on page 0”的错误提示,寄编程之后老是校验出错,导致DONE信号无法变高,再对芯片进行擦除检查,发现虽然提示擦除命令执行成功,但在“page 0”上还是校验失败。


启动内部状态读取指令(如下):


> impact -batch
> setmode -bs
> setCable -p auto
> identify
> readStatusRegister -p 1 (假设FPGA是JTAG链上第一个器件)


发现SECTOR 0和1已经被LOCK上了,所以可能是实现编程的时候不小心将“DATA LOCKDOWN”选项选中了。


如果出现这个问题,那么这个芯片内部无法再重新被编程,所以只有重新换一个片子或者用其他PROM来给FPGA编程了。


再与大家分享一些调试技巧:


1)你可以用上面的命令,或者在IMPACT编程工具里面读取芯片的当前状态,来验证M0/M1/M2等状态值。


2)M0/M1/M2的上拉理想阻值为4.7K~10K,而下拉阻值为200~1K(不能太小哦)。


3)VS0/VS1/VS2一般接111就可以了。


4)DONE信号上最好用200~330(100太小,我试过了)欧姆电阻上拉一下,或者在生成bit文件的将“Drive DONE high”选项勾上。


5)一般情况下,主要JTAGk口能够访问,M0~M2位电平没有锁死,那么SPARTAN3AN系列的FPGA的调试肯定不会有什么大问题的。


注]:本文转帖自乐善的网站http://www.losang.cn

文章评论3条评论)

登录后参与讨论

用户1115908 2009-9-11 13:36

USER FLASH的地址范围是多少?为什么我用到OX100以后的地址就会把芯片配置的内容冲掉呢

用户1112456 2009-7-22 11:44

我刚好在调试XC3S200AN,我现在遇到问题是下载程序经常不成功。即使成功了,当时检测输出正常;一旦掉电再上电,它就不工作了。就好像没有烧写成功一样。您判断我的问题出在哪里了。谢谢 我的EMAIL是yinbh@mail.iee.ac.cn

tengjingshu_112148725 2009-6-11 11:42

我的是Spartan-3E
相关推荐阅读
用户1174293 2009-10-13 15:05
PID整定经验
这段时间做了一个数控项目,用到了数字PI调节,现在将整定过程稍做整理,给大家参考。采用增量式PI算法,数学公式原型:△u(k)=Kp*(e(k)-e(k-1))+Ki*e(k)+Kd*(e(k)-2e...
用户1174293 2008-10-18 15:14
W77E58外扩RAM的教训
近期公司的一个项目以W77E58为核心,外扩掉电保护RAM,XC9572,A/D,D/A等。本来是一个很普通的51系统,结果前后折腾了很久才最终搞定。第一版由同事做的硬件,我做的软件,功能测试很快就通...
用户1174293 2007-01-09 13:14
EEPROM长效读写
常用的EEPROM如24LC04等的使用寿命大概是10万次,这在一些频繁修改存储数据的场合往往不够。一个很自然的想法是以空间换时间,用分块的方式轮流写入。设想在00H单元记录当前数据区首地址,每次根据...
用户1174293 2006-12-22 12:33
C51中断函数
C51的中断函数的格式为:void FuncIr(void) interrupt x [using y]<?xml:namespace prefix = o ns = "urn:schemas-...
用户1174293 2006-12-22 11:55
C语言的宏定义
写好C语言,漂亮的宏定义很重要,使用宏定义可以防止出错,提高可移植性,可读性,方便性 等等。下面列举一些成熟软件中常用得宏定义:<?xml:namespace prefix = o ns = "...
EE直播间
更多
我要评论
3
8
关闭 站长推荐上一条 /3 下一条