[转载]JTAG不能给FPGA下载程序总结

标签:
转载 |
分类: FPGA |
在学习FPGA下载固化程序的时候,遇到JTAG口不能下载程序的问题,现在问题已经解决,抽空总结一下altera的FPGA下载文件的类型下载方式以及解决问题的方法。
1、下载FPGA里面 有三种方式
JTAG----下载sof文件,掉电丢失,但是可以将sof转换为jic文件,用EPCSx配置,掉电不丢失。
AS------下载pof文件,配置EPCSx,掉电不丢失。
2、在cycloneIII数字手册上的下载配置方式:
3、JTAG口的配置方式:
信号名 |
I/O |
说明 |
DATA0 |
输入 |
配置数据 |
DCLK |
输入 |
配置时钟 |
nCONFIG |
输入 |
器件复位脚(该信号的上升沿使配置开始) |
nSTATUS |
输出 |
状态位(如果该信号线为低,表明在配置过程中出现错误,需重新配置) |
CONF_DONE |
输出 |
状态位(在配置完成后,该信号为高) |
具体5个引脚的功能如下:
(1)DATA0:输入;单片机串行的配置数据输入口。
(2)DCLK:输入;为外部数据源提供时钟。
(3)nCONFIG:输入;配置控制输入。低电平使ACEX1K器件复位,在由低到高的跳变过程中启动配置。
(4)nSTATUS:双向漏极开路(需接上拉电阻);上电后,ACEX1K立即驱动该引脚到低
电平,然后在100ms内释放掉它。nSTATUS必须经过1K电阻上拉到VCC,如果配置中发生错误,ACEX1K将其拉低。
(5) CONF_DONE:双向漏极开路(需接上拉电阻);状态输出。在配置期间,ACEX1K将其驱动为低电平。所有配置数据无误差接收后,由于有上拉电阻,所以将其变为高电平,表示配置成功。CONF_DONE必须经过1K电阻上拉到VCC。
其中在配置中还有另外几个引脚需要注意:
(1) nCE:输入;ACEX1K器件使能输入;nCE为低电平时使能配置过程,为单片配置时,nCE必须始终为低。
(2)nCEO:输出(专用于多片器件);ACEX1K配置完成后,输出为低电平。在多片级联配置时,驱动下一片的nCE端,从而实现多片FPGA的配置。
4、jic文件的生成方式
由于本次项目的板子是以前制得,当初就是不能在AS模式下下载pof文件,所以固化程序只能是jic格式,然后通过JTAG口下载给FPGA的配置存储芯片EPCS*。
Jic文件的生成方式如下:
(1)编译通过HDL文件,时序约束之类的全部完成,全编译生成sof文件,此处不建议signaltap调试的sof文件,如果在用signaltap调试,可以在调试完成以后重新生成sof文件,待下面步骤使用。
(2)Choose Convert Programming Files (File menu).
选择转换编程文件(File->Convert Programming Files)。
(3)在输出编程文件下面,在编程文件类型列表中选择JTAG间接配置文件(.jic)。(Output programmingfile:Programming file type:选择JTAG Indirect Configuration File (.jic)。
(5)在文件名选择栏(File name:output_file.jic),指定你想生成的JIC文件的名字(把output_file换成你想要的名字)。
指定一个现有的SRAM目标文件(.sof)来转换成JIC文件,在Input files to convert下面选择SOF Data,点击Add File...。 指定将要编程的EPCS的FPGA目标器件,选择Flash Loader项,点击Add Device。
(6)如果还超过最大容量,需对sof文件进行压缩。选中sof文件,点击Properties,选择压缩选项Compression。再重新产生jic文件。
(7)选择JTAG模式下载。
5、调试过程所遇到的问题
(1)jic文件不能生成
解决办法前面已经叙述。
(2)生成以后不能下载(这个问题也是我纠缠最久的问题)
下载的时候一直提示:Can't recognize silicon ID for device 1
解决办法:
A、确认你的QII中选择的配置芯片是否和电路板中的芯片一致。到QuartusII的setting->devices->pins & devices... 打开配置界面,其中有一个标签页“configuration”是选择配置芯片型号的,请选为板子上的型号device->epcs16。
B、检查你的下载线是否损坏,据说下载线长不应该超过30CM 但是我自己做的大概有50CM也可以正常使用。(网上如此说,后来问题解决了,但是我的下载线足有60CM)。
C、检查你的电路中的AS模式中的上拉电阻和下拉电阻是否虚焊,还有MSEL0与MSEL1是否选择正确和nSTATUS是否接上拉电阻等。
D、确定你的配置芯片是否损坏,可以使用JTAG烧写配置芯片测试下,如果可写 那就可以排除该错误。
关于最后一个解决办法,在此说明好像不太灵。我在通过JTAG口下载sof文件时,下载成功,没有提示错误,但是下载完成以后没有功能。下载jic文件时只能下载一半,46%~93%不等,就是不能成功。后来用signaltap调试,不能下载sof文件,提示:Invalid JTAG configuration。按照以上检查了所有电压和信号,没有问题,测试TMI没有信号。自己也只能将问题定位到JTAG口,后来大胆换了一片FPGA,问题解决。
注:在调试FPGA时候若要插拔JTAG口,一定要断电操作,JTAG虽然可以热插拔,但是极易损坏芯片。