In the Electrical and Computer Engineering Department (http://ece.byu.edu/) at BYU, every student must participate in a "senior project." Various senior projects are organized and mentored by the faculty each year. Multiple projects are offered so that each student may choose a project with an emphasis he or she is interested in. Some projects have involved creating a software-based radio, programming robots to play soccer, and implementing computer vision to help a robot drive a course by itself. I chose to take part in the system-on-a-chip senior project when I was a senior.
This project involved developing a system on a prototype FPGA board that could decode and play MP3 files in real time as well as decode and display MPEG-2 video. We were supplied with FPGA boards which featured a Xilinx Virtex-2 Pro FPGA with embedded PowerPC processors to complete the project. Our tasks involved constructing the system architecture on the FPGA chip using Xilinx's EDK tools, porting several open source projects to our PowerPC-based on-chip system, and connecting all components together to make them work.
In the end, we had a system that could decode and play MP3 files while running a web server (used as the user interface and to load files onto our system) and decoding a string of MPEG-2 frames and displaying them on an attached monitor. We learned a lot about system architecture, real-time operating systems, and designing with hardware and software in mind. Though it was very time-consuming, it was a fun and educational experience.