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
用户1115908 2009-9-11 13:36
用户1112456 2009-7-22 11:44
tengjingshu_112148725 2009-6-11 11:42