Building Embedded Systems: Programmable Hardware