ECE 4530: Hardware/Software Codesign
How will you select a microprocessor for your next embedded project? Would you develop software for the whole project or are there some parts that would be much more efficient when implemented in hardware?
Modern embedded systems are not just software or hardware, they're both. A smart designer is one that knows how to partition the system into software and hardware components, using an architecture strategy that will optimize performance, power consumption, development time, and cost.
This course goes to the root of this design problem. We will look into issues such as how to make software run faster by adding hardware coprocessors, how to design custom-instruction set processors, and how to optimize of memory-bandwidth and bus-bottlenecks in general-purpose architectures.
There is a practical component as well, using cosimulation tools and an FPGA prototyping kit. There will be a hands-on project that runs from the upper abstraction layers of system design all the way down into the FPGA board.
This course is for everyone who is curious about the other side. You could be a hardware person, and you wonder what software can do for your architecture. You could be a software person who wants to lift the lid of a processor and find what keeps the hardware from running faster. You could be a circuits person who wants to approach design top-down rather then bottom-up.
Here is some background material.
Instructor: Patrick Schaumont
Questions? Contact the instructor at email@example.com