今天调试FPGA时遇到了一些奇怪的问题。先说一下我的板子的配置方式,用的是JTAG和AS两种下载配置,首先用JTAG来调试,焊板子的时候就只焊了JTAG口,AS口仍那里没管。先在Quartus2里写了个测试程序,程序很简单,让FPGA输出信号控制led的亮灭,没有输入信号。下载线用的是ByteBlaster2。FPGA芯片用的是cyclong 的EP1C6Q240C8N,VCCIO是3.3V,内核电压是1.5V。在调试过程中出现了这样的问题:
Quartus软件上显示程序已经下载成功,但是FPGA没有按照程序运行。而且闲置的IO口的电平全为高,下载线连接上时,IO输出电压大都在3.5V左右 。
我开始以为是芯片坏了,后来把下载线拔下来,在测IO电压就是正常的3.3V左右,这时我确定芯片没坏,然后又试着下载了几次结果都一样。下载线也没坏,因为在其他板子上都试过了,好用的。
去网上查了下资料,也有人碰到像我这样的情况,他的问题是nCE管教没有拉低,接了个下拉电阻就好了。我去检查我的板子,发现我的nCE是置低的。那就不是这个原因了。我就去检查了一下我的原理图,一点一点的对照,最后发现了一个重大问题,我的FPGA的nStatus管教居然没有接信号,这是一个重大失误,去网上查了下发现这个管脚非常重要,不接就会导致不能正确配置。于是我非了好大的劲从芯片的nStatus管脚引了一根线出来,给它加了一个10k的上拉电阻。本以为这样就可以大功告成了,可是结果却还是一样。在接上下载线下载后,测了一下nConfig脚的电压发现是方波,用万用表测得是1.6V左右,nStatus的电压是低。nStatus为低电平表示配置出现错误。于是我又检测了JTAG的各个引脚,发现没有短路现象。又去仔细对照原理图,没有发现什么问题。又重复下载几遍,都是这个结果。真是快绝望了。
去上了会儿网,休息了一下,回来拿着板子一个一个脚测电压,最后发现configdone这个脚不能被拉高,检查了一下,发现pcb没有按照原理图把这个脚与10k的上拉电阻连接起来。于是又飞了一根线。马上下载程序,这下所有的灯都亮了,完全符合要求。忙碌了一天终于有了一个满意的结果。
总结了一下原因,还是由于自己太马虎,这些本来在设计初就应该检查出来的,弄到出板了才找到,还耗费了时间,以后做pcb一定要认真检查,确保万无一失。
coyoo 2009-7-31 12:18