Digital System design with PLDs and FPGAs