A Practical Introduction to Hardware/Software Codesign