Routing Three Common Digital Buses
Many digital designs will use some common methods for sending, receiving, and reading digital data. Ever since semiconductor companies began developing highly specialized ASICs, they began working to help standardize and implement digital protocols for communication between digital components. Learning these signaling standards will help you quickly connect components in a new board, and hopefully you’ll have an ability to understand how these standards are used in some different embedded programs.
We’ll be looking at three common digital signaling standards in this lesson: serial peripheral interface (SPI), the inter-integrated circuit (I2C) protocol, and universal asynchronous receiver-transmitter (UART). These are moderate-speed digital protocols, but they can still experience some signal integrity problems in a design if they are not implemented correctly. Almost every microcontroller (including off-the-shelf boards like Arduino) will include these protocols.
Getting Started With Digital Signaling
Before going further, we have to ask the question: what exactly is a signaling standard or a digital protocol? A signaling defines a specific digital data format, number of wires, and data rate that components can use to communicate with each other. Some common signaling standards you might be familiar with are USB, HDMI, and Ethernet as these are used on almost every computer. Meanwhile, signaling standards like SPI, I2C, and UART are used between the chips placed on a circuit board, including in an advanced design like a smartphone or a laptop. They can also be used to route data between boards.
When you need to set up routing for any of these signaling standards for these components, you’ll need to think about the points in the table below. This table summarizes some of the important specifications that will be needed for routing these signaling standards:
|Trace count||2 traces||At least 3 traces||2 traces|
|Data rate||Up to 3.4 Mbit/s||Up to 60 Mbit/s||Up to 1.5 Mbit/s|
|Clocking||Source synchronous||Source synchronous||None|
|Routing topology||Serial bus||Serial bus||Serial bus, although theoretically you can do daisy chaining|
|Driver output impedance||Switches between low and high||Low||Low|
Next, you might be wondering, which signaling standards should you use? This is not really the question we should be asking. When you’re selecting components, think more about the functionality you need, rather than thinking about picking specific signaling standards. Some functions, like needing to plug a device into a computer, will require USB. If you need to add a device to a local area network, then you’ll use Ethernet or possibly WiFi.
From our earlier discussions of high speed digital signals, you might be wondering whether any of these protocols would be considered “high speed”. The answer is: all of these could be considered high speed depending on the data rate and the component that uses the particular protocol. In general, even if you’re routing a digital interface that is not generally considered a high speed interface, it can still experience some of the same signal integrity problems as a high speed interface.