Hi all,
I managed to constrain pretty much all of my timing problems... and have gotten rid of all sporadic/intermittent problems with missing and extra bytes.
I now have only a periodic problem, where after every 510 bytes which are successfully recieved I loose 2 bytes of data that I should recieve.
Although my logic simulates properly using ModelSim I believe this is probably something within my design rather than anything else. However to track down at which point this occurs I want to test my FT245 synchronous interface and my DC FIFO reads and writes individually to try to find the weak link in the chain.
I DO NOT HAVE ACCESS TO SIGNAL TAP (basically as my device is programmed over USB and I have no suitable JTAG connector to allow me to use signal tap)
However I am trying to re-create small sections of my design with dummy data to test each part individually to track down the fault.
However, when trying to impliment my FT245 Synchronous interface I am failing to meet my timing requirements.
The table below shows the timing requirements of the 245 interface, with the timing diagrams shown in the first attachment.
name ..|.. min ..|.. nom ..|.. max ..|.. units ..|.. comment ---------|--------|----------|----------|----------|-------------
t1 .......|...........|..16.67..|.............|.. ns .....|.. CLKOUT period
t2 .......|...7.5...|.. 8.33 ..|.............|.. ns .....|.. CLKOUT high period
t3 .......|...7.5...|.. 8.33 ..|.............|.. ns .....|.. CLKOUT low period
t4 .......|...1......|.. 7.15 ..|.............|.. ns .....|.. CLKOUT to RXF#
t5 .......|...1......|.. 7.15 ..|.............|.. ns .....|..CLKOUT to read DATA valid
t6 .......|...1......|.. 7.15 ..|.............|.. ns .....|..OE# to read DATA valid
t7 .......|...1......|.. 7.15 ..|.............|.. ns .....|..CLKOUT to OE#
t8 .......|...11....|............|.............|.. ns .....|..RD# setup time
t9 .......|...0......|............|.............|.. ns .....|..RD# hold time
t10 .....|...1......|.. 7.15 ..|.............|.. ns .....|..CLKOUT TO TXE#
t11 .....|...11....|............|.............|.. ns .....|..Write DATA setup time
t12 .....|...0......|............|.............|.. ns .....|..Write DATA hold time
t13 .....|...11....|............|.............|.. ns .....|..WR# setup time
t14 .....|...0......|............|.............|.. ns .....|..WR# hold time
I am still struggling to understand how the setup and hold times are manipulated using the set_input_delay and set_output_delay.
Would:
set_output_delay -clock FTDI_CLK_ext -max 11.0 ]
set_output_delay -clock FTDI_CLK_ext -min 0.0 ]
Be correct to constrain AC[3] (which is the WR# signal) so that its setup time is at minimum 11ns and its hold 0ns... or am I completely missing the point.
Also if you set a constraint and timequest fails. You recompile your design so that it can be refit. If the clock and data delays are still too long to meet your timing requirements how do you proceed further after this?
Sorry for being so rubbish with this! Any and all help much appreciated!!
Regards,
Lee H