Embedded Systems Design with Platform FPGAs: Principles and Practices