Glossary 721 words

Hardware Glossary in Plain English

Every technical word used in the BlinkNBuild beginner courses, explained in one or two simple sentences. Words in a lesson with a dotted underline link here. Where a word is taught in full, the entry links to that lesson.

#

--gc-sections
A linker option that throws away every function and variable nothing uses. Compiling with -ffunction-sections -fdata-sections puts each one in its own section, so each can go on its own.Explained in Embedded C++, Volume 00
.bss
The section for global variables that start at zero. Only the space is reserved; nothing is stored in flash, because start-up code writes the zeros.Explained in Embedded C from Zero, Volume 09
.data
The section for global variables that start at a value other than zero. They live in RAM, but their starting values are stored in flash and copied across at start-up, so they cost both.Explained in Embedded C from Zero, Volume 09
.rodata
The section holding constants: anything declared const, and string literals. Like code, it can be read straight out of flash.Explained in Embedded C from Zero, Volume 09
.text
The section holding the compiled instructions. It never changes while the program runs, so on a chip it stays in flash.Explained in Embedded C from Zero, Volume 09
7400 series
A family of small logic chips numbered 74xx, each holding a few gates or a small block: the 7400 has four NAND gates, the 7404 six inverters.Explained in Digital Logic from Zero, Volume 02
[[nodiscard]]
An attribute on a function or a type saying its result must not be ignored. Calling it and throwing the result away gives a warning.Explained in Embedded C++, Volume 07

A

Abstract class
A class with at least one pure virtual function. No object of it can be made; it is used only as a base.Explained in Embedded C++, Volume 04
Access specifier
The words public and private in a class. Public members can be used by any code; private ones only by the class's own member functions.Explained in Embedded C++, Volume 02
Active low
A signal that does its job when it is 0. Such names often end in _n, as in rst_n.Explained in State Machines from Zero, Volume 04
ADC
Analogue-to-digital converter: turns a voltage into a number. A 12-bit one returns 0 to 4095, where 4095 means the reference voltage.Explained in Embedded C from Zero, Volume 13
Address
The number of one byte in memory. Every byte has one, counting up from zero, and hardware registers have them too.Explained in Embedded C from Zero, Volume 02
Address-of (&)
The operator that gives the address of a variable, so it can be stored in a pointer or handed to a function.Explained in Embedded C from Zero, Volume 07
Aggressor and victim
In crosstalk, the aggressor is the wire that switches and the victim is the wire it disturbs. Every net is a victim of some neighbours and an aggressor to others.Explained in Static Timing Analysis from Zero, Volume 12
Alignment
The rule that a type must start at an address divisible by its size - four for a uint32_t on most chips. Breaking it is slow, or a fault.Explained in Embedded C from Zero, Volume 08
Alternating current (AC)
Current that keeps reversing direction, many times a second, as from a mains socket.Explained in Electronics from Zero, Volume 01
always block
A Verilog block that runs again whenever something in its list changes. With @(posedge clk) it describes flip-flops; with @(*) it describes gates.Explained in State Machines from Zero, Volume 04
always_comb
A SystemVerilog block for combinational logic. The tools warn if it would create a latch.Explained in State Machines from Zero, Volume 04
always_ff
A SystemVerilog block for flip-flops. The tools check that it really describes clocked logic.Explained in State Machines from Zero, Volume 04
Ammeter
A meter that measures the current flowing through it. It is connected into the loop, and has almost no resistance.Explained in Electronics from Zero, Volume 01
Analogue signal
A signal that can take any value in a range, such as the voltage from a microphone. Noise changes it, and nothing further on can tell by how much.Explained in Digital Logic from Zero, Volume 00
AND gate
A gate whose output is 1 only when all of its inputs are 1.Explained in State Machines from Zero, Volume 00
Anode
The lead of a diode that current flows into.Explained in Electronics from Zero, Volume 04
AOCV
Advanced on-chip variation: a derate that shrinks for longer paths, because random differences between many gates tend to cancel out.Explained in Static Timing Analysis from Zero, Volume 11
Arbiter
A circuit that decides which of several requesters may use a shared resource, such as a bus or a memory, in each cycle.Explained in State Machines from Zero, Volume 14
Argument
The value you actually pass to a function when you call it.
Array
A row of values of one type, stored next to each other in memory and counted from 0.Explained in Embedded C from Zero, Volume 06
Array decay
What happens when an array is passed to a function: it becomes a pointer to its first element, and the size is lost. That is why functions take a count as well.Explained in Embedded C from Zero, Volume 07
Arrival time
When the data actually gets to the end of a path, counted from the launching clock edge: clock latency, then clock-to-Q, then every delay along the way.Explained in Static Timing Analysis from Zero, Volume 04
ASCII
The standard 7-bit code for English letters, digits and punctuation. A is 65 (0x41) and a is 97 (0x61).Explained in Digital Logic from Zero, Volume 01
ASIC
Application-specific integrated circuit: a chip made for one job. Its circuit is fixed when the chip is manufactured.
ASM chart
Algorithmic state machine chart: a flowchart-like drawing of a state machine, with a box per state, diamonds for decisions and ovals for Mealy outputs.Explained in State Machines from Zero, Volume 09
Assertion
A rule about a design, written as code and checked automatically - usually every clock cycle - that reports an error the moment it is broken.Explained in State Machines from Zero, Volume 12
Asynchronous reset
A reset that acts immediately, without waiting for a clock edge.Explained in State Machines from Zero, Volume 04
Atomic
An operation that cannot be interrupted part-way. A single store to a register is atomic; a read, a change and a write back is three steps and is not.Explained in Embedded C from Zero, Volume 10
auto
A C++ keyword that tells the compiler to work out a variable's type from the value it starts with. auto limit = 10u; makes limit an unsigned int.Explained in Embedded C++, Volume 01

B

Bare-metal
Firmware that runs with no operating system under it. Your code starts, and it owns the whole chip.
Base (of a number)
How many digits a counting system uses, and so how much each place is worth: decimal is base 10, binary base 2, hexadecimal base 16.Explained in Digital Logic from Zero, Volume 01
Base class
The class that another class is built from, such as Sensor for Thermometer. A derived object contains a whole base object inside it.Explained in Embedded C++, Volume 04
Battery
A supply that makes a voltage by chemistry. Its + terminal is at the higher voltage; current flows out of + round the circuit and back into -.Explained in Electronics from Zero, Volume 00
Battery capacity
How much charge a battery holds, in milliamp hours (mAh): the current it can give times the hours it can give it for.Explained in Electronics from Zero, Volume 07
Baud rate
How many bits per second a serial link sends. At 115200 baud, each bit lasts about 8.7 microseconds.Explained in State Machines from Zero, Volume 08
BCD (binary-coded decimal)
Storing each decimal digit in its own four bits: 59 becomes 0101 1001. Easy to display, but it uses more bits than plain binary.Explained in Digital Logic from Zero, Volume 01
Big-endian
Storing the highest byte of a number at the lowest address. Most network protocols send bytes in this order.
Binary
Counting with only two digits, 0 and 1. Each place is worth twice the place to its right, so the places are worth 1, 2, 4, 8 and so on.Explained in State Machines from Zero, Volume 00
Binary encoding
Numbering the states 0, 1, 2, 3 and so on, in binary. It uses the fewest flip-flops.Explained in State Machines from Zero, Volume 05
Bipolar transistor (BJT)
A transistor controlled by current: current into its base lets a current about a hundred times bigger flow from its collector to its emitter.Explained in Electronics from Zero, Volume 05
Bistable
Having two steady states and staying in whichever one it is put in. Every one-bit memory is bistable.Explained in Digital Logic from Zero, Volume 07
Bit
The smallest piece of digital information: a single 0 or 1.Explained in State Machines from Zero, Volume 00
Bit stream
A series of bits arriving one after another, one per clock cycle, on a single wire.Explained in State Machines from Zero, Volume 06
Bit-field
A struct member declared with a width in bits, such as uint32_t mode : 2. Neat to read, but the order and packing are up to the compiler.
Blocking assignment (=)
An assignment that takes effect at once, like a normal step in a program. Use it in combinational blocks.Explained in State Machines from Zero, Volume 04
Boolean algebra
Algebra with only two values, 0 and 1, and the operations AND, OR and NOT. Its rules rewrite a circuit's formula without changing what the circuit does.Explained in Digital Logic from Zero, Volume 03
Boolean expression
A formula made of variables joined by AND, OR and NOT, such as A·B + C'. It describes a logic circuit.Explained in State Machines from Zero, Volume 03
Breadboard
A plastic board of holes with metal clips inside, joined in short rows, for building circuits without soldering.Explained in Electronics from Zero, Volume 08
Breakpoint
An instruction to stop when execution reaches a particular address. In flash it uses a hardware comparator, and a chip only has a few.
Bridge rectifier
Four diodes that steer both halves of an alternating current the same way through a load. Two diodes are always in the path, so it loses about 1.4 V.Explained in Electronics from Zero, Volume 04
Brown-out
The supply voltage dipping below what the chip needs, without going away completely. Behaviour becomes undefined, so chips have a detector that holds them in reset until the voltage recovers.Explained in Embedded C from Zero, Volume 16
Bubble
The small circle drawn on a gate symbol where a signal is inverted, as on the output of NOT, NAND and NOR.Explained in Digital Logic from Zero, Volume 02
Buck converter
A switching regulator that steps a voltage down, using a switch, a diode or second switch, an inductor and a capacitor.Explained in Electronics from Zero, Volume 07
Buffer
A block of memory set aside to hold data for a while - the bytes arriving from a serial port, for example.
Buffer (gate)
A gate whose output simply copies its input. It is used to drive long wires or many loads, and sometimes only to add delay.Explained in Static Timing Analysis from Zero, Volume 02
Buffer overflow
Writing past the end of a buffer, into whatever happens to sit next to it. In firmware it corrupts other variables silently, and the crash appears somewhere else entirely.Explained in Embedded C from Zero, Volume 06
Building block
A small circuit that does one well-known job, such as choosing, decoding or comparing, drawn as a single box and used again and again.Explained in Digital Logic from Zero, Volume 05
Bus
A group of wires that together carry a value more than one bit wide. A timing diagram draws it as a band with the value written inside.Explained in State Machines from Zero, Volume 00
Bus master
The circuit that starts every transfer on a bus. The circuits that answer are called slaves, targets or peripherals.Explained in State Machines from Zero, Volume 08
Bus protocol
The agreed rules by which circuits exchange data over shared wires: which signals exist, in what order they change, and who waits for whom.Explained in State Machines from Zero, Volume 08
Busy-wait
A delay made by counting in a loop. The processor is fully occupied doing nothing, so everything else in the program stops until it finishes.Explained in Embedded C from Zero, Volume 12
Byte
Eight bits, handled as one unit. Memory is counted in bytes, and every byte has its own address.Explained in Embedded C from Zero, Volume 00

C

C++
A programming language built on C. It keeps almost all of C and adds classes, templates and other features that let the compiler check more and do more of the work.Explained in Embedded C++, Volume 00
Callback
A function you hand to another function, to be called when something happens - the usual way a driver reports an event.Explained in Embedded C from Zero, Volume 07
Canary
A known pattern written just past the end of a buffer. If it is ever found changed, something overran the buffer.Explained in Embedded C from Zero, Volume 14
Capacitance
How much charge something stores for each volt across it, measured in farads. The more capacitance a gate must charge, the longer its output takes to change.Explained in Static Timing Analysis from Zero, Volume 02
Capacitor
Two metal plates separated by an insulator. It stores charge, and the more charge it holds, the higher the voltage across it.Explained in Electronics from Zero, Volume 03
Capture edge
The clock edge at which the flip-flop at the end of the path takes the data in. For an ordinary path it is the edge after the launch edge.Explained in Static Timing Analysis from Zero, Volume 01
Carry
The 1 passed to the next column when a column adds up to more than one digit can hold. In binary, 1 + 1 = 10: write 0 and carry 1.Explained in Digital Logic from Zero, Volume 01
Carry look-ahead
Working out every carry at once from generate (A·B) and propagate (A ⊕ B) signals, instead of waiting for it to ripple. Faster, but it needs wide gates.Explained in Digital Logic from Zero, Volume 06
Case analysis
Telling the tool that a signal is held at a constant, such as a mode pin, so paths that cannot happen in that mode are not timed.Explained in Static Timing Analysis from Zero, Volume 08
Cast
Writing a type in brackets to convert a value on purpose, such as (uint8_t)(a + b). It says to the reader, and the compiler, that you meant it.
Cathode
The lead of a diode that current flows out of, marked by a stripe on the part.Explained in Electronics from Zero, Volume 04
Characteristic table
A table that says what a flip-flop's output will be after the next clock edge, for each value of its inputs and its current output.Explained in State Machines from Zero, Volume 03
Chip select
A signal that tells one device on a shared bus that it is being spoken to. It is usually active low, as in cs_n.Explained in State Machines from Zero, Volume 08
Circuit
A closed loop that current can flow round: out of a supply, through components and back. Break the loop anywhere and the current stops everywhere.Explained in Electronics from Zero, Volume 00
Class
A type that keeps some data and the functions that work on it together. In C++ a class is a struct whose members are private unless you mark them public.Explained in Embedded C++, Volume 00
Clock
A signal that switches between 0 and 1 at a steady rate. Each tick tells the flip-flops in a circuit when to update.Explained in State Machines from Zero, Volume 00
Clock cycle
The time from one rising clock edge to the next. Also called one clock period.Explained in State Machines from Zero, Volume 00
Clock domain
All the flip-flops that run on the same clock.Explained in State Machines from Zero, Volume 09
Clock domain crossing (CDC)
A signal travelling from flip-flops on one clock to flip-flops on another clock. It must be synchronised.Explained in State Machines from Zero, Volume 09
Clock edge
The moment the clock changes value. The change from 0 to 1 is a rising edge; the change from 1 to 0 is a falling edge.Explained in Static Timing Analysis from Zero, Volume 00
Clock gating
Switching off the clock to a group of flip-flops while they have nothing to do, to save power.Explained in State Machines from Zero, Volume 13
Clock groups
A constraint saying two clocks have no timing relationship, so paths between them are not timed. Those crossings must be made safe by design instead.Explained in Static Timing Analysis from Zero, Volume 07
Clock latency
How long the clock takes to travel from its source to a flip-flop's clock pin. Only the difference between two flip-flops, the skew, affects a path.Explained in Static Timing Analysis from Zero, Volume 03
Clock multiplexer
A switch that passes one of several clocks through to the same flip-flops. Only one is selected at a time, so the tool must be told not to time one against the other.Explained in Static Timing Analysis from Zero, Volume 07
Clock skew
The difference in arrival time of the same clock edge at two flip-flops. It helps one check and hurts the other, which is why clock trees are built with such care.Explained in Static Timing Analysis from Zero, Volume 01
Clock tree
The network of buffers and wires that carries the clock from its source to every flip-flop. It is built so the clock arrives everywhere at nearly the same time.Explained in Static Timing Analysis from Zero, Volume 03
Clock tree synthesis (CTS)
The step that builds the clock tree: buffers and wires that deliver the clock to every flip-flop with as little skew as the design needs.Explained in Static Timing Analysis from Zero, Volume 06
Clock uncertainty
A safety margin taken off every check, for clock edges that wobble (jitter) and for skew not yet known. Set with set_clock_uncertainty.Explained in Static Timing Analysis from Zero, Volume 04
Clock-gating check
A setup and hold check on the enable of a gate in the clock path. The enable may only change while the clock cannot be affected, or the gated clock glitches.Explained in Static Timing Analysis from Zero, Volume 07
Clock-to-out
A chip's datasheet figure for how long after its clock edge an output pin changes. It is the starting point of every input delay constraint.Explained in Static Timing Analysis from Zero, Volume 10
Clock-to-Q delay
The short time a flip-flop takes, after a clock edge, to show its new value at its output Q.Explained in State Machines from Zero, Volume 13
CMOS
The logic family used in almost every chip today, built from pairs of complementary MOS transistors. It draws almost no power except when it switches.Explained in Digital Logic from Zero, Volume 09
CMSIS
The common style vendors use for Arm chip headers: one struct per peripheral, with volatile members in datasheet order, pointed at the peripheral address.Explained in Embedded C from Zero, Volume 10
Collector
The lead of a bipolar transistor that the load current flows into (for an NPN transistor).Explained in Electronics from Zero, Volume 05
Combinational logic
Logic with no memory. Its outputs depend only on its inputs right now, the way a gate works.Explained in State Machines from Zero, Volume 00
Combinational loop
Logic whose output feeds back to its own input with no flip-flop in the way. A timing tool cannot time around a loop, so one arc must be disabled.Explained in Static Timing Analysis from Zero, Volume 08
Combinational path
A route through gates only, with no flip-flop on the way. A change at its start reaches its end within the same clock cycle.Explained in State Machines from Zero, Volume 02
Comment
Text written for humans and ignored by the compiler. It runs from /* to */, or from // to the end of the line.Explained in Embedded C from Zero, Volume 01
Comparator
A circuit that says whether one binary number is greater than, equal to or less than another.Explained in Digital Logic from Zero, Volume 05
Compile error
A message from the compiler saying it cannot build your code, naming the file and the line where it gave up.
Compiler
A program that turns the C you write into the machine code one particular processor understands.Explained in Embedded C from Zero, Volume 00
Compiler flag
An option on the compiler's command line, such as -O2 or -fno-exceptions, that changes how it compiles your code.Explained in Embedded C++, Volume 00
Component
One part of a circuit, such as a resistor, a capacitor, an LED or a transistor.Explained in Electronics from Zero, Volume 00
Composition
Building a class by giving it members of other classes: a UART driver has a buffer. The usual alternative to inheritance when one thing is not a kind of the other.Explained in Embedded C++, Volume 04
Conditional compilation
Using #if and #ifdef so that some code is only compiled for some builds. The code not chosen never reaches the compiler at all.Explained in Embedded C from Zero, Volume 15
Conductor
A material that lets current flow easily, such as copper. Wires are conductors.Explained in Electronics from Zero, Volume 01
Consensus theorem
A·B + A'·C + B·C = A·B + A'·C. When one term has A and another has A', a third term made of their other letters adds nothing.Explained in Digital Logic from Zero, Volume 03
const
A promise not to change something through this name. On a chip, a const table can be left in flash instead of copied into RAM.Explained in Embedded C from Zero, Volume 05
const member function
A member function with const after its brackets. It promises not to change the object, so it can be called on const objects and through const references.Explained in Embedded C++, Volume 02
const reference
A reference through which a value can be read but not changed. Passing a big struct as a const reference avoids copying it, and the compiler stops the function altering it.Explained in Embedded C++, Volume 01
const_cast
The C++ cast that adds or removes const. Its fair use is calling old code that forgot to mark a pointer const; writing to a real constant through it is undefined behaviour.Explained in Embedded C++, Volume 01
consteval
A C++20 keyword for a function that must be worked out while compiling. A call whose arguments are only known while the program runs is a build error.Explained in Embedded C++, Volume 05
constexpr
A C++ keyword for a value or function the compiler can work out while it compiles, so the chip does not have to work it out while it runs.Explained in Embedded C++, Volume 00
constinit
A C++20 keyword for a global that must be set up while compiling, so it needs no start-up code and is ready before anything runs. Anything else is a build error.Explained in Embedded C++, Volume 06
Constructor
A member function that runs when an object is made, to set it up. It has the same name as the class and no return type.Explained in Embedded C++, Volume 02
Continuous integration
Building and testing every change automatically on a server, so a failure is caught before anyone relies on the change.Explained in Embedded C++, Volume 09
Control signal
A signal from a controller to a datapath that says what to do this cycle, such as "load" or "subtract".Explained in State Machines from Zero, Volume 09
Conventional current
Current drawn as flowing from + round the circuit to -. Electrons really drift the other way, but every formula and schematic uses this direction.Explained in Electronics from Zero, Volume 01
Copy assignment
The operator= that copies one existing object over another. The compiler writes one for you unless you declare it.Explained in Embedded C++, Volume 03
Copy constructor
The constructor that makes a new object as a copy of an existing one, as when an object is passed by value. The compiler writes one for you unless you declare it.Explained in Embedded C++, Volume 03
Coulomb (C)
The unit of electric charge: the charge of about 6.24 billion billion electrons. One coulomb per second is one ampere.Explained in Electronics from Zero, Volume 01
Counter
A register that steps through numbers in order, usually adding 1 at each clock edge. It is a state machine whose states are numbers.Explained in State Machines from Zero, Volume 07
Counterexample
An input sequence, found by a formal tool, that breaks a rule - a ready-made recipe for the bug.Explained in State Machines from Zero, Volume 12
Coupling capacitance
The capacitance between two neighbouring wires. The closer and longer they run side by side, the more of it there is.Explained in Static Timing Analysis from Zero, Volume 12
Coverage
A measure of how much of a design the tests have exercised - for example, which states were visited and which transitions were taken.Explained in State Machines from Zero, Volume 12
covergroup
A SystemVerilog construct that counts which values, and which changes of value, occurred during a simulation.Explained in State Machines from Zero, Volume 12
CRC
Cyclic redundancy check: a short number worked out from a block of data and sent with it. The receiver works it out again, and a mismatch shows the data was damaged on the way.Explained in Embedded C++, Volume 05
Critical path
The slowest path through the logic between two flip-flops. It sets the fastest clock the circuit can run at.Explained in State Machines from Zero, Volume 05
Critical section
A stretch of code that must not be interrupted, usually protected by turning interrupts off and straight back on. Keep it as short as you can.Explained in Embedded C from Zero, Volume 10
Cross-compiler
A compiler that runs on your computer but produces machine code for a different processor - for example, the one inside a microcontroller.Explained in Embedded C from Zero, Volume 00
Crosstalk
One wire disturbing its neighbour through the capacitance between them. It can make the neighbour slower, faster, or put a false pulse on it.Explained in Static Timing Analysis from Zero, Volume 12
Crosstalk delta delay
How much a switching neighbour adds to, or takes from, a net's delay. Setup adds it to the data path; hold takes it away.Explained in Static Timing Analysis from Zero, Volume 12
CRPR
Clock reconvergence pessimism removal: giving back the time counted twice when derating treats the shared part of a clock tree as both slow and fast at once.Explained in Static Timing Analysis from Zero, Volume 11
CRTP
The curiously recurring template pattern: a class inherits from a template of itself, as in class Thermometer : public SensorBase, so the base can call the derived class directly.Explained in Embedded C++, Volume 04
Current
The flow of electric charge, measured in amperes (A). One ampere is one coulomb of charge passing a point every second.Explained in Electronics from Zero, Volume 00
Current gain (beta)
How many times bigger a bipolar transistor's collector current is than its base current - often about 100, and different from part to part.Explained in Electronics from Zero, Volume 05
Current state
The state a machine is in right now. It is held in the state register.Explained in State Machines from Zero, Volume 01
Cut-off frequency
The frequency where a filter's output has fallen to 0.707 of its input. For an RC filter it is 1 / (2 x pi x R x C).Explained in Electronics from Zero, Volume 03

D

D flip-flop
The most common flip-flop. At each rising clock edge its output Q takes the value of its input D.Explained in State Machines from Zero, Volume 00
D latch
A latch with a data input D and an enable EN. While EN is 1, Q follows D; when EN goes to 0, Q holds the last value of D.Explained in Digital Logic from Zero, Volume 07
DAC (digital-to-analogue converter)
A circuit that turns a binary number into a voltage in proportion to it: Vout = Vref x D / 2 to the power n.Explained in Digital Logic from Zero, Volume 09
Dangling pointer
A pointer to memory that no longer belongs to you, such as a local variable of a function that has already returned.Explained in Embedded C from Zero, Volume 07
Dangling reference
A reference to a variable that no longer exists, such as a local variable of a function that has already returned. Using it is undefined behaviour.Explained in Embedded C++, Volume 01
Data type
What kind of value a variable holds, and how many bytes it takes - int, char, float, or a fixed-width type such as uint8_t.Explained in Embedded C from Zero, Volume 01
Datapath
The part of a design that stores and moves data - registers, counters, adders - as opposed to the state machine that controls it.Explained in State Machines from Zero, Volume 08
Datasheet
The maker's document for a part: its pins, its limits, its minimum, typical and maximum values and how to use it. Always check it for the exact part.Explained in Digital Logic from Zero, Volume 02
DDR (double data rate)
Sending data on both the rising and the falling edge of a clock, so each bit gets only half a clock period.Explained in Static Timing Analysis from Zero, Volume 10
De Morgan's theorems
(A·B)' = A' + B' and (A + B)' = A'·B'. To invert an AND, invert its inputs and use OR; to invert an OR, invert its inputs and use AND.Explained in Digital Logic from Zero, Volume 03
Deadlock
A situation in which one machine, or several, wait for something that can never happen, so they stop for ever.Explained in State Machines from Zero, Volume 12
Debounce
Ignoring the rapid make-and-break of a mechanical switch for a few milliseconds after it changes, so one press is counted once.
Debouncer
A circuit that ignores switch bounce. It changes its output only after the input has stayed steady for long enough.Explained in State Machines from Zero, Volume 07
Debugger
A tool that halts the processor and reads its real registers and memory. It works on a board that has locked up, because the debug hardware is separate from the core it is inspecting.
Decimal
Ordinary counting with ten digits, 0 to 9. Each place is worth ten times the place to its right.Explained in Digital Logic from Zero, Volume 01
Decoder
A circuit that turns an n-bit number into one active output out of 2 to the power n. Each output is one minterm of the inputs.Explained in Digital Logic from Zero, Volume 05
Decoupling capacitor
A small capacitor, often 100 nF, beside a chip's power pin. It supplies the short bursts of current the chip draws when it switches.Explained in Electronics from Zero, Volume 07
Default argument
A value written in a function's declaration for a parameter. The compiler uses it whenever a call leaves that argument out.Explained in Embedded C++, Volume 01
Default assignment
A line at the top of a combinational block that gives an output a value first, so that no path through the block leaves it unassigned.Explained in State Machines from Zero, Volume 04
Default constructor
A constructor that takes no arguments. A class whose constructors all need arguments has none, so its objects cannot be made without them.Explained in Embedded C++, Volume 02
Default member initialiser
A starting value written beside a member in the class, such as uint8_t duty_ = 0;. Every constructor that does not set that member uses it.Explained in Embedded C++, Volume 02
Defensive programming
Checking at the boundaries of your code what the rest of the system might get wrong: arguments, ranges, and values coming from hardware. Not the same as checking your own logic.Explained in Embedded C from Zero, Volume 16
Delay cell
A buffer built to be slow on purpose. Tools add them to paths that are too fast, to fix hold violations without touching the logic.Explained in Static Timing Analysis from Zero, Volume 05
Deleted function
A function declared with = delete. Any code that tries to use it fails to compile, which is how a class forbids copying.Explained in Embedded C++, Volume 03
Demultiplexer
A circuit that sends one data input to one of several outputs, chosen by its select inputs. A decoder with its enable used as the data is one.Explained in Digital Logic from Zero, Volume 05
Dependency injection
Handing a class the objects it depends on, usually through its constructor, instead of letting it create or find them itself. It lets a test hand it fakes.Explained in Embedded C++, Volume 08
Derating
Making delays a little slower or faster on purpose, for example by 5%, so a check covers on-chip variation. Setup slows the launch side and speeds the capture clock.Explained in Static Timing Analysis from Zero, Volume 11
Dereference
Following a pointer to the thing it points at, written *p. Reading or writing *p reads or writes the original.Explained in Embedded C from Zero, Volume 07
Derived class
A class built from a base class, written class Thermometer : public Sensor. It has everything the base has, plus its own members.Explained in Embedded C++, Volume 04
Design rules
Limits on every net rather than every path: the slowest edge allowed (max transition), the most load (max capacitance) and the most inputs driven (max fanout).Explained in Static Timing Analysis from Zero, Volume 13
Destructor
A member function that runs by itself when an object's life ends, to clean up. Its name is the class name with a ~ in front.Explained in Embedded C++, Volume 02
Devirtualisation
The compiler replacing a virtual call with a direct call, or with the answer itself, because it can prove which function will run.Explained in Embedded C++, Volume 04
Digital logic
Circuits that work with only two values, 0 and 1, and the rules for combining them. Every computer and phone is built from it.Explained in Digital Logic from Zero, Volume 00
Digital signal
A signal that is read as one of a few fixed values - usually two, 0 and 1. A little noise does not change what it means.Explained in Digital Logic from Zero, Volume 00
Diode
A part that lets current flow one way only, from its anode to its cathode. A silicon diode takes about 0.7 V when it conducts.Explained in Electronics from Zero, Volume 04
DIP (dual in-line package)
A chip package with two rows of pins, spaced to fit a breadboard. Pins are numbered anticlockwise from the notch, seen from above.Explained in Digital Logic from Zero, Volume 02
Direct current (DC)
Current that always flows the same way, as from a battery.Explained in Electronics from Zero, Volume 01
Directed test
A test written by hand to check one particular situation.Explained in State Machines from Zero, Volume 06
Distinguishing sequence
A sequence of inputs that makes two states give different outputs. It proves that the two states are not equivalent.Explained in State Machines from Zero, Volume 10
DMA
Direct memory access: hardware that moves data between a peripheral and memory with no processor involvement, interrupting once per buffer instead of once per byte.Explained in Embedded C from Zero, Volume 13
Don't care (X)
An input combination whose output does not matter - usually because it can never happen. When simplifying, you may treat it as a 0 or a 1, whichever helps.Explained in State Machines from Zero, Volume 03
Double free
Giving the same block back to the allocator twice. It usually corrupts the allocator itself, so the crash happens somewhere unrelated.Explained in Embedded C from Zero, Volume 14
Drive strength
How much current a gate can supply. Bigger versions of a gate, named X2, X4 and so on, charge a load faster, but have bigger inputs themselves.Explained in Static Timing Analysis from Zero, Volume 02
Dropout voltage
The least a regulator's input must be above its output for it to keep regulating. Below that, the output follows the input down.Explained in Electronics from Zero, Volume 07
Duality
In Boolean algebra, swapping every AND with OR and every 0 with 1 in a true rule gives another true rule.Explained in Digital Logic from Zero, Volume 03
Duty cycle
The fraction of each cycle that a pin or a switch is on, given as a percentage. Half on and half off is 50 per cent.Explained in Embedded C from Zero, Volume 12
Dynamic dispatch
Choosing which function to run while the program runs, from the object's real class. Virtual functions do it by looking the address up in the vtable.Explained in Embedded C++, Volume 04

E

E12 series
The twelve standard resistor values in each tenfold step: 10, 12, 15, 18, 22, 27, 33, 39, 47, 56, 68 and 82, times 1, 10, 100 and so on.Explained in Electronics from Zero, Volume 01
ECO (engineering change order)
A small, targeted change to a nearly finished design, such as resizing a few cells or adding delay cells, made without rerunning the whole flow.Explained in Static Timing Analysis from Zero, Volume 14
Edge detector
A circuit that gives a one-cycle pulse when its input changes, for example from 0 to 1.Explained in State Machines from Zero, Volume 02
Edge-triggered
Acting only at the instant a clock changes, usually the rising edge, and ignoring the input the rest of the time. A flip-flop is edge-triggered; a latch is not.Explained in Digital Logic from Zero, Volume 07
Electric charge
The property of particles such as electrons that makes them push and pull on each other. Moving charge is an electric current. It is measured in coulombs.Explained in Electronics from Zero, Volume 00
Electrolytic capacitor
A capacitor with a large value for its size. It has a + and a - lead and must be fitted the right way round.Explained in Electronics from Zero, Volume 03
Electron
A tiny particle with a negative charge, found in every atom. In a metal some electrons are free to move, and their movement is an electric current.Explained in Electronics from Zero, Volume 01
Electronics
Making electric charge flow where you want it, controlled by components such as transistors, to carry energy or information.Explained in Electronics from Zero, Volume 00
Embedded system
A computer built into a product that is not itself a computer - a washing machine, a car mirror, a fitness band. It does one job, usually for years.Explained in Embedded C from Zero, Volume 00
Emitter
The lead of a bipolar transistor that both the base and the collector currents flow out of (for an NPN transistor). It usually goes to ground.Explained in Electronics from Zero, Volume 05
Enable
An input that allows a circuit to act. A counter with enable = 0 keeps its value.Explained in State Machines from Zero, Volume 07
Encapsulation
Keeping a class's data private, so that it can change only through the class's own functions, which keep its rules.Explained in Embedded C++, Volume 02
Encoder
The reverse of a decoder: it turns one active input line into that line's number in binary.Explained in Digital Logic from Zero, Volume 05
Endianness
The order in which the bytes of a number are stored in memory, or sent on a wire: lowest byte first, or highest byte first.Explained in Embedded C from Zero, Volume 02
Endpoint
Where a timing path ends: the data pin of a flip-flop, or an output port of the design. Every check is made at an endpoint.Explained in Static Timing Analysis from Zero, Volume 03
enum
A list of named whole numbers, counting up from 0 unless you say otherwise. It gives states and modes readable names.Explained in State Machines from Zero, Volume 04
enum class
A C++ enumeration whose names stay inside it and never turn into plain integers by accident, so a colour cannot be passed where a pin number is expected.Explained in Embedded C++, Volume 00
Equivalent states
Two states that cannot be told apart from outside: for every sequence of inputs, starting in either gives exactly the same outputs.Explained in State Machines from Zero, Volume 10
Error code
A value returned by a function to say how it went, separate from any result it produces. Preferred over a special value of the result itself.Explained in Embedded C from Zero, Volume 16
Essential prime implicant
A prime implicant that is the only one covering some 1. Every simplest answer must include it, so it is chosen first.Explained in Digital Logic from Zero, Volume 04
Exception
A C++ way to report an error: throw jumps out of the current function, up through its callers, to the nearest matching catch. It needs extra code and tables, so firmware usually turns it off.Explained in Embedded C++, Volume 00
Excitation table
A flip-flop's table read backwards: for each change you want in Q, it says what the inputs must be.Explained in State Machines from Zero, Volume 03
explicit
A keyword on a constructor that stops the compiler using it to turn a value into an object without being asked, so a number cannot become a Led by accident.Explained in Embedded C++, Volume 02
Extended state
The full memory of a machine: its named state plus the values of its counters and registers.Explained in State Machines from Zero, Volume 07
extern
A promise that a variable or function exists in another file. The definition lives in exactly one place; every other file declares it extern.
extern "C"
A C++ marking that keeps a function's plain C name in the object file, with no mangling, so that C code, start-up files and vector tables can find it.Explained in Embedded C++, Volume 01

F

Fake
A simple working stand-in for real hardware or a service, used in tests - a clock the test can set, or a port that stores the bytes it is sent.Explained in Embedded C++, Volume 09
False path
A path the tool is told never to time, because it can never carry data that matters. Declaring a real path false hides any violation on it.Explained in Static Timing Analysis from Zero, Volume 08
Fanout
The number of gate inputs one output drives. Each one adds capacitance, so a big fanout makes the driving gate slower.Explained in Static Timing Analysis from Zero, Volume 02
Farad (F)
The unit of capacitance: one coulomb stored for each volt. Real capacitors are usually microfarads, nanofarads or picofarads.Explained in Electronics from Zero, Volume 03
Fault injection
Deliberately putting a wrong value into a design - in simulation or on hardware - to check that it detects the fault and recovers.Explained in State Machines from Zero, Volume 11
Feedback
A path that takes a circuit's own result back into its input. In a state machine, the current state feeds back into the next-state logic.Explained in State Machines from Zero, Volume 01
final
A keyword that stops any further class being derived from a class, or any further override of a function. It lets the compiler call the function directly.Explained in Embedded C++, Volume 04
Finite
Limited and countable. A finite state machine has a fixed number of states that you can list, such as 3 or 12.Explained in State Machines from Zero, Volume 01
Firmware
The program stored inside a device's own memory. It is called firmware rather than software because it usually stays put for the life of the product.Explained in Embedded C from Zero, Volume 00
Firmware image
The finished file that is copied into a chip - the machine code, plus the starting values of its data. Often a .hex, .bin or .elf file.Explained in Embedded C from Zero, Volume 00
Fixed point
Holding a fractional value in an ordinary integer by agreeing on a scale - for example, storing 23.45 degrees as 2345 hundredths.Explained in Embedded C from Zero, Volume 03
Fixed-width type
A type that is the same size on every machine, such as uint8_t or int32_t. Firmware prefers these, because plain int changes size between chips.Explained in Embedded C from Zero, Volume 02
Flash ADC
An ADC that compares the input with every level at once, using 2 to the power n, minus 1, comparators. The fastest kind, but it grows quickly with the number of bits.Explained in Digital Logic from Zero, Volume 09
Flash memory
Memory that keeps what it holds when the power goes off. A microcontroller's program lives in flash.Explained in Embedded C from Zero, Volume 09
Flip-flop
A one-bit memory. It copies its input to its output only at a clock edge, and holds that value until the next edge.Explained in State Machines from Zero, Volume 00
Floating input
An input connected to nothing that sets its voltage. It drifts and picks up noise, and can read 0 or 1 at random.Explained in Electronics from Zero, Volume 05
Floating point
Numbers with a fractional part, such as float and double. Most values are stored approximately, and small chips often have no hardware for them.Explained in Embedded C from Zero, Volume 03
Flyback diode
A diode across a coil, such as a relay's or a motor's, pointing towards the supply. When the coil is switched off, it carries the coil's current round and stops a voltage spike.Explained in Electronics from Zero, Volume 05
Forbidden zone
The band of voltages between the highest that counts as 0 and the lowest that counts as 1. A signal passes through it while switching, but must not stay there.Explained in Digital Logic from Zero, Volume 00
Formal verification
Checking a design mathematically, over every possible input sequence, instead of running chosen tests.Explained in State Machines from Zero, Volume 12
Format specifier
The code inside a printf text, such as %d or %u, saying how to print the next value.Explained in Embedded C from Zero, Volume 01
Forward voltage
The voltage across a diode or LED while it conducts: about 0.7 V for silicon, and 2 V to 3 V for an LED, depending on its colour.Explained in Electronics from Zero, Volume 04
Four-phase handshake
A handshake in four steps: request rises, acknowledge rises, request falls, acknowledge falls. Both signals return to 0 after every transfer.Explained in State Machines from Zero, Volume 09
FPGA
Field-programmable gate array: a chip full of logic and flip-flops whose wiring you can set again and again, so it becomes whatever circuit you describe.Explained in Digital Logic from Zero, Volume 09
Fragmentation
Free memory split into pieces too small to use. The total may be plenty while every individual gap is too narrow for the next request.Explained in Embedded C from Zero, Volume 14
Frame
One unit on a serial line: a start bit, the data bits, and a stop bit. A byte on a UART usually takes ten bit times, not eight.Explained in Embedded C from Zero, Volume 13
Framing error
In a UART, a stop bit that reads 0 instead of 1 - a sign that the byte was not received correctly.Explained in State Machines from Zero, Volume 08
Frequency
How many times something repeats each second, measured in hertz (Hz). A clock of 100 MHz ticks 100 million times per second.Explained in State Machines from Zero, Volume 00
FSM extraction
When a synthesis tool recognises a state machine in your code, works out its states and transitions, and may give the states new codes.Explained in State Machines from Zero, Volume 05
FSMD
A finite state machine with a datapath: a controller that tells a datapath what to do each cycle, and reads its status signals back.Explained in State Machines from Zero, Volume 09
Full adder
A circuit that adds three bits - two input bits and a carry in - giving a sum bit and a carry out. A row of them adds whole numbers.Explained in Digital Logic from Zero, Volume 06
Full-duplex
Sending and receiving at the same time, on separate wires. SPI is full-duplex: every byte sent brings a byte back.Explained in Embedded C from Zero, Volume 13
Function
A named piece of work. You hand it values, it does its job, and it can hand one value back.Explained in Embedded C from Zero, Volume 01
Function overloading
Giving several functions the same name but different parameter types. For each call, the compiler picks the one whose parameters match the arguments.Explained in Embedded C++, Volume 01
Function pointer
A variable holding the address of a function, so the code to run can be chosen while the program runs.Explained in Embedded C from Zero, Volume 07
Functional safety
Engineering that makes sure a system stays safe even when some of its parts fail - required for cars, aircraft and medical devices.Explained in State Machines from Zero, Volume 11

G

Gamma correction
Bending a brightness scale so that equal steps look equal. The eye judges brightness by ratio, so raw duty cycle steps look badly uneven.Explained in Embedded C from Zero, Volume 12
Generated clock
A clock made inside the design from another clock, for example by dividing it by two. Declaring it as generated tells the tool how its edges line up with the master clock.Explained in Static Timing Analysis from Zero, Volume 07
Glitch
A short, unwanted pulse on a signal. It happens when gates switch at slightly different times, or when an input flickers.Explained in State Machines from Zero, Volume 02
Global variable
A variable declared outside every function. It lives for the whole run of the program and starts at zero.Explained in Embedded C from Zero, Volume 05
GPIO
General-purpose input/output: a pin the program can read as an input or drive as an output, one bit at a time.
Gray code
A way of counting in binary in which each value differs from the next in only one bit: 00, 01, 11, 10.Explained in State Machines from Zero, Volume 03
Gray encoding
State codes arranged so that the machine's usual steps change only one bit at a time.Explained in State Machines from Zero, Volume 05
Ground (0 V)
The point in a circuit chosen as 0 V. Every other voltage in the circuit is measured from it.Explained in Electronics from Zero, Volume 01
Guard object
An object whose constructor takes a resource and whose destructor gives it back, so the resource is held for exactly as long as the object is in scope.Explained in Embedded C++, Volume 03
Guard variable
A hidden flag the compiler keeps beside a static local object, to remember whether the object has been constructed yet.Explained in Embedded C++, Volume 06

H

HAL (hardware abstraction layer)
The lowest layer of firmware: the only code that knows register addresses and bits. Everything above it works through the functions it offers.Explained in Embedded C++, Volume 08
Half adder
A circuit that adds two bits, giving a sum S = A ⊕ B and a carry C = A·B.Explained in Digital Logic from Zero, Volume 06
Half-cycle path
A path launched on one edge of the clock and captured on the other, so it gets only the time between a rising and a falling edge.Explained in Static Timing Analysis from Zero, Volume 07
Hamming code
A way of adding extra bits so that codes differ in several positions. With a distance of 3, a single flipped bit can be found and corrected.Explained in State Machines from Zero, Volume 11
Hamming distance
The number of bit positions in which two codes differ. 011 and 110 differ in two positions, so their Hamming distance is 2.Explained in State Machines from Zero, Volume 05
Handshake
A pair of signals by which two circuits agree that a transfer has happened: one says "here it is", the other says "got it".Explained in State Machines from Zero, Volume 08
HardFault
The exception a Cortex-M takes when something has gone badly wrong. The core records why in the fault status registers and stacks eight registers, including the address of the instruction that faulted.
Hardware description language (HDL)
A language that describes a circuit instead of a list of steps to run. Verilog, SystemVerilog and VHDL are HDLs.Explained in State Machines from Zero, Volume 00
Hardware register
A register inside a peripheral that the processor reads and writes like a memory location, at a fixed address. Writing to it controls the hardware; reading it says what the hardware is doing.
Hardware-in-the-loop testing
Tests in which a computer drives a real board automatically, to check timing and hardware behaviour that a test on a PC cannot.Explained in Embedded C++, Volume 09
Hazard
A short glitch in an output that should not change, caused by gates switching at slightly different times. On a K-map, it can happen where two groups touch without overlapping.Explained in Digital Logic from Zero, Volume 04
Header file
A file of declarations, pulled into your code with #include, so the compiler knows what exists elsewhere.Explained in Embedded C from Zero, Volume 01
Heap
The pool of RAM that malloc hands out from. It grows up from the end of .bss, towards the stack coming down. Most small embedded projects avoid it.Explained in Embedded C from Zero, Volume 09
Henry (H)
The unit of inductance. Real inductors are usually millihenries or microhenries.Explained in Electronics from Zero, Volume 03
Hexadecimal
Counting with sixteen digits, 0 to 9 then A to F. One hex digit is exactly four bits, so a byte is always two hex digits. In C it is written 0x1F.Explained in Embedded C from Zero, Volume 02
Hierarchical state machine
A design in which one state machine starts another, smaller one and waits for it to finish - like a program calling a function.Explained in State Machines from Zero, Volume 09
High-pass filter
A circuit that passes fast changes and blocks slow ones and steady voltages, such as a capacitor followed by a resistor to ground.Explained in Electronics from Zero, Volume 03
High-water mark
The deepest the stack has ever reached, found by filling free RAM with a pattern beforehand and later counting how much is still untouched.Explained in Embedded C from Zero, Volume 09
Hold time
How long the input of a flip-flop must stay steady after the clock edge.Explained in State Machines from Zero, Volume 00

I

I2C
A two-wire bus, one clock and one data line, shared by many devices. Each has a 7-bit address, and every byte is answered with an acknowledge bit.Explained in Embedded C from Zero, Volume 13
Ideal clock
A clock treated as reaching every flip-flop at the same moment, used before the clock tree is built. Uncertainty stands in for the skew that is not yet known.Explained in Static Timing Analysis from Zero, Volume 06
Illegal state
A code the state register can hold that is not a real state - for example, two bits set at once in a one-hot machine.Explained in State Machines from Zero, Volume 05
Implication table
A triangle-shaped table with one cell for every pair of states, used to find which pairs are equivalent.Explained in State Machines from Zero, Volume 10
Implicit conversion
A change of type that C makes for you, with no cast written. Most bugs of this kind involve a signed value meeting an unsigned one.
In parallel
Parts joined side by side, so the current can take any of the paths. Two switches in parallel let current through when either one is closed.Explained in Digital Logic from Zero, Volume 00
In series
Parts joined one after another, so the current must pass through all of them. Two switches in series let current through only when both are closed.Explained in Digital Logic from Zero, Volume 00
Include guard
The #ifndef, #define and #endif wrapper round a header, so that including it twice in one file has no effect the second time.Explained in Embedded C from Zero, Volume 15
Incompletely specified machine
A state machine whose table has some don't-care next states or outputs. Minimising it is much harder than minimising a complete one.Explained in State Machines from Zero, Volume 10
Index
The number of a place in an array. The first place is 0, so an array of n items has indexes 0 to n - 1.Explained in Embedded C from Zero, Volume 06
Inductor
A coil of wire that stores energy in a magnetic field and resists changes in its current. Switched off suddenly, it makes a large voltage spike.Explained in Electronics from Zero, Volume 03
Infinite loop
A loop with no end. A bug in most programs, and the normal shape of firmware, which must never finish.Explained in Embedded C from Zero, Volume 01
Inheritance
Making a new class from an existing one. The new class gets all the members of the old one, and adds or changes what it needs.Explained in Embedded C++, Volume 04
inline
A hint that a function body may be pasted into its callers instead of being called. It gives the speed of a macro with real types and single evaluation.
Input
A signal that comes into a circuit from outside, such as a button, a sensor or a message from another circuit.Explained in State Machines from Zero, Volume 01
Input delay
How long after the clock edge a signal reaches an input port, because it has already travelled through logic outside the design. Set with set_input_delay.Explained in Static Timing Analysis from Zero, Volume 03
Input port
A pin where a signal enters the design from outside - from another chip, or from another block on the same chip.Explained in Static Timing Analysis from Zero, Volume 03
Insulator
A material that hardly lets current flow at all, such as plastic or glass. It is used to keep currents where they belong.Explained in Electronics from Zero, Volume 01
Integer division
Division between whole numbers. The fraction is thrown away, not rounded, so 7 / 2 is 3.
Integer promotion
Before any arithmetic, C widens small types such as uint8_t to int. The sum is worked out in the wider type, which is why 200 + 100 gives 300 and not 44.Explained in Embedded C from Zero, Volume 03
Integrated circuit (chip)
Many transistors and their wiring made together on one small piece of silicon, sealed in a package with metal pins.
Integrated clock gate (ICG)
A library cell that gates a clock safely: a latch holds the enable steady while the clock is high, so it can only change while the clock is low.Explained in Static Timing Analysis from Zero, Volume 07
Interface
A set of functions that different classes promise to provide. In C++ it is written as an abstract class with only pure virtual functions and no data.Explained in Embedded C++, Volume 04
Internal resistance
The small resistance inside every battery or supply. It limits how much current the supply can give, and turns some energy into heat inside it.Explained in Electronics from Zero, Volume 00
Interpolation
Estimating a value between two known ones by drawing a straight line between them. Timing tools interpolate inside every delay table they read.Explained in Static Timing Analysis from Zero, Volume 02
Interrupt
Hardware stopping your program mid-line to run a handler, then resuming where it left off. It can happen between any two instructions, which is what makes read-modify-write unsafe.Explained in Embedded C from Zero, Volume 10
Interrupt latency
The time between an interrupt firing and its handler starting. It grows with every critical section and every more urgent handler ahead of it.Explained in Embedded C from Zero, Volume 11
Invariant
A rule about an object's data that must always hold, such as "the duty is between 0 and 100". A class keeps its invariants by keeping that data private.Explained in Embedded C++, Volume 02
iostream
The C++ standard library for reading and writing text, such as std::cout. It is large, so firmware usually uses printf or its own small output code instead.Explained in Embedded C++, Volume 00
ISR
Interrupt service routine: the function the hardware runs when an interrupt fires. Keep it short, because everything else is waiting for it.

J

Jitter
Small, random changes in when each clock edge arrives, from one cycle to the next. It cannot be fixed by the design, so it is subtracted from every setup check.Explained in Static Timing Analysis from Zero, Volume 06
JK flip-flop
A flip-flop with two inputs. J = 1 sets it to 1, K = 1 resets it to 0, both 0 keep its value, and both 1 toggle it.Explained in State Machines from Zero, Volume 03
Johnson code
A code made by shifting in the opposite of the last bit: 000, 001, 011, 111, 110, 100. n flip-flops give 2n states, and each step changes one bit.Explained in State Machines from Zero, Volume 05
Johnson counter
A shift register that feeds back the opposite of its last bit. n flip-flops give 2n states, with one bit changing at each step.Explained in State Machines from Zero, Volume 07
Joule (J)
The unit of energy. One volt gives each coulomb of charge one joule of energy.Explained in Electronics from Zero, Volume 01
JTAG
The older five-pin debug standard. It can chain several devices on one connection, at the cost of three more pins than SWD.

K

Karnaugh map (K-map)
A truth table redrawn as a grid, arranged so that neighbouring cells differ in one input. Circling groups of 1s gives the simplest sum-of-products formula.Explained in State Machines from Zero, Volume 03
Kirchhoff's current law
The currents flowing into any join in a circuit add up to the currents flowing out of it.Explained in Electronics from Zero, Volume 02
Kirchhoff's voltage law
Round any closed loop in a circuit, the voltage rises add up to the voltage drops.Explained in Electronics from Zero, Volume 02

L

Lambda
A small unnamed function written where it is used, as [captures](parameters) { body }. One that captures nothing can be used as a plain function pointer.Explained in Embedded C++, Volume 07
Latch
A memory element with no clock. It lets its input through while enabled and holds it otherwise. Created by accident in a state machine, it is a bug.Explained in State Machines from Zero, Volume 04
Latency
How many clock cycles a circuit takes to respond. With a latency of one cycle, the answer appears one clock edge after the question.Explained in State Machines from Zero, Volume 02
Launch edge
The clock edge that sends the data on its way, by making the first flip-flop copy its input to its output.Explained in Static Timing Analysis from Zero, Volume 01
Layered architecture
Building firmware in layers - application, services, drivers, hardware abstraction - where each layer uses only the one below it.Explained in Embedded C++, Volume 08
LED (light-emitting diode)
A diode that gives out light when current flows through it. It needs a series resistor to set its current.Explained in Electronics from Zero, Volume 04
Level-sensitive
Acting on the level of the clock rather than on an edge. A latch is level-sensitive: it passes its input the whole time its enable is active.Explained in Static Timing Analysis from Zero, Volume 09
Lifetime
The time from an object's construction to its destruction. For a local object it ends at the closing brace of its block; for a global, when the program ends.Explained in Embedded C++, Volume 02
Linear regulator
A part that holds its output at a fixed voltage by dropping the rest of its input voltage across a transistor, turning it into heat.Explained in Electronics from Zero, Volume 07
Linker
The program that joins the compiled pieces together and decides which address each piece of code and data gets.Explained in Embedded C from Zero, Volume 00
Linker script
The file, usually ending .ld, that tells the linker how much flash and RAM the chip has and which section goes where.Explained in Embedded C from Zero, Volume 09
Little-endian
Storing the lowest byte of a number at the lowest address. Arm and x86 chips normally work this way.
Livelock
A situation in which machines keep changing state but never make any progress.Explained in State Machines from Zero, Volume 12
Load
Whatever a circuit drives - a lamp, a motor, or the input of another circuit. It draws current from the output it is connected to.Explained in Electronics from Zero, Volume 02
Load address (LMA)
The address where a section is actually stored in the built image. For .data it is in flash; start-up code copies from there to the run address.Explained in Embedded C from Zero, Volume 09
localparam
A named constant inside a Verilog module. It is often used to give the state codes readable names.Explained in State Machines from Zero, Volume 04
Lock-up
When a state machine gets stuck for ever in an illegal state, or in a loop of illegal states, and never returns to normal work.Explained in State Machines from Zero, Volume 11
Logic analyser
An instrument that records many digital lines at once and decodes protocols such as SPI and I2C. It says what the values were, not what shape they were.Explained in Electronics from Zero, Volume 08
Logic gate
A tiny circuit that takes one or more bits in and gives one bit out, following a fixed rule such as AND, OR or NOT.Explained in State Machines from Zero, Volume 00
Logic level
One gate - or one look-up table on an FPGA - on a path. The more levels a path passes through, the slower it is.Explained in State Machines from Zero, Volume 13
Logic-level MOSFET
A MOSFET that turns fully on with a gate voltage low enough for a microcontroller pin, such as 3.3 V or 5 V.Explained in Electronics from Zero, Volume 05
Look-ahead
Working out a value one cycle early, from the next state or the current values, and registering it, so that it is ready in a flip-flop when it is needed.Explained in State Machines from Zero, Volume 13
Look-up table (LUT)
The basic logic block of an FPGA: a tiny memory holding the truth table of a function of its inputs - typically up to six.Explained in State Machines from Zero, Volume 13
Loop
A piece of code that repeats while a condition stays true.
Low-pass filter
A circuit that lets slow changes through and smooths fast ones away, such as a resistor followed by a capacitor to ground.Explained in Electronics from Zero, Volume 03
Low-side switch
A switch placed between a load and ground, such as an N-channel MOSFET with its source grounded.Explained in Electronics from Zero, Volume 05
Low-Vt cell
A version of a cell built with transistors that switch on more easily. It is faster, but leaks more current while idle, so it is used only where speed is needed.Explained in Static Timing Analysis from Zero, Volume 14
LSB (least significant bit)
The rightmost bit of a binary number, worth 1. It decides whether the number is odd or even.Explained in Digital Logic from Zero, Volume 01

M

Machine code
The numbers a processor actually runs. Each one tells it to do one small thing, such as add two numbers or store a byte.Explained in Embedded C from Zero, Volume 00
Macro
A name the preprocessor replaces with some text. It has no type and no scope, so every argument needs brackets round it and the whole expansion needs brackets too.Explained in Embedded C from Zero, Volume 15
main
The function where a C program starts: int main(void). On a chip, it is the first of your own code to run.Explained in Embedded C from Zero, Volume 01
Mains electricity
The electricity from a wall socket: 230 V in India and the UK, 120 V in North America. It can kill. This course never uses it.Explained in Electronics from Zero, Volume 00
Majority voter
A circuit whose output is the value held by at least two of its three inputs.Explained in State Machines from Zero, Volume 11
Makefile
A file listing what depends on what, so a build tool can rebuild only the parts that changed, and rebuild them in the right order.Explained in Embedded C from Zero, Volume 15
malloc
The standard library call that asks the heap for a block of memory at run time. It returns NULL when it cannot, which must always be checked.Explained in Embedded C from Zero, Volume 14
Map file
A report the linker can write listing every section and symbol with its address and size. It is the receipt for your flash and RAM.Explained in Embedded C from Zero, Volume 09
Mask
A value whose 1 bits mark the bits you care about. AND with it to keep those bits, OR with it to set them, XOR with it to flip them.Explained in Embedded C from Zero, Volume 04
Max delay and min delay
Constraints that give a path a plain number of nanoseconds instead of a clock relationship - used, for example, to bound a crossing between unrelated clocks.Explained in Static Timing Analysis from Zero, Volume 08
Maximum clock frequency (fmax)
The fastest clock a circuit can use. It is set by the slowest path between two flip-flops.Explained in State Machines from Zero, Volume 13
Maxterm
An OR of every input, plain or inverted, that is 0 on exactly one row of a truth table. A function is the AND of the maxterms of its 0 rows.Explained in Digital Logic from Zero, Volume 03
Mealy machine
A state machine whose outputs depend on its current state and on its current inputs. Its outputs can change as soon as an input changes.Explained in State Machines from Zero, Volume 02
Medvedev machine
A Moore machine whose outputs are the state bits themselves, with no output logic in between.Explained in State Machines from Zero, Volume 02
Member
One of the values inside a struct or union, reached with a dot, or with an arrow through a pointer.Explained in Embedded C from Zero, Volume 08
Member function
A function declared inside a class. It is called on an object, as in led.toggle(), and can use that object's private members.Explained in Embedded C++, Volume 02
Member initialiser list
The part of a constructor after the colon, such as : pin_(pin), that gives each member its first value. Members are set in the order the class declares them.Explained in Embedded C++, Volume 02
Memory leak
Memory that was allocated and never given back, usually because the last pointer to it was lost. Nothing reports it until the heap runs out.Explained in Embedded C from Zero, Volume 14
Memory map
The plan of which addresses hold what: flash here, RAM there, peripherals somewhere else. It comes from the chip, not from your program.Explained in Embedded C from Zero, Volume 09
Memory pool
A fixed number of equal-sized blocks handed out and returned as a list. Allocation takes the same time every call, and it cannot fragment.Explained in Embedded C from Zero, Volume 14
Memory-mapped I/O
The arrangement where peripheral registers sit at ordinary addresses, so reading and writing hardware uses the same instructions as reading and writing memory. No special keyword is involved.Explained in Embedded C from Zero, Volume 10
Metastability
A short, unpredictable state of a flip-flop that sampled its input while it was changing: its output hovers between 0 and 1 before settling.Explained in State Machines from Zero, Volume 09
Meter loading
The change a meter makes to the circuit it measures. A voltmeter's own resistance lets a little current bypass the part, so it can read low across high resistances.Explained in Electronics from Zero, Volume 01
Microcontroller
A whole small computer on one chip: a processor, its memory, and the peripherals and pins that connect it to the outside world.Explained in Embedded C from Zero, Volume 00
Minterm
One row of a truth table, written as an AND of every input, plain or inverted. Minterms are numbered by the row's binary value.Explained in State Machines from Zero, Volume 03
MISRA C
A set of rules for C in safety-related software, originally for cars. Most of the rules amount to avoiding the parts of C whose behaviour is undefined or surprising.Explained in Embedded C from Zero, Volume 16
Mock
A test stand-in that knows what it should receive, and reports any difference - for example the exact bytes of a command.Explained in Embedded C++, Volume 09
Mod-N counter
A counter that counts 0, 1, 2 and so on up to N-1, then returns to 0. A mod-10 counter counts 0 to 9.Explained in State Machines from Zero, Volume 07
Module
The basic building block in Verilog. A module has a name, a list of ports, and the logic inside it.
Modulo (mod)
The remainder after dividing. 7 mod 3 = 1, because 7 = 2 × 3 + 1.Explained in State Machines from Zero, Volume 06
Moore machine
A state machine whose outputs depend only on its current state. Its outputs change only just after a clock edge.Explained in State Machines from Zero, Volume 02
MOSFET
A transistor switched by the voltage on its insulated gate. Above its threshold voltage, current flows between its drain and source through a small resistance.Explained in Electronics from Zero, Volume 05
MOSI and MISO
The two data wires of SPI: master out, slave in (MOSI), and master in, slave out (MISO). Newer documents often call them COPI and CIPO.Explained in State Machines from Zero, Volume 08
Most vexing parse
The C++ rule that reads BusLock lock(); as the declaration of a function called lock, not as an object. g++ warns about it.Explained in Embedded C++, Volume 03
Move
Handing an object's resource to another object and leaving the first owning nothing, instead of copying it. Written with a move constructor and std::move.Explained in Embedded C++, Volume 07
MSB (most significant bit)
The leftmost bit of a binary number, the one worth the most. In a signed number it shows the sign.Explained in Digital Logic from Zero, Volume 01
Multicycle path
A path the design guarantees more than one clock cycle to settle. Relaxing its setup check also moves its hold check, which must be moved back.Explained in Static Timing Analysis from Zero, Volume 08
Multimeter
A meter that measures voltage, current and resistance, chosen with a dial.Explained in Electronics from Zero, Volume 01
Multiplexer (mux)
A circuit whose select inputs choose which of its data inputs reaches the output: a switch made of gates. With n select inputs it chooses from 2 to the power n data inputs.Explained in Digital Logic from Zero, Volume 05

N

Name hiding
When a derived class declares a function with the same name as a base-class one, the base version is hidden, even if the parameters differ. -Woverloaded-virtual warns about it.Explained in Embedded C++, Volume 04
Name mangling
The longer name a C++ compiler gives each function in the object file, with its namespace and parameter types coded in, so that overloads get different names.Explained in Embedded C++, Volume 01
Namespace
A named box for functions, types and constants, such as board:: or std::, so that names from different parts of a program cannot clash.Explained in Embedded C++, Volume 00
NAND gate
AND followed by NOT: its output is 0 only when all its inputs are 1. NAND alone can build every other gate.Explained in Digital Logic from Zero, Volume 02
Nanosecond (ns)
One thousand-millionth of a second. A 100 MHz clock has 10 ns between one rising edge and the next.Explained in Static Timing Analysis from Zero, Volume 00
Network latency
How long the clock takes to cross the design's own clock tree, from its clock pin or port to each flip-flop.Explained in Static Timing Analysis from Zero, Volume 06
Next state
The state the machine will move to at the next clock edge.Explained in State Machines from Zero, Volume 01
Next-state logic
The gates in a state machine that work out the next state from the current state and the inputs.Explained in State Machines from Zero, Volume 01
Nibble
Four bits: half a byte, and exactly one hexadecimal digit.Explained in Embedded C from Zero, Volume 02
NLDM table
Non-linear delay model: a table of a cell's delay indexed by input slew and output load. The tool reads the four nearest entries and interpolates between them.Explained in Static Timing Analysis from Zero, Volume 02
NMOS transistor
An N-channel MOSFET. It turns on when its gate is high, and is good at pulling an output down to 0.Explained in Electronics from Zero, Volume 06
Nodal analysis
Solving a circuit by naming the voltage at each join and writing Kirchhoff's current law there. Circuit simulators work this way.Explained in Electronics from Zero, Volume 02
Noise
Small unwanted changes in a signal, picked up from nearby wires, motors, power supplies or the air.Explained in Digital Logic from Zero, Volume 00
Noise margin
How much noise a signal can pick up between one gate and the next and still be read correctly: VOH - VIH for a 1, and VIL - VOL for a 0.Explained in Digital Logic from Zero, Volume 09
Non-blocking assignment (<=)
An assignment that takes effect at the end of the moment, so every flip-flop updates together. Use it in clocked blocks.Explained in State Machines from Zero, Volume 04
NOR gate
OR followed by NOT: its output is 1 only when all its inputs are 0. NOR alone can build every other gate.Explained in Digital Logic from Zero, Volume 02
NOT gate (inverter)
A gate with one input that gives the opposite value: 0 becomes 1 and 1 becomes 0.Explained in State Machines from Zero, Volume 00
NUL terminator
The zero byte that marks the end of a C string. It is written '\0', and every string function looks for it.Explained in Embedded C from Zero, Volume 06
NULL
A pointer value that means "points at nothing". Following it is undefined behaviour, so it is checked before use.Explained in Embedded C from Zero, Volume 07
nullptr
The C++ keyword for a null pointer. Unlike NULL or 0 it can only become a pointer, never a number, so an overloaded function cannot mistake it for one.Explained in Embedded C++, Volume 01
NVIC
The nested vectored interrupt controller on Arm Cortex-M chips. It decides which interrupt runs next, holds the enable and pending bits, and allows a more urgent interrupt to interrupt a less urgent handler.Explained in Embedded C from Zero, Volume 11

O

Object
One actual variable of a class type: one LED, one sensor or one buffer, made from the class that describes it.Explained in Embedded C++, Volume 00
Object file
What the compiler produces from one source file, ending .o. It holds sections and symbols but no final addresses yet; the linker supplies those.Explained in Embedded C from Zero, Volume 09
Octal
Counting in base 8, with the digits 0 to 7. Each octal digit stands for exactly three bits.Explained in Digital Logic from Zero, Volume 01
Off-by-one
A loop or index that goes one place too far, usually by writing <= where < was meant. The commonest way to step past the end of an array.Explained in Embedded C from Zero, Volume 06
Ohm's law
The current through a resistor equals the voltage across it divided by its resistance: I = V / R, or V = I x R.Explained in Electronics from Zero, Volume 02
Ohmmeter
A meter that measures resistance by pushing its own small current through a part. The circuit must be switched off.Explained in Electronics from Zero, Volume 01
On-chip variation (OCV)
Differences in delay between gates on the same chip, from tiny differences in manufacturing, voltage and temperature. Timing covers it by derating.Explained in Static Timing Analysis from Zero, Volume 11
On-resistance
The small resistance of a MOSFET that is fully switched on, often a fraction of an ohm.Explained in Electronics from Zero, Volume 05
One-cold encoding
The opposite of one-hot: one flip-flop per state, with exactly one of them at 0.Explained in State Machines from Zero, Volume 05
One-hot encoding
One flip-flop per state, with exactly one of them at 1. Checking the state means looking at a single bit.Explained in State Machines from Zero, Volume 05
One-shot
A circuit that answers a trigger with exactly one pulse of a set length.Explained in State Machines from Zero, Volume 07
Ones' complement
Making a binary number negative by inverting every bit. It has two zeros, so two's complement replaced it.Explained in Digital Logic from Zero, Volume 01
Open-drain
A pin that can pull the line down but never drive it up, so several devices can share one wire safely. A resistor pulls it up when nobody is pulling down.Explained in Embedded C from Zero, Volume 13
Operator precedence
The order C applies operators in when there are no brackets - for example, == before &, and + before a shift.Explained in Embedded C from Zero, Volume 03
Optimisation level
How hard the compiler works to improve the code: -O0 not at all, -Os for smallest size, -O2 for speed. It changes timing and code size, never the meaning of correct code.Explained in Embedded C from Zero, Volume 15
OR gate
A gate whose output is 1 when at least one of its inputs is 1.Explained in State Machines from Zero, Volume 00
Oscilloscope
An instrument that draws the voltage on a line against time. It answers questions about the shape of a signal: edges, ringing, noise, supply dips.Explained in Electronics from Zero, Volume 08
Output
A signal that a circuit sends out to control or inform something else, such as a lamp, a motor or another circuit.Explained in State Machines from Zero, Volume 01
Output delay
How much time the logic outside the design needs from an output port to its own flip-flop. The design must deliver the data that much before the edge.Explained in Static Timing Analysis from Zero, Volume 03
Output encoding
Choosing state codes so that the outputs can be read straight from the state bits, with no output logic.Explained in State Machines from Zero, Volume 05
Output logic
The gates in a state machine that work out its outputs from the current state - and, in some machines, from the inputs too.Explained in State Machines from Zero, Volume 01
Output port
A pin where a signal leaves the design for the outside world.Explained in Static Timing Analysis from Zero, Volume 03
Overflow
When the true answer of a sum does not fit in the bits available. For signed numbers it shows as a result with the wrong sign.Explained in Digital Logic from Zero, Volume 06
Overlapping detection
Sequence detection in which the end of one match may also be the start of the next, so 10101 contains 101 twice.Explained in State Machines from Zero, Volume 06
override
A keyword written after a member function that is meant to replace a virtual one. If it does not match any virtual function in the base, the build fails.Explained in Embedded C++, Volume 04
Oversampling
Averaging several ADC readings to get a more precise answer. Four times as many samples is worth one extra bit, and only when there is noise to average.

P

Packed struct
A struct the compiler is told to lay out with no padding at all, so it matches a wire or file format exactly. Reading its members can be slower.Explained in Embedded C from Zero, Volume 08
Padding
Unused bytes the compiler inserts between struct members so that each one starts at an address its type allows.Explained in Embedded C from Zero, Volume 08
PAL (programmable array logic)
Like a PLA, but only the AND array is programmable; the OR connections are fixed. Smaller and faster, with a fixed number of product terms per output.Explained in Digital Logic from Zero, Volume 09
Parameter
A variable listed in a function's definition. It receives a value each time the function is called.Explained in State Machines from Zero, Volume 07
Parity bit
An extra bit chosen so that the number of 1s in a code is always even (or always odd). Any single flipped bit then breaks the rule and can be detected.Explained in State Machines from Zero, Volume 11
Partition
A split of the states into groups, so that every state is in exactly one group.Explained in State Machines from Zero, Volume 10
Pass by value
C hands a function a copy of each argument. Changing the copy inside the function leaves the caller's variable untouched.Explained in Embedded C from Zero, Volume 01
Pending bit
The flag the hardware sets when an interrupt has fired but has not run yet. It remembers one event, not two, which is why events can be missed.Explained in Embedded C from Zero, Volume 11
Peripheral
A block of hardware beside the processor on the same chip - a timer, a serial port, an analogue-to-digital converter - that the program controls through registers.Explained in Embedded C from Zero, Volume 10
Picosecond (ps)
One thousandth of a nanosecond. Gate delays and setup times are usually a few tens or hundreds of picoseconds, so timing is often counted in them.Explained in Static Timing Analysis from Zero, Volume 00
Pinout
A chart of which signal each pin of a chip carries: inputs, outputs, power and ground.Explained in Digital Logic from Zero, Volume 02
Pipeline
A chain of processing stages separated by registers, so that several pieces of work are in progress at once, each in a different stage.Explained in State Machines from Zero, Volume 13
Pipelining
Cutting a long path into shorter ones by adding flip-flops part-way along. Each piece then fits in a shorter clock period, at the cost of extra cycles of delay.Explained in Static Timing Analysis from Zero, Volume 04
PLA (programmable logic array)
A chip with a programmable array of AND gates feeding a programmable array of OR gates, so it can make any sum of products that fits.Explained in Digital Logic from Zero, Volume 09
Placement new
A form of new that runs a constructor on memory you already have, such as a static buffer. It allocates nothing, and the destructor must be called by hand.Explained in Embedded C++, Volume 06
PLL (phase-locked loop)
A circuit that makes a fast, steady clock from a slower reference, such as a crystal. Most chip clocks come from one.Explained in Static Timing Analysis from Zero, Volume 06
PMOS transistor
A P-channel MOSFET. It turns on when its gate is low, and is good at pulling an output up to 1. It is drawn with a small circle on its gate.Explained in Electronics from Zero, Volume 06
POCV
Parametric on-chip variation: each cell has an average delay and a spread, and the tool adds the spreads statistically along a path instead of assuming every cell is worst at once.Explained in Static Timing Analysis from Zero, Volume 11
Pointer
A variable that holds an address. Following it reaches the value stored there.Explained in Embedded C from Zero, Volume 07
Pointer arithmetic
Adding to or subtracting from a pointer. It counts elements, not bytes, so p + 1 on a uint32_t pointer moves four bytes.Explained in Embedded C from Zero, Volume 07
Polling
Asking the hardware, over and over in the main loop, whether anything has happened. Simple and predictable, but it wastes time and can miss short events.Explained in Embedded C from Zero, Volume 11
Polymorphism
One piece of code working with many types. With virtual functions the type is chosen while the program runs; with templates and CRTP, while it compiles.Explained in Embedded C++, Volume 04
Port
A named input or output of a module - the way signals go in and out.
Potentiometer
A resistor you can adjust, with a sliding contact moved by a knob or a screw.Explained in Electronics from Zero, Volume 01
Power (electrical)
How fast energy is delivered or used, in watts: volts times amps.Explained in Electronics from Zero, Volume 02
Power rating
The most power a component can turn into heat without damage - for a small resistor, often a quarter of a watt.Explained in Electronics from Zero, Volume 00
Preemption
A more urgent interrupt interrupting a handler that is already running. The inner one finishes first, then the outer one carries on where it stopped.Explained in Embedded C from Zero, Volume 11
Prefix
The first few bits of a pattern. The prefixes of 1011 are 1, 10, 101 and 1011.Explained in State Machines from Zero, Volume 06
Preprocessor
The stage that runs before the compiler. It pastes headers in, expands macros and drops the branches of #if that were not taken. It works on text and knows nothing about C.Explained in Embedded C from Zero, Volume 15
Prescaler
A counter that turns a fast clock into slow ticks - for example, one tick every millisecond - for other counters to count.Explained in State Machines from Zero, Volume 07
PRIMASK
A one-bit register on Arm Cortex-M chips. While it is 1, every interrupt except the non-maskable one and the fault handlers has to wait.Explained in Embedded C++, Volume 03
Prime implicant
On a K-map, a group of 1s (and don't cares) that cannot be made any bigger. The simplest answer is always made of prime implicants.Explained in Digital Logic from Zero, Volume 04
Priority encoder
An encoder that copes with several active inputs by reporting the highest-ranked one, with a valid output that says whether any input is active at all.Explained in Digital Logic from Zero, Volume 05
Processor
The part of a chip that reads instructions one after another and carries them out. Also called the CPU or the core.
Product machine
A state machine made by running two smaller machines side by side. Each of its states is a pair: one state from each smaller machine.Explained in State Machines from Zero, Volume 14
Product of sums
A Boolean expression written as OR terms joined by AND, such as (A + B)·(A' + C). It becomes a layer of OR gates feeding one AND gate.Explained in Digital Logic from Zero, Volume 03
Propagated clock
A clock whose real delay through the built clock tree is measured to each flip-flop, so skew comes from the tree itself. Set with set_propagated_clock.Explained in Static Timing Analysis from Zero, Volume 06
Propagation delay
The time a signal takes to pass through a gate, or through a chain of gates.Explained in State Machines from Zero, Volume 13
protected
An access specifier between public and private: the class itself and classes derived from it may use the member, and other code may not.Explained in Embedded C++, Volume 04
Pull-down resistor
A resistor from an input to ground. It holds the input at 0 whenever nothing else pulls it up.Explained in Electronics from Zero, Volume 05
Pull-up resistor
A resistor from an input to the supply. It holds the input at 1 whenever nothing else pulls it down.Explained in Electronics from Zero, Volume 05
Pulse
A signal that goes to 1 for a short time - often exactly one clock cycle - and then back to 0.Explained in State Machines from Zero, Volume 02
Pulse stretcher
A circuit that makes a short pulse longer, so that a slower circuit - or a person watching an LED - can see it.Explained in State Machines from Zero, Volume 07
Pulsed latch
A latch opened for only a very short pulse after each clock edge, so it behaves almost like a flip-flop - but with a hold requirement as long as the pulse.Explained in Static Timing Analysis from Zero, Volume 09
Pure virtual function
A virtual function declared with = 0 and no body. Every class derived from it must provide one before objects of it can be made.Explained in Embedded C++, Volume 04
PVT corner
One combination of process, voltage and temperature at which timing is checked. A slow process, a low voltage and a high temperature usually give the slowest one.Explained in Static Timing Analysis from Zero, Volume 02
PWM
Pulse-width modulation: switching a pin on and off fast, and changing how much of each cycle it is on. It dims LEDs and drives motors without any analogue parts.Explained in Embedded C from Zero, Volume 12

Q

Quantisation error
The difference between an analogue value and the nearest level an ADC can report. It is always less than one step.Explained in Digital Logic from Zero, Volume 09

R

Race (in simulation)
Two events at the same instant whose order the simulator may choose, so the result can change. Changing inputs away from the clock edge avoids them.Explained in State Machines from Zero, Volume 04
Race condition
A bug whose outcome depends on the exact moment one piece of code interrupts another. It hides for months, then happens in the field.
RAII
Short for "resource acquisition is initialisation": an object takes a resource - a lock, a peripheral, a buffer - when it is created, and gives it back automatically when it goes out of scope.Explained in Embedded C++, Volume 00
RAM (random-access memory)
A memory that can be written as well as read, at any address. SRAM keeps each bit in a latch; DRAM keeps it as charge on a capacitor that must be refreshed.Explained in Digital Logic from Zero, Volume 09
Random stimulus
Test inputs chosen at random, to reach situations that nobody thought to try.Explained in State Machines from Zero, Volume 06
RC corner
One combination of wire resistance and capacitance at which timing is checked, such as Cworst or RCworst. Which one is slowest depends on the length of the wire.Explained in Static Timing Analysis from Zero, Volume 11
RC delay
The time taken to charge a capacitance through a resistance. It grows with both, so a long wire, which has more of each, is slow.Explained in Static Timing Analysis from Zero, Volume 02
Reachable state
A state that some sequence of inputs can reach from the reset state.Explained in State Machines from Zero, Volume 12
Read-modify-write
Reading a register, changing some bits, and writing the whole value back. Every |= and &= on a register is one of these.Explained in Embedded C from Zero, Volume 04
Rectifier
A circuit of diodes that turns alternating current into direct current.Explained in Electronics from Zero, Volume 04
Recursion
A function that calls itself. Each call takes another stack frame, which is why firmware usually replaces it with a loop.Explained in Embedded C from Zero, Volume 05
Reentrant
Safe to be called again while an earlier call is still part-way through. A function that keeps state in a static variable usually is not.Explained in Embedded C from Zero, Volume 11
Reference
In C++, a second name for a variable that already exists. It must be given its variable when it is made, it can never be moved to another one, and it is used without * or &.Explained in Embedded C++, Volume 01
Reference count
A count of how many users share a resource. The first user switches it on, and it is switched off only when the count falls back to zero.Explained in Embedded C++, Volume 03
Reference model
A simple, obviously correct version of a design, used by a testbench to work out what the real design should do.Explained in State Machines from Zero, Volume 06
Regeneration
What every logic gate does to a signal: it reads a noisy input as a 0 or a 1 and sends out a clean, full-strength copy, so noise does not build up.Explained in Digital Logic from Zero, Volume 00
Register
A group of flip-flops that share one clock and together store a value several bits wide, such as an 8-bit number.Explained in State Machines from Zero, Volume 00
Register transfer
Changing or moving data between registers in one clock cycle, written like a ← a − b.Explained in State Machines from Zero, Volume 09
Registered output
An output that comes straight from a flip-flop. It changes only at a clock edge, so it never glitches.Explained in State Machines from Zero, Volume 02
reinterpret_cast
The C++ cast that treats a number as an address, an address as a number, or one pointer type as another. Firmware needs it for register addresses.Explained in Embedded C++, Volume 01
Relay
A switch worked by an electromagnet. A small current through its coil moves a contact in a separate circuit.Explained in Electronics from Zero, Volume 05
Repeater
A buffer placed part-way along a long wire. Cutting the wire into pieces turns one slow delay that grows with the square of the length into several short ones.Explained in Static Timing Analysis from Zero, Volume 02
Required time
The latest moment the data may arrive and still be captured correctly: the capture edge, plus its clock latency, less the setup time and the uncertainty.Explained in Static Timing Analysis from Zero, Volume 04
Reset
A signal that forces flip-flops, and so a whole circuit, back to a known starting value.Explained in State Machines from Zero, Volume 00
Reset handler
The first function that runs when the chip comes out of reset. It prepares memory and then calls main.Explained in Embedded C from Zero, Volume 09
Reset state
The state a state machine goes to when it is reset. Also called the initial state or the start state.Explained in State Machines from Zero, Volume 01
Resistance
How hard it is for current to flow, measured in ohms. A switched-on transistor has some, and so does every wire, which is why long wires are slow.Explained in Static Timing Analysis from Zero, Volume 02
Resistivity
How strongly a material resists current, whatever its shape. A wire's resistance is its resistivity times its length, divided by its cross-section area.Explained in Electronics from Zero, Volume 01
Resistor
A component made to have one known resistance. It is used to limit a current or to set a voltage.Explained in Electronics from Zero, Volume 01
Resolution
The smallest change a converter can make or measure: one step, Vref / 2 to the power n. More bits give a finer resolution.Explained in Digital Logic from Zero, Volume 09
Resource
Anything a program takes and must give back: a lock, a peripheral's clock, a DMA channel, a chip-select line, interrupts that were switched off.Explained in Embedded C++, Volume 03
Retiming
Moving flip-flops through the logic, forwards or backwards, to balance the delay between stages without changing what the circuit computes.Explained in Static Timing Analysis from Zero, Volume 14
Return path
The way a current flows back to its source, usually through ground. Its resistance and inductance matter as much as the outgoing wire's.Explained in Electronics from Zero, Volume 07
Return value
The single value a function hands back to whoever called it.Explained in Embedded C from Zero, Volume 01
Ring buffer
A fixed array used as a queue, with an index in and an index out that wrap round the end. With one writer and one reader it needs no locking at all.Explained in Embedded C from Zero, Volume 11
Ring counter
A shift register in which a single 1 travels round and round. It is a one-hot counter: n flip-flops give n states.Explained in State Machines from Zero, Volume 07
Ripple
The small rise and fall left on a supply voltage, such as a rectifier's output after smoothing.Explained in Electronics from Zero, Volume 04
Ripple counter
A counter in which each flip-flop is clocked by the output of the one before. Simple, but its bits change one after another, so it passes through wrong values.Explained in Digital Logic from Zero, Volume 08
Ripple-carry adder
An adder made of full adders in a row, each passing its carry to the next. Simple, but its delay grows with every extra bit.Explained in Digital Logic from Zero, Volume 06
Rising edge
The moment a signal changes from 0 to 1. Most flip-flops update on the rising edge of the clock.Explained in State Machines from Zero, Volume 00
ROM (read-only memory)
A memory whose contents are fixed, or changed only by special programming. It keeps them without power. Inside, it is a decoder feeding OR gates: a truth table in hardware.Explained in Digital Logic from Zero, Volume 09
Round-robin
A fair way of taking turns: whoever has just been served goes to the back of the queue.Explained in State Machines from Zero, Volume 14
RTTI (run-time type information)
Data the compiler stores about each class so that a running program can ask what type an object really is. dynamic_cast and typeid use it.Explained in Embedded C++, Volume 00
Rule of five
The rule of three, plus the two move functions that C++11 added: a class that manages a resource should decide about all five.Explained in Embedded C++, Volume 03
Rule of three
If a class needs its own destructor, it almost certainly needs its own copy constructor and copy assignment too - or needs to delete them.Explained in Embedded C++, Volume 03
Rule of zero
If every member of a class looks after itself, write none of the destructor, copy or move functions. The compiler's versions are then correct.Explained in Embedded C++, Volume 03
Run address (VMA)
The address the code uses to reach a variable. For .data on a chip that is a RAM address, even though the starting value was stored in flash.Explained in Embedded C from Zero, Volume 09

S

Safe state
The state a machine goes to when something is wrong: one in which its outputs cannot cause harm, such as all traffic lights red.Explained in State Machines from Zero, Volume 11
Sanitiser
A compiler option that inserts checks into the program so undefined behaviour reports itself at run time instead of going unnoticed.Explained in Embedded C from Zero, Volume 16
Saturation (transistor)
A bipolar transistor fully switched on, with only about 0.2 V between collector and emitter. More base current makes no difference.Explained in Electronics from Zero, Volume 05
Scan chain
A way of linking a chip's flip-flops into long shift registers during testing, so that every one of them can be loaded and read from outside.Explained in State Machines from Zero, Volume 13
Schmitt trigger
An input that switches to 1 at a higher voltage than it switches back to 0, so a slow or noisy edge makes one clean change.Explained in Electronics from Zero, Volume 03
Schottky diode
A diode with a low forward voltage, about 0.3 V, so it wastes less power.Explained in Electronics from Zero, Volume 04
Scope
The part of the program where a name can be seen. A variable declared inside braces is gone the moment the closing brace is reached.Explained in Embedded C from Zero, Volume 05
Scope resolution operator (::)
The two colons between a namespace or class and a name inside it. uart::init means the init that belongs to uart.Explained in Embedded C++, Volume 01
SDC (Synopsys Design Constraints)
The standard language for telling timing tools about clocks, input and output delays, exceptions and design rules. It is Tcl, read one command at a time.Explained in Static Timing Analysis from Zero, Volume 13
Section
A named pile of bytes in a compiled program - code in one, constants in another, variables in a third. The linker decides where each pile ends up.Explained in Embedded C from Zero, Volume 09
Self-checking testbench
A testbench that compares the outputs with the expected values by itself, and reports pass or fail.Explained in State Machines from Zero, Volume 04
Self-loop
A transition that leaves a state and comes straight back to it. It means "stay where you are".Explained in State Machines from Zero, Volume 01
Semihosting
Letting the debugger on your computer carry out printf and file operations for the chip. It needs no UART, halts the core for every call, and does nothing without a debugger attached.
Sensitivity list
The part after @ in an always block, saying when the block runs - for example @(posedge clk), or @(*) for "whenever any input changes".Explained in State Machines from Zero, Volume 04
Sequence detector
A state machine that watches a bit stream and signals when the most recent bits match a given pattern.Explained in State Machines from Zero, Volume 06
Sequential logic
Logic with memory. Its outputs depend on what it has stored as well as on its inputs, so its past matters.Explained in State Machines from Zero, Volume 00
Serial adder
A circuit that adds two numbers one pair of bits per clock cycle, starting with the least significant bits and keeping the carry in a flip-flop between cycles.Explained in State Machines from Zero, Volume 14
Set/reset register
A write-only register where writing a 1 in the low half turns a pin on and a 1 in the high half turns it off. It changes chosen pins in one store, with no read, so no interrupt can spoil it.Explained in Embedded C from Zero, Volume 10
Setup time
How long the input of a flip-flop must stay steady before the clock edge. Arrive later than this and the flip-flop may store the wrong value.Explained in State Machines from Zero, Volume 00
Seven-segment display
A display that draws each digit with seven bars, named a to g. A decoder turns a BCD digit into the seven on/off signals.Explained in Digital Logic from Zero, Volume 05
Shielding
Running a grounded or power wire beside a sensitive net, so its neighbour is a wire that never switches. The net keeps its capacitance but loses its crosstalk.Explained in Static Timing Analysis from Zero, Volume 12
Shift
Moving every bit of a value left or right. A left shift by n multiplies by 2 to the power n; a right shift on an unsigned value divides by it.Explained in Embedded C from Zero, Volume 04
Shift register
A row of flip-flops in which each one copies its neighbour at every clock edge, so the bits move along one place per cycle.Explained in State Machines from Zero, Volume 06
Short circuit (electrical)
A path with almost no resistance between the two sides of a supply, so a very large current flows. It can overheat wires and batteries.Explained in Electronics from Zero, Volume 00
Short-circuit
With && and ||, C stops as soon as the answer is certain, so the right-hand side may never run at all.Explained in Embedded C from Zero, Volume 03
Sigma
A measure of spread, the standard deviation. Three sigma covers nearly all of the chips made, so timing is usually checked at the average plus three sigma.Explained in Static Timing Analysis from Zero, Volume 11
Sign extension
When a signed number is copied into a wider type, its sign bit is repeated into the new bits, so that -1 in 8 bits is still -1 in 32 bits.Explained in Embedded C from Zero, Volume 02
Sign-magnitude
Writing a signed number as a sign bit (0 for plus, 1 for minus) followed by its size. Simple, but it has two zeros and ordinary adding gives wrong answers.Explained in Digital Logic from Zero, Volume 01
Sign-off
The final check before a chip is made: every path must pass at every corner and mode, with the real parasitics, before the design is released.
Signal
A wire, or a group of wires, whose value changes over time and carries information around a circuit.
Signal integrity
Whether a signal arrives clean and on time, despite its neighbours. In timing it mostly means crosstalk: delays and glitches caused by nearby wires switching.
Signed number
A number that can be negative as well as positive. In binary its top bit shows the sign.Explained in Digital Logic from Zero, Volume 01
Simulation
Running a program that behaves like your circuit, so you can watch every signal before any hardware exists.Explained in State Machines from Zero, Volume 00
Simulator
The program that runs a simulation, such as Icarus Verilog.Explained in State Machines from Zero, Volume 00
Single-event upset (SEU)
A flip-flop or memory bit flipped by a particle - from space, or from the chip's own materials - striking the silicon.Explained in State Machines from Zero, Volume 11
Slack
How much time a path has to spare. Positive slack means the data arrives in time; negative slack means it does not, and the path has failed.Explained in Static Timing Analysis from Zero, Volume 01
Slew (transition time)
How long a signal takes to swing from low to high or back, usually timed from 10% to 90% of the way. A slow edge makes the next gate slower too.Explained in Static Timing Analysis from Zero, Volume 02
Smoothing capacitor
A capacitor across a rectifier's output. It charges at each peak and feeds the load in between, leaving only a small ripple.Explained in Electronics from Zero, Volume 04
Soft error
A wrong bit value that does no lasting damage to the hardware. Writing the bit again fixes it.Explained in State Machines from Zero, Volume 11
Source code
The text a programmer writes, such as a .c file, before any tool turns it into machine code.
Source latency
How long the clock takes to get from where it is made, such as a PLL or an oscillator, to the point where the design's clock begins.Explained in Static Timing Analysis from Zero, Volume 06
Source-synchronous
An interface where the sending chip sends its own clock alongside the data. Both travel the same way, so the trace delay cancels and much faster rates are possible.Explained in Static Timing Analysis from Zero, Volume 10
Spare cells
Unused gates scattered across a chip on purpose, so a late fix can be made by changing only the metal wiring layers.Explained in Static Timing Analysis from Zero, Volume 14
SPI
Serial peripheral interface: a serial link with a clock wire, in which a master and a slave exchange one bit in each direction on every clock cycle.Explained in State Machines from Zero, Volume 08
SR flip-flop
A flip-flop with a set input S and a reset input R. Setting both to 1 at the same time is not allowed.Explained in State Machines from Zero, Volume 03
SR latch
Two cross-coupled NOR (or NAND) gates with a set input S and a reset input R. It holds its value while both are inactive; setting both at once is not allowed.Explained in Digital Logic from Zero, Volume 07
SRAM
Static RAM: the fast memory a chip works in while it runs. It forgets everything when the power goes off, so variables live here and the program does not.Explained in Embedded C from Zero, Volume 09
Stack
The memory a program uses for its function calls: local variables, arguments and return addresses, piled up and taken off again.Explained in Embedded C from Zero, Volume 05
Stack frame
One call’s slice of the stack: its locals, its arguments and where to return to.Explained in Embedded C from Zero, Volume 05
Stack overflow
What happens when the stack grows into whatever sits below it. On a small chip there is no warning: variables quietly change, or the program jumps into nonsense.Explained in Embedded C from Zero, Volume 05
Standard cell
A ready-made gate or flip-flop from a chip maker's library. An ASIC is built by connecting thousands or millions of them.Explained in State Machines from Zero, Volume 13
Standard library
The ready-made functions that come with every C compiler, such as printf and strlen. Small chips use only a part of it.Explained in Embedded C from Zero, Volume 01
Star ground
Separate ground wires from each part of a circuit, all meeting at one point, so one part's current does not shift another's ground.Explained in Electronics from Zero, Volume 07
Start bit
The 0 that begins every UART frame. It tells the receiver that a byte is on its way.Explained in State Machines from Zero, Volume 08
Start point
Where a timing path begins: the clock pin of a flip-flop, or an input port of the design.Explained in Static Timing Analysis from Zero, Volume 03
Start-up code
The few dozen instructions that run before main: copy .data into RAM, write zeros over .bss, then call main.Explained in Embedded C from Zero, Volume 09
State
One of the situations a state machine can be in, such as IDLE or BUSY. The state is what the machine remembers about the past.Explained in State Machines from Zero, Volume 01
State assignment
Giving each state of a machine its own pattern of bits, called its code.Explained in State Machines from Zero, Volume 03
State coverage
The share of a machine's states that the tests visited.Explained in State Machines from Zero, Volume 12
State diagram
A drawing of a state machine. Each state is a circle, and each transition is an arrow labelled with the input that causes it.Explained in State Machines from Zero, Volume 01
State encoding
The way a machine's states are written as bit patterns - for example binary, Gray or one-hot.
State explosion
The fast growth in the number of states when separate machines are merged into one: machines of 5 and 4 states can combine into 20.Explained in State Machines from Zero, Volume 09
State machine (FSM)
A circuit that is always in exactly one of a fixed set of situations, called states, and moves between them as its inputs change. FSM stands for finite state machine.Explained in State Machines from Zero, Volume 00
State minimisation
Finding the smallest state machine that behaves exactly like a given one, by merging states that do the same job.Explained in State Machines from Zero, Volume 10
State register
The flip-flops that hold the current state of a state machine. They change only at a clock edge.Explained in State Machines from Zero, Volume 01
State table
A table that lists, for every state and every input, the next state and the outputs. It holds the same information as a state diagram.Explained in State Machines from Zero, Volume 01
Statement
One instruction in C. Statements end with a semicolon.Explained in Embedded C from Zero, Volume 01
static
Inside a function, it makes a local variable keep its value between calls. On a global or a function, it hides the name from other files.Explained in Embedded C from Zero, Volume 05
Static allocation
Deciding every buffer size at compile time, so the linker can prove it fits. The usual approach in firmware, and the reason a map file is enough to know the memory is safe.Explained in Embedded C from Zero, Volume 14
Static initialisation order
The order in which globals that need start-up code are set up. Between files the C++ standard does not fix it, so one global may use another before it is ready.Explained in Embedded C++, Volume 06
Static member
A member that belongs to the class, not to any one object. A static variable has one copy shared by all objects, and a static function is called without an object.Explained in Embedded C++, Volume 02
Static polymorphism
Polymorphism settled while compiling, with templates or CRTP, so there is no vtable and no indirect call.Explained in Embedded C++, Volume 04
Static timing analysis (STA)
Checking that every path in a chip is fast enough by adding up delays, instead of simulating. It is called static because it needs no test patterns: it checks every path once, whatever the design is doing.Explained in Static Timing Analysis from Zero, Volume 00
static_assert
A check made by the compiler while it compiles. If the condition is false, the build stops and prints your message.Explained in Embedded C++, Volume 00
static_cast
The C++ cast for conversions the language already knows, such as a double to an integer. It refuses to turn a number into an address or one pointer type into an unrelated one.Explained in Embedded C++, Volume 01
Status signal
A signal from a datapath back to its controller that reports a fact, such as "the two numbers are equal".Explained in State Machines from Zero, Volume 09
std::bit_cast
A C++20 function that copies the bits of one value into another type of the same size, such as a float into a uint32_t, without breaking the strict aliasing rule.Explained in Embedded C++, Volume 01
std::optional
A standard type that holds either a value or nothing, with a flag saying which. It lets a function say "no result" without a status code, and uses no heap.Explained in Embedded C++, Volume 07
std::source_location
A C++20 type that holds a file name and line number. As a default argument it records where a function was called from, so a test check can report its own line.Explained in Embedded C++, Volume 09
std::span
A view of a run of elements that belong to someone else: a pointer and a length kept together. It copies nothing, so it must not outlive the buffer it looks at.Explained in Embedded C++, Volume 07
std::terminate
The C++ function called when an exception is thrown and nothing catches it. By default it aborts the program.Explained in Embedded C++, Volume 06
Sticky flag
A register that is set by a short event and stays set until it is used and cleared, so the event cannot be missed.Explained in State Machines from Zero, Volume 12
Stop bit
The 1 that ends every UART frame and returns the line to its resting level.Explained in State Machines from Zero, Volume 08
Strict aliasing
The C and C++ rule that a value may be read only through its own type or as bytes. Reading a float through a uint32_t pointer breaks it, so the result is undefined.Explained in Embedded C++, Volume 01
String (in C)
A row of characters in memory, ending with a zero byte. C has no string type of its own: a string is just a char array with that terminator.Explained in Embedded C from Zero, Volume 06
Strobe
A clock-like signal sent alongside data, whose edges tell the receiver when to capture it. DDR memories use one strobe for each group of data pins.Explained in Static Timing Analysis from Zero, Volume 10
struct
Several values of any types, grouped under one name, and stored together in memory.Explained in Embedded C from Zero, Volume 08
Sum of products
A Boolean expression written as AND terms joined by OR, such as A·B + A'·C. It becomes a layer of AND gates feeding one OR gate.Explained in State Machines from Zero, Volume 03
SWD
Serial Wire Debug: two pins, a clock and a data line, that let a probe reach the debug hardware inside an Arm chip. It does everything JTAG does for a single device.
Switch bounce
The rapid on-off flicker of a mechanical switch for a few milliseconds after it is pressed or released.Explained in State Machines from Zero, Volume 07
Switching activity
How often signals change value. Every change uses a little energy, so less switching means less power.Explained in State Machines from Zero, Volume 05
Switching regulator
A regulator that switches its input fully on and off very fast and smooths the result with an inductor and a capacitor, wasting little power.Explained in Electronics from Zero, Volume 07
Symbol
A name in a compiled program - a function or a global variable - paired with the address it ended up at. Tools like nm and the map file list them.Explained in Embedded C from Zero, Volume 09
Synchroniser
Two flip-flops in a row that bring a signal from outside safely into a circuit's own clock timing.Explained in State Machines from Zero, Volume 07
Synchronous
Working in step with a clock. In a synchronous circuit, every flip-flop changes at the same clock edge.Explained in State Machines from Zero, Volume 01
Synchronous counter
A counter in which every flip-flop shares one clock, and gates decide which ones toggle. All its bits change on the same clock edge.Explained in Digital Logic from Zero, Volume 08
Synchronous reset
A reset that acts only at a clock edge. The flip-flops treat it like any other input.Explained in State Machines from Zero, Volume 04
Synthesis
The step where a tool reads your HDL and turns it into real gates and flip-flops.
Synthesis attribute
A note written in the code, like (* name = "value" *), that tells the synthesis tool how to treat something.Explained in State Machines from Zero, Volume 05
System-synchronous
An interface where both chips run from one shared board clock, so the whole trace delay and the clock skew between chips come out of each cycle.Explained in Static Timing Analysis from Zero, Volume 10
SystemVerilog
A newer, larger version of Verilog. It adds clearer design keywords and many features for testing.Explained in State Machines from Zero, Volume 04
SystemVerilog Assertions (SVA)
The part of SystemVerilog for writing rules that span several clock cycles, such as "after start, done must come within 10 cycles".Explained in State Machines from Zero, Volume 12
SysTick
A small timer built into every Arm Cortex-M core, meant for exactly one job: interrupting at a steady rate to keep a tick counter.Explained in Embedded C from Zero, Volume 12

T

T flip-flop
A flip-flop that keeps its value when T = 0 and flips it (toggles) when T = 1.Explained in State Machines from Zero, Volume 03
Tag type
An empty struct used only as a name, so that two otherwise identical templates become different types - a GPIO register and a USART register, say.Explained in Embedded C++, Volume 05
Task
A named group of Verilog statements that can be called many times, such as "put in one coin" in a testbench.Explained in State Machines from Zero, Volume 04
Template
A pattern for a function or class with a type or value left open. The compiler writes a real version for each type you use it with.Explained in Embedded C++, Volume 00
Template argument deduction
The compiler working out a template's open types from the arguments of a call, so clamp(gain, 0.0f, 1.5f) needs no type written in angle brackets. Every argument must agree.Explained in Embedded C++, Volume 05
Temporary object
An object with no name, made in the middle of a statement. It is destroyed at the end of that statement, which for a guard object is far too soon.Explained in Embedded C++, Volume 03
Testbench
Extra code that surrounds a design in simulation. It drives the inputs and checks the outputs, like a test rig for a machine.Explained in State Machines from Zero, Volume 00
this
Inside a member function, the address of the object the function was called on. The compiler passes it in as a hidden first argument.Explained in Embedded C++, Volume 02
Threshold
The voltage a circuit compares a signal with to decide whether it is a 0 or a 1.Explained in Digital Logic from Zero, Volume 00
Threshold voltage
The gate voltage, measured from the source, at which a MOSFET starts to conduct.Explained in Electronics from Zero, Volume 05
Tick
One count of a steady timer interrupt, usually a millisecond. Code compares tick values to decide when an interval has passed, without ever waiting.
Time borrowing
When data reaches a latch after it has opened, it passes straight through, so the late stage borrows time from the stage after it. The loan is repaid by that next stage having less time.Explained in Static Timing Analysis from Zero, Volume 09
Time constant
The time that sets how fast an RC or RL circuit changes: R x C, or L / R. After one time constant a change is 63 percent done; after five it is finished.Explained in Electronics from Zero, Volume 03
Timeout
A limit on how long a state machine waits. If the expected event has not happened when the timer runs out, the machine stops waiting and moves on.Explained in State Machines from Zero, Volume 07
Timer
A counter that measures a number of clock cycles - for example, by counting down from a loaded value to zero.Explained in State Machines from Zero, Volume 07
Timing arc
One cause-and-effect connection inside a cell: a change on this input can cause a change on that output, after this much delay.Explained in Static Timing Analysis from Zero, Volume 03
Timing budget
How one clock period is shared out: the flip-flop's delay, the logic's delay and the next flip-flop's setup time must all fit inside it.Explained in State Machines from Zero, Volume 13
Timing closure
The work of changing a design until every path meets setup and hold at every corner. It is usually the longest stage of finishing a chip.Explained in Static Timing Analysis from Zero, Volume 14
Timing diagram
A picture of how signals change over time. Time runs from left to right and each signal has its own row.Explained in State Machines from Zero, Volume 00
Timing exception
A constraint that tells the tool to time a path differently from the normal one-clock-cycle rule: a false path, a multicycle path, or a max or min delay.Explained in Static Timing Analysis from Zero, Volume 08
Timing library (Liberty file)
The file listing every cell's delays, transition times, and setup and hold times, as tables. The timing tool reads it to know how fast each cell is.Explained in Static Timing Analysis from Zero, Volume 02
Timing path
One route data can take, from where it is launched to where it is captured. Timing analysis checks every path in the design, one at a time.Explained in Static Timing Analysis from Zero, Volume 01
Timing report
The tool's written account of one path: every delay in order with a running total, then the required time and the slack. Reading one is a core skill.Explained in Static Timing Analysis from Zero, Volume 04
TNS (total negative slack)
The sum of the slack of every failing path. It says how much work is left: many small failures give a large TNS even when the WNS is small.Explained in Static Timing Analysis from Zero, Volume 14
Tolerance
How far a part's real value may be from the value marked on it, as a percentage. A 100 ohm resistor at 5 percent may be anything from 95 to 105 ohms.Explained in Electronics from Zero, Volume 01
Toolchain
The set of programs that turn source code into something a chip can run: the compiler, the assembler, the linker and the tools around them.Explained in Embedded C from Zero, Volume 00
Torn read
Reading a value in more than one piece and being interrupted in between, so the pieces come from different moments and the result never existed.
Trace buffer
A small array of fixed-size records written as events happen, and printed later. Writing one costs a few stores, so it is safe inside an interrupt.
Transistor
A switch with no moving parts: a small voltage or current on one lead turns a bigger current on or off. A gate is built from a few of them, and a chip from millions or billions.Explained in Static Timing Analysis from Zero, Volume 02
Transition
A move from one state to another, or back to the same state, taken when its condition is true.Explained in State Machines from Zero, Volume 01
Transition coverage
The share of a machine's arrows - its transitions - that the tests took.Explained in State Machines from Zero, Volume 12
Transition tour
A test that drives a state machine along every arrow of its state diagram at least once.Explained in State Machines from Zero, Volume 12
Translation unit
One source file after the preprocessor has finished with it: the file plus everything it included. The compiler sees one of these at a time.Explained in Embedded C from Zero, Volume 15
Triple modular redundancy (TMR)
Keeping three copies of a circuit and taking a majority vote of their outputs, so that a fault in any one copy is outvoted.Explained in State Machines from Zero, Volume 11
Truncation
Throwing away what does not fit, rather than rounding: (int)3.99 is 3.Explained in Embedded C from Zero, Volume 03
Truth table
A table that lists every possible input pattern of a circuit and the output it gives for each one.Explained in State Machines from Zero, Volume 00
TTL (transistor-transistor logic)
An older logic family built from bipolar transistors, used in the original 7400 chips. Its inputs draw current, which limits fan-out.Explained in Digital Logic from Zero, Volume 09
Two's complement
The usual way of writing negative numbers in binary. To make a number negative, invert every bit and add 1.Explained in State Machines from Zero, Volume 14
Two-phase handshake
A handshake in which every change of the request signal, up or down, is a new request, and every change of acknowledge answers it.Explained in State Machines from Zero, Volume 09
Two-way switch
A switch that joins its middle contact to one of two others. Two of them, joined by a pair of wires, let two switches control one light, as on a staircase.Explained in Digital Logic from Zero, Volume 00
typedef
A new, usually shorter name for an existing type, such as led_mode_t for an enum.Explained in Embedded C from Zero, Volume 08

U

UART
Universal asynchronous receiver-transmitter: a serial link that sends bytes one bit at a time, framed by a start bit and a stop bit, with no clock wire.Explained in State Machines from Zero, Volume 08
Unateness
Which output edge an input edge can cause. Positive unate keeps the direction, negative unate flips it, and non-unate can do either.Explained in Static Timing Analysis from Zero, Volume 03
Unconstrained path
A path the tool cannot time because something is missing - a clock, an input delay, an output delay. It is never reported as failing, so it must be looked for.Explained in Static Timing Analysis from Zero, Volume 13
Undefined behaviour
Something the C standard gives no meaning to, such as signed overflow or reading past an array. The compiler may assume it never happens, so the code it produces can surprise you.Explained in Embedded C from Zero, Volume 16
Underlying type
The integer type an enum is stored as. Writing enum class Colour : uint8_t makes every Colour exactly one byte.Explained in Embedded C++, Volume 07
union
Several members sharing one piece of memory, so only one of them holds a meaningful value at a time. Its size is that of its largest member.Explained in Embedded C from Zero, Volume 08
unique case
A SystemVerilog case statement that promises exactly one branch will match. The simulator warns if none, or more than one, does.Explained in State Machines from Zero, Volume 04
Unit test
A small test that runs one piece of code with chosen inputs and checks the result, usually on a PC, in milliseconds.Explained in Embedded C++, Volume 09
Universal gate
A gate that can build every other gate on its own. NAND and NOR are both universal.Explained in Digital Logic from Zero, Volume 02
Unknown value (X)
A value that is not known yet, such as a flip-flop before reset. Simulators show it as X, and timing diagrams often draw it as a hatched band.Explained in State Machines from Zero, Volume 00
Unnamed namespace
A namespace with no name. What is inside it can be seen only from the same source file, like a global marked static in C.Explained in Embedded C++, Volume 01
Unreachable state
A state that no sequence of inputs can ever reach from the reset state. It can simply be removed.Explained in State Machines from Zero, Volume 10
Unused state code
A bit pattern the state register can hold that belongs to no state. Three states in two flip-flops, for example, leave one code unused.Explained in State Machines from Zero, Volume 03
Unwind table
Data the compiler adds so that, when an exception is thrown, the program can walk back through the functions on the stack and run each one's cleanup.Explained in Embedded C++, Volume 00
Up/down counter
A counter with an input that chooses whether it adds 1 or takes away 1 at each step.Explained in State Machines from Zero, Volume 07
Use after free
Reading or writing memory through a pointer after it has been freed. It often appears to work, which is what makes it dangerous.Explained in Embedded C from Zero, Volume 14
Useful skew
Skew added on purpose, by delaying one flip-flop's clock, to lend time to a path that is failing setup from the path after it that has time to spare.Explained in Static Timing Analysis from Zero, Volume 06

V

Valid/ready handshake
A same-clock handshake: data moves in every cycle in which the sender's valid and the receiver's ready are both 1.Explained in State Machines from Zero, Volume 09
Variable
A named box in memory that holds a value. The name is yours to choose; the type says how big the box is and how to read the bits inside it.Explained in Embedded C from Zero, Volume 01
VCD file
Value change dump: a file a simulator writes with every signal change in it, so a waveform viewer can draw the waveforms.Explained in State Machines from Zero, Volume 00
Vector table
A list of addresses at the very start of flash. The first entry is where the stack begins, the second is the code to run out of reset, and the rest are interrupt handlers.Explained in Embedded C from Zero, Volume 09
Verilog
A hardware description language. You write text that describes a digital circuit, and tools can simulate it or turn it into real hardware.Explained in State Machines from Zero, Volume 00
Virtual clock
A clock declared with no pin in the design, to stand for the clock of another chip. Input and output delays are then measured from it.Explained in Static Timing Analysis from Zero, Volume 10
Virtual function
A member function marked virtual. A call through a base-class reference or pointer runs the version belonging to the object's real class.Explained in Embedded C++, Volume 04
void pointer
A pointer with no type attached, used for generic code such as memcpy. It cannot be followed until it is given a type.Explained in Embedded C from Zero, Volume 07
volatile
A warning to the compiler that a value can change on its own, so it must be read from memory every time. Needed for hardware registers and for anything an interrupt touches.Explained in Embedded C from Zero, Volume 05
Volatile memory
Memory that loses its contents when the power is switched off, as RAM does. ROM and flash are non-volatile.Explained in Digital Logic from Zero, Volume 09
Voltage
The electrical push on a wire, measured in volts (V). In a digital circuit a low voltage means 0 and a high voltage means 1.Explained in State Machines from Zero, Volume 00
Voltage divider
Two resistors in series across a supply. The join between them gives a smaller voltage: Vin x R2 / (R1 + R2), as long as nothing draws current from it.Explained in Electronics from Zero, Volume 02
Voltmeter
A meter that measures the voltage between its two leads. It is connected across a part, and has a very high resistance so it draws almost no current.Explained in Electronics from Zero, Volume 01
vptr
The hidden pointer the compiler adds to every object of a class with virtual functions. It points at that class's vtable.Explained in Embedded C++, Volume 04
vtable
A table of function addresses that the compiler makes for each class with virtual functions. Every object of that class stores a pointer to it, and each virtual call goes through it.Explained in Embedded C++, Volume 00

W

Watchdog
A timer that resets the chip unless the program keeps telling it not to. It recovers a board that has locked up, when nobody is there to press reset.Explained in Embedded C from Zero, Volume 16
Watchpoint
A breakpoint on data rather than code: stop when anything writes to this address. The fastest way to find what is corrupting a variable.
Watt (W)
The unit of power: one joule of energy every second. One volt driving one amp gives one watt.Explained in Electronics from Zero, Volume 02
Waveform
The line a signal draws on a timing diagram as it moves between 0 and 1 over time.Explained in State Machines from Zero, Volume 00
Waveform viewer
A program that draws the signals from a simulation as a timing diagram, such as GTKWave or EPWave.Explained in State Machines from Zero, Volume 00
Weak symbol
A definition the linker uses only when no ordinary definition has the same name. Start-up files make every interrupt handler a weak symbol for a default handler.Explained in Embedded C++, Volume 01
WNS (worst negative slack)
The slack of the single worst path. It says how far the design is from its target speed.Explained in Static Timing Analysis from Zero, Volume 14
Wrap-around
What an unsigned number does when it passes its highest value: it starts again at zero. Counting below zero wraps to the top in the same way.Explained in Embedded C from Zero, Volume 02

X

XNOR gate
XOR followed by NOT. Its output is 1 when its two inputs are the same, and 0 when they differ.Explained in Digital Logic from Zero, Volume 02
XOR gate
Exclusive OR. Its output is 1 when its two inputs are different, and 0 when they are the same.Explained in State Machines from Zero, Volume 00

Z

Zener diode
A diode made to conduct backwards at a chosen voltage. With a series resistor it holds that voltage steady.Explained in Electronics from Zero, Volume 04
Zero-cost abstraction
A clearer or safer way of writing code that compiles to the same machine code as the plain version, so it costs nothing when the program runs.Explained in Embedded C++, Volume 01