The two boards
My solution consists of two boards, a motherboard and a daughtercard.
Actually, the motherboard itself is already enough to build most CNCs, and the addition of a daughtercard is not strictly needed, unless you want to add some functions.
The daughterboard is only necessary if you want to have additional I/O lines, LPT-like connections or use the embedded stepper drivers.