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