When Difference Matters: Differential Signaling

We have talked about a whole slew of logic and interconnect technologies including TTL, CMOS and assorted low voltage versions. All of these technologies have in common the fact that they are single-ended, i.e. the signal is measured as a “high” or “low” level above ground.

This is great for simple uses. But when you start talking about speed, distance, or both, the single ended solutions don’t look so good. To step in and carry the torch we have Differential Signalling. This is the “DS” in LVDS, just one of the common standards throughout industry. Let’s take a look at how differential signaling is different from single ended, and what that means for engineers and for users.

Single Ended

Collectively, standards like TTL, CMOS, and LVTTL are known as Single Ended technologies and they have in common some undesirable attributes, namely that ground noise directly affects the noise margin (the budget for how much noise is tolerable) as well as any induced noise measured to ground directly adds to the overall noise as well.

By making the voltage swing to greater voltages we can make the noise look smaller in proportion but at the expense of speed as it takes more time to make larger voltage swings, especially with the kind of capacitance and inductance we sometimes see.

Differential

diff4

Enter Differential Signaling where we use two conductor instead of one. A differential transmitter produces an inverted version of the signal and a non-inverted version and we measure the desired signal strictly between the two instead of to ground. Now ground noise doesn’t count (mostly) and noise induced onto both signal lines gets canceled as we only amplify the difference between the two, we do not amplify anything that is in common such as the noise.

Continue reading “When Difference Matters: Differential Signaling”

Nessie, the Educational Robot

At the Lifelong Learning Robotics Laboratory at the Erasmo Da Rotterdam in Italy, robots are (not surprisingly) used to teach all of the fundamentals of robotics. [Alessandro Rossetti] and the students at the lab have been at it for years now, and have finally finished their fifth generation of a robot called Nessie. The big idea is to help teach fundamentals of programming and electronics by building something that actually uses these principles.

The robot is largely 3D printed and uses an FPGA to interact with the physical world through a set of motors and sensors. The robot also uses a Raspberry Pi to hold the robot’s framework. The robot manages the sensors in hardware with readers attached to the CPU AXI bus. The CPU reads their values from memory space, though, so the robot is reported to be quite quick.

The lab is hoping to take their robot to a robotics competition in Bari, Italy. We hope that they perform well there, since we are big fans of any robot that’s designed to teach anyone about robotics and programming. After all, there are robots that help teach STEM in Africa, robots that teach teen girls about robots, and robots that teach everyone.

A Better Way to Plug a CPLD into a Breadboard

If you read my first post about a simple CPLD do-it-yourself project you may remember that I seriously wiffed when I made the footprint 1” wide, which was a bit too wide for common solderless breadboards. Since then I started over, having fixed the width problem, and ended up with a module that looks decidedly… cuter.

To back up a little bit, a Complex Programmable Logic Device (CPLD) is a cool piece of hardware to have in your repertoire and it can be used to learn logic or a high level design language or replace obsolete functions or chips. But a CPLD needs a little bit of support infrastructure to become usable, and that’s what I’ll be walking you through here. So if you’re interested in learning CPLDs, or just designing boards for them, read on!

Continue reading “A Better Way to Plug a CPLD into a Breadboard”

Rory Aronson on Documenting Open Source Projects

Every project starts off with an idea. Sometimes those ideas are bigger than one person, or even a small group of people. That was the position [Rory Aronson] found himself in with Farmbot, his finalist entry in the 2015 Hackaday Prize. Documentation was key for [Rory]. Farmbot first came into the world in the form of a white paper. The paper included a request for collaborators, making this an open source project from day 0. Documentation has been important throughout the Farmbot project, so it was naturally the topic of [Rory’s] talk at the 2015 Hackaday SuperConference.

Continue reading “Rory Aronson on Documenting Open Source Projects”

Embed with Elliot: Debounce your Noisy Buttons, Part I

“Psst…hey buddy! Wanna see the sweetest little debouncing routine this side of Spokane? C’mon over here. Step right over those bit-shift operators, they don’t bite. Now look at this beauty right here: I call her The Ultimate Debouncer(tm)!”

Everybody who works with microcontrollers eventually runs into the issue of switch bounce or “chatter”, and nearly everyone has their own favorite solution. Some fix it in hardware, others fix it in software. Some hackers understand chatter, and others just cut-and-paste the classic routines. Some folks even try to ignore it, and they might even get lucky, but everyone’s luck runs out sometimes.

In the next two “Embed with Elliot” installments, I’ll look a little bit at bouncing, look into doing hardware debouncing both the simple way and the right way, and build up a basic software routine that demonstrates some of the principles and which works just fine, though it’s not optimized. We’ll be laying the groundwork.

In the next installment, I’ll let you in on my personal favorite debounce routine. It’s a minor tweak on a standard, but with some special sauce that’s worth spreading around. I’ll call it the Ultimate Debouncer(tm), but will it stand up to the scrutiny of the Hackaday commenteers? (How’s that for a cliffhanger?!?)

For now, though, let’s look into switch bounce and the standard ways to fix it in hardware and software.

Continue reading “Embed with Elliot: Debounce your Noisy Buttons, Part I”

How to Be the Hardware Engineer at a Startup

For those who prefer the smell of solder smoke to lines of code then you may be a hardware engineer. What you should consider is how to land a job at a startup, how to work fast, be a team player, keep an open mind, and be organized. Joining a startup will be the greatest challenge of your career. You can do it! Be a hardware engineer at a startup and change the world.

Continue reading “How to Be the Hardware Engineer at a Startup”

Programmable Logic: Build Yourself a CPLD Module

A Complex Programmable Logic Device (CPLD) is a great piece of hardware to have in your repertoire. As its name implies, you can program these chips to serve the logic functions you need. This might be replacing an obsolete chip, or maybe just a way to learn and try different techniques. What better way to learn than to get your hands on a CPLD and give it a try?

I created a CPLD module with the intent of being able to plug it into lots of things including solderless breadboards, but I screwed up. It seems that the plugin space available on a solderless breadboard is 1.1”, I had made the footprint 1” wide leaving no room for a row of wires on both sides. Duh.

But let me back up and show more about what I’m doing , I wanted to make a programmable piece of logic that could be built as a kit one could easily solder at home, could be programmed in-circuit, and could work at 3.3 or 5 volts.

Image5bTo implement an easily solderable kit I went with an older CPLD part that also has 3.3v and 5v versions that will maintain its programming regardless of power. The logic itself is a CPLD IC from the Altera Max family with two versions that fit the board with either 32 or 64 macrocells. A macrocell is the basic logic building block and it is programmed with logic “terms” and then interconnected to other macrocells through a programmable interconnect.

Continue reading “Programmable Logic: Build Yourself a CPLD Module”