Boolean Circuits · NAND Game: Memory (Optional)
Lesson 6
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