Skip to content

Basic I/O 0: Volts, amperes and ground

Voltage Domains

Throughout this course, we try to avoid electrical concepts like voltage, current etc and replace them with 0’s and 1’s as much as possible.. Alas, the student must know some limited amount about the basics of electricity..

In order to connect your hardware design to the outside world, you need to attach your design into I/O devices like DIP-switches, keypads, keyboards, 7-segment displays, monitors, joystick, mouse etc. By connection, we mean electrical connection. As most of our students seems not to know what does “electrical connection” means, they are totally unable to transfer a signal from one circuit to a different circuit. And this is after they took a whole course aptly titled “Electric circuits”!!!!!. Hence we re-describe all that is necessary for such a task in this section..

The “picture” given below is somewhat simplified, but it is amply sufficient for all sorts of computer engineering applications.

Voltage differences, not voltages!

Precisely speaking, the concept of “voltage” is wrong!!!! The correct concept is the “voltage difference”, not the voltage.

Assume that we have a 5 volt battery:

  • Every point in the world which is connected to the bottom of a battery by a conductor wire is called “at zero volts”.
  • Every point in the world which is connected to the top of a battery by a conductor is called “at five volts”.
  • A point which is not connected to the bottom or top of a battery by a zero-resistance wire does NOT have a well-defined voltage.

We could have equivalently said

  • Every point in the world which is connected to the bottom of a battery by a zero-resistance wire is called “at 1047 volts”.
  • Every point in the world which is connected to the top of a battery by a zero-resistance wire is called “at 1052 volts”.
  • A point which is not connected to the bottom or top of a battery by a zero-resistance wire does NOT have a well-defined voltage..

which wouldn’t make any difference. What is important is voltage differences, not the (quite arbitrary) numbers we assign to the ends of a battery as voltages. After having said that, it is obvious that the most intuitive way to do this is

  • Take the bottom of the battery as zero volts
  • Assign voltages to everything according to that..

In order to make a circuit work, one must connect both the top of the battery and the bottom of the battery to the circuit. Only this will establish a voltage difference throughout the circuit.

Problem: The problem with this 0-5 volts assignment is that most students think that anything that is not connected to the battery do have “zero volts”, as “it is not connected to anywhere”, hence it is “zero”. This results in very faulty designs, in which the students just connect the top end of the battery to a load and do not bother to connect the bottom end, as “it already has zero volts”..

What if we have two batteries/circuits?

Each battery/circuit has its own voltage domain. Hence there may br 0’s or 1’s traveling through one circuit, but these are “undefined voltages” seen from the other circuit.

If we want to transfer signals from one circuit to the other, we must take both circuits into the same “voltage domain”. This is done by connecting the grounds of both circuit.

Conversion Between Voltage Domains

The FPGA kit we are working with (DE0-nano) operates at 1.1 Volts.