# Speed of various prototype systems for digital electronics

I would like some advice on what digital signal frequencies I'd be able to work with for hobby projects.

I asked this question recently about interfacing to a memory chip from an FPGA as a hobby project. The answers are all very good but have made me realise that I have a little more to learn before attempting some a project. I feel I could probably build the design I want in verilog but I have a lot to learn about physical design first.

I realise this question is rather vague, but all I'm looking for is an order of magnitude answer to get some idea what projects might be viable for me.

I can buy an FPGA on a breakout board so that I can connect plug in wires to a breadboard for experimenting. I imagine that for flashing an LED there would be no issues with this. I imagine that I could likely get I2C working (as I've done similar things with microcontrollers). I could likely get an interface to a static memory chip working at a MHz or so maybe? I imagine that interfacing to a memory chip at 133 MHz would have zero chance of working. Assuming I take some care with connections, wiring etc, what is the highest frequency that it's even worth my time trying to make work for a hobby project on such a setup?

I presume that if I make a home made PCB I could work with somewhat higher frequencies. What sort of frequencies would I likely have to go beyond before I'd really have to know what I'm doing to design high frequency boards?

If I got a professionally made board I imagine I could likely get it to work a little faster still, but beyond that I'd need to educate myself a lot more to know how to make it work reliably with high speed signals.

Again, I'm not looking for exact figures, just order of magnitude figures to prevent me from wasting my time on something that's never going to work.

• I would say that you are going to need to educate yourself before you reach the full speed potential of a homemade PCB. Pro PCBs can do very nice things, but without good design principles you will get the same result you would get with homemade. Also, please note that it is the rise time of your digital signal that plays the largest part in determining the highest frequencies of your spectral content. – Kortuk May 7 '11 at 8:57
• Indeed. I'm just interested to find out what frequencies are likely to work with only basic care.. – John Burton May 7 '11 at 9:17
• that is why I made it a comment, it is definitely not an answer. – Kortuk May 7 '11 at 12:17

Now that question will open a can of worms! Basically, there is no way to accurately answer that question because there are so many factors involved. That being said...

The "quick" answer is that I wouldn't be concerned until the signal frequencies get near 1 MHz. Between 1 and 10 MHz I would be extra careful. And above 10 MHz I would have a PCB made. Of course there are exceptions, and this is what I would do, etc. But as a rough order of magnitude place to start, it works.

There are many issues involved with this, and I'll try to cover them here...

As others have stated, it's not the signal frequency but the rise/fall time of the signal edges. If you can slow down the edges (but not too much) then you'll have an easier time. FPGA's are great for this because you can change the slew rate and drive strength of the I/O Pins. In a synchronous system, this is more important on the clock lines than the data lines (I'm not saying that data isn't important, however.)

While doing proper signal termination is important, you can't do signal termination without knowing the characteristic impedance of the wire. And in a breadboard type system you won't know what the impedance is, no matter how hard you try. In this case, you'll simply end up twiddling with it until it just happens to work.

Pay attention to the signal return paths and loop currents. This is going to play the biggest part in making the system run fast. Of course, this is damn near impossible to do correctly with a breadboard, but those are the breaks. This is why people use power/gnd planes and 4+ layer PCB's.

I've ran PCIe (2.5 GHz) over wire-wrap-wire for about 5 inches. And I've ran PCIe over a "commercially available" wire for 12 inches. So you can get good performance from wire. It's all in how you use it.

A good breadboard can probably run faster than a bad 2-layer PCB.

Of course, most modern parts are in packages that require a PCB.

• +1 for "A good breadboard can probably run faster than a bad 2-layer PCB." – Toybuilder May 7 '11 at 13:56
• A bad pcb is just like having a bad breadboard, normally more constrained because you are limited on the number of layers of wire you can have. Otherwise you earned my +1. I think you could make your list of issues a numbered or bulleted list and break up your post to look much nicer. – Kortuk May 7 '11 at 15:44
• Great answer! and although most modern parts need a PCB they can usually be obtained an a simple breakout board, or put on a tiny one for connecting to a breadboard – John Burton May 7 '11 at 20:21

Okay, Here is how you decide. From a basic level, you just need to determine if you are dealing with Transmission lines. As the article states, as long as the wire is less then 1/10th the wavelength of the signal, you do not have to take into account transmission line affects.

The speed of light is $10^8$ meters per second. For example, at 100MHz, which roughly equates to a rise time of 1nS, you would have termination to worry about around $\frac{10^8}{(10*10^8)}$ meters. This means 10 centimeters. Not that far, but far enough.

This does not mean you can just treat wires as ideal as long as they are below that point. You still need to determine their inductance and capacitance and determine if they will ring. With a simple LC circuit a resistor in parallel with the capacitor will stop oscillations. This is a lower level theory, but for many also complicated, which is why higher frequency boards become an issue before the lines become transmission lines.

In short, I think you can do 100MHz, use a solid ground plane, try not to embed traces in it and keep the lines short. When you are ready, read High Speed Digital Design. I do not promise it is an easy read, but it is one of the best books I have ever read.

Why don't you try how far you can get as a challenge?

I would guess that with careful termination and short twisted pair wires of equal length you could get up to at most about 100MHz, though it won't be easy. A GHz oscilloscope will help to see how the signals are doing (ringing and such).

I've not tried this myself on a breadboard, but seen 80MHz signals go over more than half a meter of twisted pair with several connectors in between. It was ugly, but made to work with series resistors to dampen the ringing.

A nice project would be a fast JTAG adapter, the faster the better but useful already at lower speeds.

• I shall experiment, that's exactly my plan :) I just want to be sure that what I start with has some chance to work – John Burton May 7 '11 at 9:56
• Well, one of the nice things about modern FPGAs is that you have programmable clock sources in there. So you can actually do things like up the frequency until it starts mis-operating and then back off. If you don't have high speed test equipment, that and educated estimates may be all that you can do. – Chris Stratton Jun 2 '11 at 5:03