Designing with FPGAs and CPLDs