DJ Delorie wrote:
I'm thinking I should design in some series resistors on the address
and data lines for my RAM expansion board (30MHz, about 6" of 8 mil
trace on DS FR4, 5v). How does one go about calculating an ideal
resistance? The mcu spec doesn't have a min rise time spec, the ram
chips are 20ns (50MHz) and imply they want a 3ns rise time.
I figure I can put in zero-ohm resistors for now, and experiment with
one of the lines, but I'd rather just come close enough on the first
try ;-)
You could write a book on this but, for starters:
1 - if you have an impedance mismatch on your lines, then there will be
reflections on it when the line driver switches.
2 - does this matter? Sometimes, sometimes not. If you're driving a
clock input, you want a clean monotonic signal at the clock pin, and you
won't get this with reflections going up and down the line.
Alternatively, if your timing is tight, then you may need to ensure that
you get a full signal swing at the receiver within the timing budget.
You may have a problem if, for example, you need the signal to propagate
several times up and down the line before it reaches the required level
at the receiver. There are other issues, but probably not important
here. Early generation DRAMs, for example, sometimes had problems with
excessive ringing.
3 - You're not driving a clock pin, so how tight is your timing?
Probably not tight. Is this a synchronous or an async RAM? Do the
address lines have to set up for a clock edge? Calculate your timing. If
you've got a few ns spare on your address and data lines, then there's
no point in impedance matching, since you can tolerate a few reflections
on the line.
4 - If - and it's probably unlikely - you find that your timing is so
tight that you can't tolerate reflections, then you need to terminate
your lines in some way. There are several ways to do this; series
termination resistors are the simplest. These go at the driver, *not* in
the middle of the line. The point is to match the output impedance of
your MCU address drivers to the track impedance on your PCB. Calculate
your track impedance. There used to be a web-based calculator at
ultracad.com, but it's not responding at the moment; or try
eskimo.com/~ultra, but that's not responding either. Yours are probably
quite high; probably well over 100 Ohms. Now find the output impedance
of your drivers. This is easier said than done, since it won't be in the
datasheet. You can calculate it from the I/V curves, but these won't be
in the datasheet either. As a last resort, you can guess that they're
probably about 20 Ohms, for both low-going and high-going transitions.
Your resistor then has to be, in this case, about 100R - 20R = ~80R.
This ensures a half-amplitude signal gets propagated down the line,
which will then reflect at the receiver to the full 100%, with no
further reflections. But you probably don't need to do this anyway.
5 - the data lines are more complex, because they have drivers at both
ends (unless you have separate data in/data out buses). This is much too
complex to go into quickly, but you may need to double-terminate for
best performance. But, in your case, you probably don't need it at all.
If your timing budget is this tight, use faster components instead.
6 - the RAM chip input rise time spec isn't relevant. They're just
concerned that there might be oscillation problems if the input ramps
too slowly.
7 - The important spec on your scopes/analysers is the front-end
bandwidth. To have any hope of detecting and dealing with "faster" slew
rates (~2ns and below) you need at least 500MHz bandwidth.
8 - Bottom line for this sort of board and until you get more experience
- forget it, except when driving clock lines, in which case design the
track for 50 Ohms, and put in a pad at the driver for a resistor, which
will probably be about 33R. 50 Ohms requires wide tracks unless you have
small layer gaps; run the calculator.
Further reading: look up old articles on EDN; these are generally
pitched at beginner level, but will be good enough for most designs. I
found http://www.interfacebus.com/Design_Termination.html recently; I
haven't looked at it in detail, but it looks Ok at first sight.
Evan
_______________________________________________
geda-user mailing list
geda-user@moria.seul.org
http://www.seul.org/cgi-bin/mailman/listinfo/geda-user