From: salimbaba on
Hello!
I am using xcf16p EEPROM, and 2 xc3s4000 FPGAs connected in a daisy chain
on a custom board. The problem is when i program my FPGAs through JTAG
interface, FPGA 1 always gets programmed and verified and always shows
output whereas FPGA 2 always gets programmed and verified and sometimes it
shows the output and sometimes it doesnt.

I have failed to understand the reason for this behavior :s

Kindly help me .. thanks

---------------------------------------
Posted through http://www.FPGARelated.com
From: John_H on
On Jul 15, 3:11 am, "salimbaba"
<a1234573(a)n_o_s_p_a_m.n_o_s_p_a_m.owlpic.com> wrote:
> Hello!
> I am using xcf16p EEPROM, and 2 xc3s4000 FPGAs connected in a daisy chain
> on a custom board. The problem is when i program my FPGAs through JTAG
> interface, FPGA 1 always gets programmed and verified and always shows
> output whereas FPGA 2 always gets programmed and verified and sometimes it
> shows the output and sometimes it doesnt.
>
> I have failed to understand the reason for this behavior :s
>
> Kindly help me .. thanks          
>
> ---------------------------------------        
> Posted throughhttp://www.FPGARelated.com

Do you always program them in sequence after power-up?

If you randomly reprogram the devices well after the initial program,
you could be getting trouble from an open-drain configuration I/O pin
connected in common between the two chips. To program chips in a
chain independently after power up in the Xilinx chain I used a couple
years back, assertion of the program pin causes the done pin to go low
which confuses the other chip as an input.
From: salimbaba on
Yes i always program it in a sequence i.e. FPGA 1 and then FPGA 2.
another point i missed in the last post is that while programming FPGA 1, i
give it the bit file with DRIVE DONE = YES, and when i program FPGA 2 , i
give it the bit file with DRIVE DONE = YES.

When i give FPGA 1 the bit file with DRIVE DONE = NO, it doesn't get
programmed and FPGA 2 shows the same random behavior as mentioned above.
and when i reprogram FPGA 1 after FPGA 2 , FPGA 1 gets programmed. Now,
there's something fishy going around with the DONE signal i guess, but i'm
not sure about it so i need pointers, help, anything that would give a
lead.

Thanks John =)

---------------------------------------
Posted through http://www.FPGARelated.com
From: John_H on
On Jul 16, 5:18 am, "salimbaba"
<a1234573(a)n_o_s_p_a_m.n_o_s_p_a_m.owlpic.com> wrote:
<snip>
>
> there's something fishy going around with the DONE signal i guess, but i'm
> not sure about it so i need pointers, help, anything that would give a
> lead.
>
> Thanks John =)    

Read up on the DONE signal and its effect as an *input* to the FPGA.

Note that it gets pulled down (regardless of drive=yes or no, I
believe) when the program bit is first asserted. One way to avoid
this interaction is to break out the done separately from the two
FPGAs so the open-drain pull-down of the DONE signal on one device
doesn't affect the operation of the second; rather than one DONE
connection to your programming device (assuming you're not programming
via cable) you use two.

Also look at whether DRIVE DONE = YES actively tries to assert the
DONE pin even if the DONE from the other chip drives the same line
with a typically-stronger pull down. Typical use is to have the DONE
pulled up with a resistor and leave the rising edge for when all
devices are programmed. The DRIVE DONE = YES would be for non-ganged
DONE pins such as a single FPGA or separately pinned out DONE signals
for the individual FPGAs so you don't have to add the pull-up to the
single driver.
From: salimbaba on
Another thing, when the FPGA 2 gets programmed and i read its status
register, it looks perfectly in accordance to a working FPGA's status word
but it doesn't show any output. Is it possible that FPGA 2 never comes out
of the startup sequunce ?


---------------------------------------
Posted through http://www.FPGARelated.com