[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

Re: gEDA-user: series terminators



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@xxxxxxxxxxxxxx
http://www.seul.org/cgi-bin/mailman/listinfo/geda-user