EE Bookshelf: Differential and Matched Length Traces
While I rarely work with signals much beyond 100MHz (SDRAM, etc., usually being the limit), it never hurts to try to improve your understanding of high speed layout. By far the best book you can buy on the subject is High Speed Digital Design: A Handbook of Black Magic by Howard Johnson and Martin Graham. That said, I found myself routing some USB signals that I wanted to have matched since the USB connection is high speed, and after routing the board I took a look around to see what advice I could find before signing off on that part of the board. There are some excellent replies over on stackexchange to “How should I lay out timing matched traces“, with a valuable reminder to step back and consider the scale of your board, and that 1mm length on your PCB probably equals about 5 picoseconds in reality!. Sometimes is helps to just zoom out, look at something at life size, and realize how small that little green board really is! The other good source of information I found was Board Design Guidelines for PCI Express Architecture. Some very good tips on layout and real-world technical considerations that aren’t always cleared explained in more academic texts. Any suggestions yourself? Feel free to post them in the comments below. I’m as happy to find new sources of expert advice as anyone!
As a sidenote, the new Meander tool in Eagle 6 is very useful for this. You can use it to click on a trace and it will tell you the exact length, which makes it much easier than having to type ‘run length-freq-ri.ulp’ in Eagle 5 and try to find your trace in the other 300 listed by name!
Stop breadboarding and soldering – start making immediately! Adafruit’s Circuit Playground is jam-packed with LEDs, sensors, buttons, alligator clip pads and more. Build projects with Circuit Playground in a few minutes with the drag-and-drop MakeCode programming site, learn computer science using the CS Discoveries class on code.org, jump into CircuitPython to learn Python and hardware together, or even use Arduino IDE. Circuit Playground Express is the newest and best Circuit Playground board, with support for MakeCode, CircuitPython, and Arduino. It has a powerful processor, 10 NeoPixels, mini speaker, InfraRed receive and transmit, two buttons, a switch, 14 alligator clip pads, and lots of sensors: capacitive touch, IR proximity, temperature, light, motion and sound. A whole wide world of electronics and coding is waiting for you, and it fits in the palm of your hand.
Python for Microcontrollers — sysfs is dead! long live libgpiod! libgpiod for linux & Python running hardware @circuitpython @micropython @ThePSF #Python @Adafruit #Adafruit
Get the only spam-free daily newsletter about wearables, running a "maker business", electronic tips and more! Subscribe at AdafruitDaily.com !
What’s the best way to route USB traces when they need to cross each other to meet the connector. I recently sent out a design where I encountered this problem. Instead of using vias I routed one of the traces between the pads of the inline resistor of the other USB trace. How much problems do you think I’ll have running the bus at full speed?
Nabil: I had the same problem this week and ended up routing them around the USB pins, but it really depends on the board. I usually try to keep things are short as possible with USB, though, with matched length, and no vias. The real world doesn’t always allow that, though, and honestly we can spend hours fretting over a via and then never think about the 2 metres of poor quality USB cable connecting the board to the PC. 🙂