R
Richard Damon
Guest
On 8/11/17 3:04 AM, rickman wrote:
Driving them all with DDR signals isn't putting you at the edge of the
spec, but only at the edge of the spec assuming everything is matched
nominal no-skew. Since we KNOW that output matching is not perfect, and
we don't have a manufacture guaranteed bias (a guarantee that if any
output if faster, it will be this one), we are starting outside the
guaranteed specs. Yes, you can pull some tricks to try and get back into
spec and establish a bit of margin, but this puts the design over into
the realms of 'black arts', and best avoided if possible.
Richard Damon wrote on 8/11/2017 12:09 AM:
On 8/10/17 10:39 PM, rickman wrote:
Allan Herriman wrote on 8/10/2017 2:02 AM:
On Wed, 09 Aug 2017 22:33:40 -0400, rickman wrote:
brimdavis@gmail.com wrote on 8/8/2017 8:37 PM:
KJ wrote:
It's even easier than that to synchronously control a standard async
SRAM.
Simply connect WE to the clock and hold OE active all the time
except
for cycles where you want to write something new into the SRAM.
As has been explained to you in detail by several other posters, your
method is not 'easier' with modern FPGA's and SRAMs.
The simplest way to get a high speed clock {gated or not} off the
chip,
coincident with other registered I/O signals, is to use the dual-edge
IOB flip-flops as I suggested.
The DDR technique I mentioned would run synchronous single-cycle read
or write cycles at 50 MHz on a Spartan-3 Starter kit with an
(IIRC) 10
ns SRAM, 66 MHz if using a duty-cycle-skewed clock to meet the WE
pulse
width requirements.
Another advantage of the 'forwarding' method is that one can use the
internal FPGA clock resources for clock multiply/divides etc.
without
needing to also manage the board-level low-skew clock distribution
needed by your method.
I can't say I follow what you are proposing. How do you get the clock
out of the FPGA with a defined time relationship to the signals
clocked
through the IOB? Is this done with feedback from the output clock
using
the internal clocking circuits?
About a decade back, mainstream FPGAs gained greatly expanded IOB
clocking abilities to support DDR RAM (and other interfaces such as
RGMII).
In particular, one can forward a clock out of an FPGA pin phase aligned
with data on other pins. You can also use one of the internal PLLs to
generate phase shifted clocks, and thus have a phase shift on the pins
between two data signals or between the clock and the data signals.
This can be done without needing feedback from the pins.
You should try reading a datasheet occasionally - they can be very
informative.
Just in case someone has blocked Google where you are: here's an
example:
https://www.xilinx.com/support/documentation/user_guides/ug571-ultrascale-
selectio.pdf
Thank you for the link to the 356 page document. No, I have not
researched how every brand of FPGA implements DDR interfaces mostly
because I have not designed a DDR memory interface in an FPGA. I did
look
at the document and didn't find info on how the timing delays through
the
IOB might be synchronized with the output clock.
So how exactly does the tight alignment of a clock exiting a Xilinx FPGA
maintain alignment with data exiting the FPGA over time and differential
temperature? What will the timing relationship be and how tightly
can it
be maintained?
Just waving your hands and saying things can be aligned doesn't explain
how it works. This is a discussion. If you aren't interested in
discussing, then please don't bother to reply.
Thinking about it, YES, FPGAs normally have a few pins that can be
configured as dedicated clock drivers, and it will generally be
guaranteed
that if those pins are driving out a global clock, then any other pin
with
output clocked by that clock will change so as to have a known hold time
(over specified operating conditions). This being the way to run a
typical
synchronous interface.
Since this method requires the WE signal to be the clock, you need to
find a
part that has either a write mask signal, or perhaps is multi-ported
so this
port could be dedicated to writes and another port could be used to read
what is needed (the original part for this thread wouldn't be usable with
this method).
I'm not sure you read the full thread. The method for generating the WE
signal is to use the two DDR FFs to drive a one level during one half of
the clock and to drive the write signal during the other half of the
clock. I misspoke above when I called it a "clock". The *other* method
involved using the actual clock as WE and gating it with the OE signal
which won't work on all async RAMs.
So with the DDR method *all* of the signals will exit the chip with a
nominal zero timing delay relative to each other. This is literally the
edge of the async RAM spec. So you need to have some delays on the
other signals relative to the WE to allow for variation in timing of
individual outputs. It seems the method suggested is to drive the CS
and WE signals hard and lighten the drive on the other outputs.
This is a method that is not relying on any guaranteed spec from the
FPGA maker. This method uses trace capacitance to create delta t =
delta v * c / i to speed or slow the rising edge of the various
outputs. This relies on over compensating the FPGA spec by means that
depend on details of the board layout. It reminds me of the early days
of generating timing signals for DRAM with logic delays.
Yeah, you might get it to work, but the layout will need to be treated
with care and respect even more so than an impedance controlled trace.
It will need to be characterized over temperature and voltage and you
will have to design in enough margin to allow for process variations.
Driving them all with DDR signals isn't putting you at the edge of the
spec, but only at the edge of the spec assuming everything is matched
nominal no-skew. Since we KNOW that output matching is not perfect, and
we don't have a manufacture guaranteed bias (a guarantee that if any
output if faster, it will be this one), we are starting outside the
guaranteed specs. Yes, you can pull some tricks to try and get back into
spec and establish a bit of margin, but this puts the design over into
the realms of 'black arts', and best avoided if possible.