我一直在追逐这个问题超过一年。
似乎在文档UG332,DS557和其他几个文档中有一些不成文或难以找到的内容。
我已经读了这么多。
我有两个硬件设计都使用XC3S50AN-TQG144
设计1)一旦FPGA启动并运行,M0,M1M2都被指定为输入。
如果通过三态缓冲器将它们提供给程序并运行功能,则使它们能够上拉和下拉,并在电路板PU脉冲(100mS)期间强制进入三态。
这允许1k上拉和下拉电阻器在该初始时段期间定义它们的状态。
两个跳线将电阻连接到+ 3.3v或gnd,具体取决于我是要编程还是运行。
正常运行时M2 = 0,M1 = 1,M0 = 1
对于JTAG编程,M2 = 1,M1 = 0,M0 = 1。
VS2,VS1,VS0使用相同的硬件系统,但正常读取的1k电阻总是连接1,0,1。
PUC_B通过1K电阻永久连接到3.3V。
INIT_B和PROG_B通过1k电阻拉至3.3v。
DONE通过1k和LED串联连接到3.3v,以便我可以看到它是否保持低电平。
结果:我总是可以对闪存和FPGA进行编程(第一个影响选项),但总是失败并且DONE为低(完成LED低)但是它已经成功编程,我每次都可以100%校正校验和来验证它。
它运作良好。
唯一的烦恼是在影响报告失败之前的长时间超时。
设计2)
与设计1相同,但是一旦FPGA启动并运行,M2,M1,M0,VS2,VS1,VS0引脚都将用作输出。
它们具有相同的上拉/下降布置,并具有相同的跳线布置。
为了防止这些引脚驱动的电路以错误的方向拉动它,我使用非反相cmos门来缓冲实际负载。
这是一个更简单的解决方案。
结果:在程序模式下:与设计1相同 - “完成失败”但编程实际上成功了。
在运行模式下:我可以100%成功编程,并且完成了很高的!!
如果我不需要跳线 - 我可以在运行状态下硬线M2,M1,M0。
上述两种情况都是使用Impact 10.1和12.4发生的,除了12.4在失败之前似乎有一个令人讨厌的超时!
我实际上可以在超时期间再次打开电源并获得“成功”,因为这样可以让DONE变高。
Xilinx用于测试此功能的确切电路是什么?
有模仿的电路吗?
你可以说我的设计2是解决方案,但为什么呢?
为什么它在运行模式下编程?
听起来我实际上并没有“触及现场”
以上来自于谷歌翻译
以下为原文
I have been chasing this problem for over a year. It seems that there is something unwritten or difficult to find in the documentation UG332, DS557 and several others. I have read so much on this.
I have two hardware designs both using XC3S50AN-TQG144
Design 1) M0,M1M2 are all designated as inputs once the FPGA is up and running. To enable them to be pulled up and down for the program and run functions if feed them through a tri-state buffer which is forced in to tri-state during the board PU pulse (100mS). That allows the 1 k pull up and down resistors to define their states during that initial period. Two jumpers connect the resistors to +3.3v or gnd depending on whether I want to program or run.
M2=0, M1=1,M0=1 for normal running
M2=1 ,M1=0 , M0=1 for JTAG programming.
The same hardware system is used for VS2,VS1,VS0 but the 1 k resistors connect always 1,0,1 for the normal read.
PUC_B is connected permanently to 3.3V via 1K resistor..
INIT_B and PROG_B are pulled to 3.3v via 1k resistors.
DONE is connected to 3.3v via a 1k and LED in series so that I can see if it stays low.
Result: I can always program the flash and FPGA (first Impact option) but is always fails with DONE low (done led low) however it has successfully programmed and I can read the checksum 100% correct every time to verify it. It functions fine. The only irritation is the long timeout before impact reports that it has failed.
Design 2)
That same as design 1 but M2,M1,M0,VS2,VS1,VS0 pins are all used as outputs once the FPGA is up and running.
They have the same arrangement of pull-up/downs with the same arrangement of jumpers. To prevent the circuit that those pins drive from pulling them in the wrong direction I use non-inverting cmos gates to buffer the actual loads.
It is a simpler solution.
Result: In program mode: the same as design 1 - "done failed to go high" but programming actually succeeded.
In run mode: I can program 100% successfully and done does go high!! If fact I don't need the jumpers - I can hard wire M2,M1,M0 in the run state.
Both of the above situations occur using Impact 10.1 and 12.4 except that 12.4 seems to have an annoyingly longer timeout before fail! I can actually power off then on again during that timeout and get a "succeed" because that lets DONE go high).
What exact circuit to Xilinx use for testing this functionality?
Is there a circuit to emulate?
You could say that my design 2 is the solution but why? and why does it program in the run mode? It sounds like I have not actually "touched the spot"
我一直在追逐这个问题超过一年。
似乎在文档UG332,DS557和其他几个文档中有一些不成文或难以找到的内容。
我已经读了这么多。
我有两个硬件设计都使用XC3S50AN-TQG144
设计1)一旦FPGA启动并运行,M0,M1M2都被指定为输入。
如果通过三态缓冲器将它们提供给程序并运行功能,则使它们能够上拉和下拉,并在电路板PU脉冲(100mS)期间强制进入三态。
这允许1k上拉和下拉电阻器在该初始时段期间定义它们的状态。
两个跳线将电阻连接到+ 3.3v或gnd,具体取决于我是要编程还是运行。
正常运行时M2 = 0,M1 = 1,M0 = 1
对于JTAG编程,M2 = 1,M1 = 0,M0 = 1。
VS2,VS1,VS0使用相同的硬件系统,但正常读取的1k电阻总是连接1,0,1。
PUC_B通过1K电阻永久连接到3.3V。
INIT_B和PROG_B通过1k电阻拉至3.3v。
DONE通过1k和LED串联连接到3.3v,以便我可以看到它是否保持低电平。
结果:我总是可以对闪存和FPGA进行编程(第一个影响选项),但总是失败并且DONE为低(完成LED低)但是它已经成功编程,我每次都可以100%校正校验和来验证它。
它运作良好。
唯一的烦恼是在影响报告失败之前的长时间超时。
设计2)
与设计1相同,但是一旦FPGA启动并运行,M2,M1,M0,VS2,VS1,VS0引脚都将用作输出。
它们具有相同的上拉/下降布置,并具有相同的跳线布置。
为了防止这些引脚驱动的电路以错误的方向拉动它,我使用非反相cmos门来缓冲实际负载。
这是一个更简单的解决方案。
结果:在程序模式下:与设计1相同 - “完成失败”但编程实际上成功了。
在运行模式下:我可以100%成功编程,并且完成了很高的!!
如果我不需要跳线 - 我可以在运行状态下硬线M2,M1,M0。
上述两种情况都是使用Impact 10.1和12.4发生的,除了12.4在失败之前似乎有一个令人讨厌的超时!
我实际上可以在超时期间再次打开电源并获得“成功”,因为这样可以让DONE变高。
Xilinx用于测试此功能的确切电路是什么?
有模仿的电路吗?
你可以说我的设计2是解决方案,但为什么呢?
为什么它在运行模式下编程?
听起来我实际上并没有“触及现场”
以上来自于谷歌翻译
以下为原文
I have been chasing this problem for over a year. It seems that there is something unwritten or difficult to find in the documentation UG332, DS557 and several others. I have read so much on this.
I have two hardware designs both using XC3S50AN-TQG144
Design 1) M0,M1M2 are all designated as inputs once the FPGA is up and running. To enable them to be pulled up and down for the program and run functions if feed them through a tri-state buffer which is forced in to tri-state during the board PU pulse (100mS). That allows the 1 k pull up and down resistors to define their states during that initial period. Two jumpers connect the resistors to +3.3v or gnd depending on whether I want to program or run.
M2=0, M1=1,M0=1 for normal running
M2=1 ,M1=0 , M0=1 for JTAG programming.
The same hardware system is used for VS2,VS1,VS0 but the 1 k resistors connect always 1,0,1 for the normal read.
PUC_B is connected permanently to 3.3V via 1K resistor..
INIT_B and PROG_B are pulled to 3.3v via 1k resistors.
DONE is connected to 3.3v via a 1k and LED in series so that I can see if it stays low.
Result: I can always program the flash and FPGA (first Impact option) but is always fails with DONE low (done led low) however it has successfully programmed and I can read the checksum 100% correct every time to verify it. It functions fine. The only irritation is the long timeout before impact reports that it has failed.
Design 2)
That same as design 1 but M2,M1,M0,VS2,VS1,VS0 pins are all used as outputs once the FPGA is up and running.
They have the same arrangement of pull-up/downs with the same arrangement of jumpers. To prevent the circuit that those pins drive from pulling them in the wrong direction I use non-inverting cmos gates to buffer the actual loads.
It is a simpler solution.
Result: In program mode: the same as design 1 - "done failed to go high" but programming actually succeeded.
In run mode: I can program 100% successfully and done does go high!! If fact I don't need the jumpers - I can hard wire M2,M1,M0 in the run state.
Both of the above situations occur using Impact 10.1 and 12.4 except that 12.4 seems to have an annoyingly longer timeout before fail! I can actually power off then on again during that timeout and get a "succeed" because that lets DONE go high).
What exact circuit to Xilinx use for testing this functionality?
Is there a circuit to emulate?
You could say that my design 2 is the solution but why? and why does it program in the run mode? It sounds like I have not actually "touched the spot"
举报