问题描述:我的spartan6芯片选用6slx75-3fgg676,SPI flash选用M25P64-VME6TP。采用主串模式,调试时用bit文件看chipscope波形,工作时用mcs文件从SPI flash往spartan6里配置。当时的现象是:
1、FPGA能找到,bit文件可以烧写,chipscope有波形;
2、SPI flash能找到,能擦除,能空白检查,但是不能校验,不能烧写mcs文件,都是failed;
具体的图如下所示:
1、问题出现后,我自己先检查了下载线,电源,板子焊接,都没有问题,于是就开始查原理图,主要集中在flash周围,因为表面看起来是flash没有下载成功。
2、发现自己有几个地方和datasheet略有不同,主要是CCLK上拉下拉的电阻值不对,照datasheet接,上拉100欧,下拉100欧,换了还是不行。
3、重新下载多次,后来发现程序其实是下载进去了,只是DONE信号不拉高,所以错误,把DONE信号的上拉下拉全部去掉,再烧写,发现DONE为低,始终不拉高。
4、找不到原因,来此版发帖求助。kaiseradler帮我看了一下图,认为我的SPI flash不对,这是1bit的,我的接法是4bit的,所以不行。我把flash的3脚和7脚断开,再烧程序,还是不对。初步认为不是硬件的问题。
5、kaiseradler提示我,在生成MCS文件时,应该用CCLK做时钟,且把DONE信号的选项勾上。我查了一下,自己确实是这么做的。又把工程考给kaiseradler,生成的MCS,下载还是不行。
6、kaiseradler提示我软件的版本问题,我原来用的是12.2,后来我又装了13.1,还是一样错误。
7、远程求助kaiseradler,分析现象,是程序已经下载,DONE信号有2V,因此可能是FPGA加载的问题,在烧写程序时选择不自动加载,这时就可以了,能下载mcs文件了。
8、把原理图发给kaiseradler,帮忙分析了一下,SPI flash周围电路没有问题,而FPGA周围的M0和M1的上拉下拉电阻取值太大,datasheet上是直通的,我的电阻都是4.7K,于是换成100欧的,这时在烧写程序时不管是不是自动加载,都可以了!
以上是我的问题总结,贴出来与大家共享,这里再次感谢kaiseradler的帮助! |