Skip to content
BetterDL

Register transfer notation

Also called: RTN, RTL, register transfer language, register transfer, register transfer level, micro-operation, microoperation, R1 ← R2

A compact notation for what happens to registers at a clock edge, such as R1 ← R2 + R3 or T1: R2 ← R1 for a conditional transfer.

Register transfer notation (RTN) describes hardware in terms of what registers do at each clock edge. Each statement is a register transfer, or micro-operation.

The pieces:

  • R1 ← R2: at the next edge, R1 loads a copy of R2. R2 is unchanged.
  • R1 ← R1 + R2: R1 loads the sum. An adder sits in front of R1's inputs.
  • T1: R2 ← R1: a conditional transfer. It happens only at an edge where control signal T1 = 1. In hardware, T1 drives R2's load enable.
  • A comma means both transfers happen at the same edge: T2: R1 ← R2, R2 ← R1.
  • M[MAR] means the memory word at the address held in MAR.

The golden rule: everything on the right of an arrow is read from the values before the edge. All destinations update together afterwards. That is why R1 ← R2, R2 ← R1 at one edge performs a swap.

Why it matters: a processor's datapath is registers joined by combinational logic, and each instruction is a short sequence of transfers. The fetch of a simple CPU reads: MAR ← PC; then MDR ← M[MAR], PC ← PC + 1; then IR ← MDR. Reading RTN tells you exactly which load enables and MUX selects the control unit must set at each edge.

A register can only load one value per edge, so two transfers into the same register at one edge are impossible.

Worked examples

Example

Two transfers at one edge

4-bit registers hold R1 = 0011 (3) and R2 = 0100 (4). At one edge: R2 ← R1 + R2, R1 ← R2.

  1. 1.

    Read the right-hand sides from the values before the edge: R1 + R2 = 3 + 4 = 7, and R2 = 4.

  2. 2.

    At the edge both load together: R2 = 0111 (7), R1 = 0100 (4).

  3. 3.

    R1 gets R2's old 4, not the new 7.

Example

Spotting an impossible statement

Which of these cannot happen at a single edge? (a) R1 ← R2, R3 ← R2 (b) R1 ← R2, R1 ← R3 (c) R1 ← R2, R2 ← R1.

  1. 1.

    (a) One source feeding two destinations is fine: both load R2's value.

  2. 2.

    (c) A swap is fine: both read old values, then both update.

  3. 3.

    (b) R1 would have to load two different values at once. Impossible.

Common mistakes

  • Using a value updated at the same edge. Every right-hand side uses the values from before the edge.

  • Reading R1 ← R2 as moving R2's contents out. R2 keeps its value; R1 gets a copy.

  • Reading a comma as "then". A comma means the same edge; separate steps are separate edges.

Practice Register transfer notation

Interactive questions with instant feedback and a worked solution for every wrong answer.

Learn it step by step

Register transfer notation is taught in Registers and Basic CPU / Computer Architecture.