Boolean Circuits · NAND Game: Memory (Optional)

Lesson 6

Nikolai Chukhin · Alexander S. Kulikov

The next task is to construct a counter that increments a number at each clock cycle. The gate \(\texttt{REGISTER16}\) is the 16-bit version of the register constructed above, with the same clock behavior; in the following tasks it is initialized to \(0\).

Problem. Synthesize a circuit of size \(2\) over \(\{\operatorname{NAND}_{2}, \operatorname{INV}_{1}, \operatorname{REGISTER}_{16}, \operatorname{INC}_{16}\}\) computing the 16-bit counter function: \[\operatorname{COUNTER}_{16}(cl)=q.\] It starts at \(0\) and increments \(q\) modulo \(2^{16}\) on each falling clock edge.

In this task, cycles in the circuit are allowed.

String task, Advanced problem