Electronic – Speed of various prototype systems for digital electronics

fpgafrequencyprototypingreliability

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.

Best Answer

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.