我在通过JTAG接口编程Xilinx 3an1400 FPGA时遇到了问题。
我的定制PCB由连接在JTAG链中的CPU和FPGA组成,CPU位于第一位,FPGA位于第二位。我可以通过JTAG访问和编程CPU而没有任何问题。当FPGA独立于JTAG链时,其编程也是成功的。
仅当FPGA和CPU在一个链中时才存在问题。识别链中设备的数量看起来没问题。 Xilinx Impact工具可识别两个器件,但在尝试在FPGA上执行读取ID命令时出现错误。
我试图将JTAG频率降低到750Khz但没有成功。我收到了消息:
INFO:iMPACT:583 - '2': The idcode read from the device does not match the idcode in the bsdl File.
INFO:iMPACT:1578 - '2': Device IDCODE : 00001111111111111111111111111110
INFO:iMPACT:1579 - '2': Expected IDCODE: 00000010011000110000000010010011
我连接逻辑分析并获取信号转储。 当只连接FPGA并且一切都按预期工作时,我从read ID命令获取下一张图片: Logic analyzer picture dump FPGA only in the chain
当我在一个链中使用TI AM5726 CPU和FPGA时,我通过记录读取ID命令看到下一张图: Picture of the JTAG dump with CPU and FPGA connected in the chain
应该绕过CPU,因为已经发送了6个(CPU IR寄存器的长度),并且读取ID命令看起来与前一个示例(001001)相同,但是该命令的响应不是预期的。
可能CPU不在旁路中并且以某种方式打破了TDO信号,但是从发送模式来看,它应该是。 我还用示波器检查了信号的形式,看起来还不错。
问题的潜在原因是什么?
当我在Impact工具的启动时运行“Initialize chain”命令时,它检测到第二个设备是Spartan 3AN1400,所以我认为它必须以某种方式在初始化期间执行读取ID操作。