2
\$\begingroup\$

I am designing high-speed TTL-based processor.

I will be using only fast AC, ACT and LVC series, so switching frequencies will be in 100Mhz range with 1-3ns fronts.

I plan to use homemade 2-sided PCB (4-layer commercial-grade PCB is not an option). 'Bottom' will be VCC, 'top' will be GND with high-speed traces on it. Low-speed signals will be just soldered wires on top of the PCB. I plan to drill lots of holes across PCB and solder bunch of 1uF ceramic caps there to get some distributed capacitance.

Here are the questions:

1) What is optimal FR4 thickness for such high-speed schemes? I have both 1.5mm and 0.5mm FR4. I guess 0.5mm FR4-based PCB would allow some distributed capacitance between VCC & GND...

2) What is the optimal trace width for high-speed digital signals? As I don't know input/output impedance of all TTL devices I have, I can't do impedance matching. What is the optimal clearance between trace & surrounding GND? I guess it's hard to get even 1pf trace to GND capacitance...

3) Do I need any termination for 5-10cm traces with 1-3ns fronts? If so, what it should be (220 ohm to GND?)?

\$\endgroup\$
  • \$\begingroup\$ What is your highest clock frequency? \$\endgroup\$ – markrages Sep 22 '11 at 18:15
  • \$\begingroup\$ @markrages Hopefully, general clock will be 60-100Mhz (this alone would require clock distribution tree), but as I was saying, there will be parts which will work with 1-3ns fronts & 2ns delays. \$\endgroup\$ – BarsMonster Sep 22 '11 at 18:19
  • \$\begingroup\$ if you don't have a high-speed clock, then your PCB requirements are relaxed: In a slow system, any ringing on the data lines is ancient history by the time the clock arrives. But if you're actually running at 100 MHz clock, then careful layout will be required. \$\endgroup\$ – markrages Sep 22 '11 at 18:24
  • \$\begingroup\$ Did this ever get anywhere near built? What clock frequency did you achieve? \$\endgroup\$ – pjc50 Apr 16 '12 at 14:42
  • \$\begingroup\$ @pjc50 Well, indeed it appeared not a month-long project. I am now more realisticly aiming at the end of this year :-) Already got all required parts (sweet VHC, AC and LVC series). \$\endgroup\$ – BarsMonster Apr 19 '12 at 14:31
12
\$\begingroup\$

Well, I was hoping that someone else would answer this question, but apparently nobody wants to touch it.

@BarsMonster, the reason why nobody (except the fool that I am) wants to answer this one is because you're crazy. And I don't mean that in a negative way! But you are wanting to do something that very few people would try to do, and the odds of failure are very high.

Much of this answer is going to sound like I'm saying, "Don't even try this", but let me assure you that this is absolutely NOT what I'm saying. If you do this, I want you to have the best chances for success possible and that means knowing what you're getting yourself into.

Let me recap what your project entails, and then I'll get you answering your question.

You're doing a CPU in TTL logic (a.k.a. 74xxx type chips). This would normally require maybe 100+ chips. If you use some larger chips (like an ALU chip, etc.) you might get it down to 20+ chips. The PCB for this will be around 5"x5" on the small end, and maybe 12"x12" on the large end. With 20 chips, each with 14 signal pins, you will have a minimum of 280 connections. More likely there will be 800+ connections and way more than 20 chips.

You're estimating that the clock frequency of this will be around 100 MHz. Having hundreds of signals on a 2 layer PCB, all switching with a 100 MHz clock and 1-3 ns edge rates is going to be, well, crazy. Many of these signals are going to be on long traces with many branches and forks. Without a solid power/gnd plane underneath. Routing of power and signals is going to be super difficult, and managing signal integrity will be almost impossible.

For starters, you really need to read the book, High Speed Digital Design: A Handbook of Black-Magic, by Howard W. Johnson. It is an expensive book, US$100, but is worth every penny. On this project alone it will save you $100 in time and PCB mistakes. It talks about all the issues of routing a PCB like yours.

1) What is optimal FR4 thickness for such high-speed schemes? I have both 1.5mm and 0.1mm FR4. I guess 0.1mm FR4-based PCB would allow some distributed capacitance between VCC & GND...

The optimal thickness would be less than 0.010" (0.25mm) between your signal layers and your power/gnd planes. But since you have a 2 layer PCB there is no point in worrying about PCB thickness. The thickness will be whatever is required to give the board the mechanical strength required to hold all of your parts, about 0.0625" (1.5mm).

You also don't have power or ground planes. Filling in the unused space on the 2-layer PCB with power and ground does not constitute power and ground planes. Those "planes" will not function well (if at all) as a signal return path. That's because they are so broken up into smaller shapes due to the signals being routed on those same planes. The only thing those "planes" will do is make it slightly easier to route your power/gnd traces-- and I do mean only slightly easier.

"Distributed capacitance" is something that is approaching "Urban Legend" status. Everyone talks about it like it is some sort of holy grail, but few have gone through the math. So here it is: if you have SOLID power/gnd planes separated by 0.25mm with a dielectic constant of 4.5 then you will achieve 16 pF of capacitance per cm2. With a separation of 0.125mm it goes up to 32 pF/cm2.
Now let's assume that each chip on the PCB requires 2.0 cm2 of space and you do have a 4 layer PCB with 0.125mm separating the power/gnd planes then you'll get 64 pF per chip! Clearly that is not enough, so this distributed capacitance is not enough to remove actual caps from the PCB!

The above example (4 layer PCB) assumes that there isn't a lot of space between layers. If that were the case then to make the PCB 1.5mm thick then there will be a lot of space between the signal and plane layers. This has the effect of increasing the trace impedance to a point where it's useless. You really want the trace impedance to be in the 50-100 ohm range for high speed signals. If your signal and plane are 0.5mm apart then your trace width would have to be impossibly wide to get the impedance down (and a wide trace has enough capacitance to mess other things up). The point is, with a 4 layer PCB there is a trade-off between distributed capacitance and trace impedance. And since the dist-cap effect is so small you're much better off going in the direction of lower trace impedance.

The dist-cap of a 1.5mm thick 2 layer PCB is 2.66 pF/cm2.

2) What is the optimal trace width for high-speed digital signals? As I don't know input/output impedance of all TTL devices I have, I can't do impedance matching. What is the optimal clearance between trace & surrounding GND? I guess it's hard to get even 1pf trace to GND capacitance...

The optimal trace width is "as thin as is reasonable". More than 0.25mm is too thick. You're trying to reduce the capacitance of the trace by making the traces thinner.

The optimal space (clearance) between traces, or between traces or planes, is not super important. There is not much coupling when signals/planes are "edge on". So make it as small as possible, if only because it will make routing easier.

Sometimes putting two signals side by side for a long distance (several inches) can cause crosstalk. But honestly, crosstalk caused by that will be minor compared to the other signal integrity problems caused by huge AC signal return paths and impedance mismatches.

3) Do I need any termination for 5-10cm traces with 1-3ns fronts? If so, what it should be (220 ohm to GND?)?

Read that book. About 1/4 of that book is devoted to this exact subject, and I cannot hope to give you all of that info in only a couple of paragraphs. But I'll try! :)

You will need termination for any trace longer than about 5 mm. Also, I don't believe your figures of 1-3 ns edges. They will either have to get much faster to meet your 100 MHz estimate, or your clock rate will have to drop. But more about that in a moment.

The termination resistor should match the trace impedance on your PCB. But because your traces are not over a solid power/gnd place you have no control over your trace impedance. Worse than having no control, your trace impedance is going to be changing as the trace is routed over partial planes and other signals. The point is, with a 2 layer PCB you cannot do proper signal termination.

The exact type of termination you use (even with a 4 layer PCB) is going to depend on the signal topology. By topology, I mean does the signal only go from one driver to one receiver? One to Many with the trace branching out? One to many with everything daisy-chained? One to one, bidirectional? Many to Many, with tri-state buffers? Each of these will require a different method of terminating the signal.

One to One: A series termination resistor at the driver.

One to Many, w/branches: Also called a "star". There are lots of difficulties dealing with this one, and most people advise to not do it at all.

One to Many, daisy chained: A single termination at the end of the line. Usually a resistor to +1.65 volts (assuming 3.3V logic signaling). The +1.65v can't use a normal voltage regulator (there are special regulators for termination). You can also use a voltage divider between +3.3v and GND instead, but that takes much more power. For signals with a 50/50 duty cycle you can use a resistor and cap in series to GND (called AC termination).

Many to Many: Good luck. This is why all the high speed busses have gone serial point to point. Read the book on this one.

What you absolutely won't do is run a resistor of any value to GND. That just doesn't work with TTL signals. This only works when the signal goes both + and -, and averages out to 0 volts.

As I mentioned earlier, I do not believe that you'll get to 100 MHz. Actually, I don't think you'll get even close. A 100 MHz clock has a 10 ns period. So with 10 ns as your timing budget, let's look at what will eat into that budget:

  1. Clock Skew: Clock skew is the difference in clock arrival times for the different flip-flops in the system. In your case, this is going to be mostly due to the difference in clock trace lengths. There are ways to route a clock signal to minimize the differences, but since you only have a 2 layer PCB you are restricted in what you can do. If your PCB is 6" x 6" then I am going to guess that you could have a 6 inch difference in clock trace length from any one flip-flop to any other. Since light travels at 6"/ns you have used up 1 ns of your 10 ns timing budget due to clock skew. 9ns remaining.

  2. Clock Jitter: For this PCB, most of the clock jitter is going to come from signal integrity issues as well as the edge rates of the signal. This is similar in effect to "clock skew", but the source of the problem is different. For your clock signal, signal integrity is going to be much worse than your other signals simply because you are driving a lot of loads from a single source. There are ways to minimize the problems, of course, but you are still going to have issues simply because this is a big problem. My best guess is that your clock jitter is going to be somewhere around 3 ns. It could be as little a 1 ns if you use drivers with fast edges and do a superb job with routing and termination (which you can't do with a 2 layer PCB). 9ns - 3ns = 6ns remaining.

  3. Gate propagation delay: Most of the modern 74xxx type chips have a max Tpd of 3ns or greater. If you have 1 level of logic (I.E., your signal goes through 1 gate between flip-flops) then you will use up 3 ns. If you have 3 levels of logic then you'll need 3 * 3ns, or 9 ns. An 8-bit full-adder could have 17 logic levels, or 51 ns. 6ns - 51ns = less than nothing. Of course you can use a larger chip to do the adder, but there are still plenty of other things that require more than 2 levels of logic. So either way you're out of time.

  4. Signal routing delay: The delay of the signal on the PCB. Again, PCB routing and signal integrity matter most here. Without going into a huge analysis, I would estimate 1-3 ns per route. Most of this time is taken up by the edge rate of the driver. So if you have 1 logic level then you'll have 2 routes (one to the gate, one from the gate).

  5. Setup time of the Flip-Flops: Expect about 2 ns for modern 74xxx parts.

  6. Clock to out time of the flip-flops: The Flip-Flop that I looked at was a 54LVTH574, one of the faster ones, and it needed 4.5 ns.

Add all of this up and you need at least 15 ns per clock, and more likely 50+ ns. So what was 100 MHz is now 20 MHz, and even that is pushing it. Honestly, I would predict that 1 MHz is closer to what you'll achieve.

To conclude: You can do it. It is possible. Many of the things you'll learn doing this project are very valuable. But think very hard about if you want to tackle it all at the same time. Normally you'd learn logic design, PCB design, high speed signal layout, etc each separately.

\$\endgroup\$
  • \$\begingroup\$ Hehe, I am happy that I didn't initially mentioned that my deadline is 4 weeks from now ;-) My bottom VCC plane will be solid, so I can do controlled impedance. Traces will go only on top. So, in this case I need to calculate trace width, so it won't be 'as thin as possible'? In any case, I don't see how 0.2mm x 5cm trace would have any visible capacitance. According to my calculations, with my thin FR4 I can have ~50-60Ohm impedance with my 0.25mm traces. \$\endgroup\$ – BarsMonster Sep 23 '11 at 17:18
  • \$\begingroup\$ Also, top GND will have numerous 1206 jumpers connecting all these 'islands' in multiple places to keep return path "short and wide". \$\endgroup\$ – BarsMonster Sep 23 '11 at 17:19
  • 1
    \$\begingroup\$ @BarsMonster The only way to have 0.25mm wide, 50-100 ohm traces is to have your 2 layer PCB be about 0.25mm thick. This is impossibly thin for an entire PCB and will likely bend and crack under the weight of the components on it. Simply handling the PCB during assembly is going to be too much stress for that PCB. You'll need the 1.5mm thick PCB to get the strength you need, which means that your trace width will have to be around 1.5 to 2.5mm wide--and that's where your capacitance gets to be too much. \$\endgroup\$ – user3624 Sep 23 '11 at 17:41
  • \$\begingroup\$ Just measured my thin FR4... It appeared to be 0.5mm, and it doesn't feel too fragile... 0.25mm trace promises 91 Ohm impedance and 0.6pF/cm capacitance - should be good, chips are rated at 15pF load, input is 5pF, remaining 10pF allows for 16cm tracks. \$\endgroup\$ – BarsMonster Sep 23 '11 at 17:52
  • \$\begingroup\$ Funny thing :-) Capacitance per cm does not depend on dielectric thickness with fixed impedance :-) I.e. when I calculate required trace width for 50 Ohm impedance for 0.5 and 1.5mm FR4, I am getting almost same capacitance per cm. So the only problem is that wide enough tracks are hard to do while routing around SO16-150 chips. So the question is what impedance should I be targeting. 100 Ohm allows for waaaay thinner tracks. \$\endgroup\$ – BarsMonster Sep 23 '11 at 18:01
3
\$\begingroup\$

Some thoughts:

It's all about rise/fall times, not clock frequency. Rise or fall to fast with an impedance mismatch somewhere in your system (driver output, trace, via, reciever) and you'll get a glitch from the echoes that could be interpreted as a clock. I've seen this happen.

Trace impedance is determined by board material, trace width, and distance to ground/power plane (please use a plane - very important the the trace is over a plane and does not cross planes). There are calculators online to figure this out. 50 Ohms is frequently used because it's pretty easy to generate with standard width traces and distances to the ground/power plane on FR4 board (the cheap stuff).

Use surface mount ceramic caps to distribute capacitance - small values/packages work the best - 100nF in an 0603 is good and can be still be hand soldered. AE caps are good for bulk, but suck at AC. Leaded ones are useless above 1MHz - that's why small ceramics are needed for high speed "return currents".

To save yourself a lot of headache, put a 100 Ohm resistor at the output of each driver. This will slow the rise and fall times so that no "ringing" occurs.

Do not "fan out" high speed traces. If so, fan it out right at the driver, using 100 Ohm resistors at the start of each fan-out trace.

If connectors are involved, place a ground pin near the high speed pin to help control impedance

That's about all I can think of right now - good luck.

\$\endgroup\$
2
\$\begingroup\$

0) Revisit your goals as @David Kessner suggested.

1) What is optimal FR4 thickness for such high-speed schemes?

Doesn't matter. You just need a different trace width depending on which you choose.

2) What is the optimal trace width for high-speed digital signals?

There isn't one. You can choose a width to have a given impedance.

3) Do I need any termination for 5-10cm traces with 1-3ns fronts? If so, what it should be (220 ohm to GND?)?

At 1 ns and 10 cm, yes. At c the weavelength is 30 cm, ~20 cm at electrical speeds. 10 cm is almost half that, well above the guidelines.

\$\endgroup\$
  • \$\begingroup\$ The question is what impedance should I be aiming at for CMOS drivers & receivers? \$\endgroup\$ – BarsMonster Sep 23 '11 at 23:23

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.