A systematic approach to digital logic design