Table of Contents
You will have the remainder of the semester to work on a project of your choice. Given you have longer to work on it, this project will be worth twice as much as a normal lab. There will be no lab report, only a video demonstration and code submission.
Project Requirements
- Your project must be a hardware design that you implement in SystemVerilog.
- When compiled, it must produce a bitstream for the Basys 3 FPGA board.
- You will create a short video (less than 2 minutes) demonstrating your project, and submit the video along with your code.
- It’s recommended that the project not rely on any external hardware, aside from what we have used in class (i.e. UART and VGA display). If you want to use external hardware, you can, but keep in mind that it won’t be available for testing by the instructor/TAs when you submit your code, so they will only be able to grade based on what works on the board without the external hardware.
Project Ideas
Here are some project ideas:
- Create something entirely on your own. This is encouraged, but it may be more risky if you don’t have a clear understanding of how to implement it in hardware.
- Parallelized Codebreaker:
- Take the codebreaker design from the previous lab, and make it faster by trying multiple keys in parallel. This is a common technique used in real-world codebreaking hardware, and it can significantly reduce the time it takes to find the correct key.
- You may choose to update the Write VGA module to display multiple keys and/or plaintexts at the same time, or you can just show one (or a few) of the keys and plaintexts, and have the rest be hidden from the VGA display. However, once you find the correct key, you should display it on the VGA display, along with the decrypted plaintext.
- How many parallel decryption units can you fit on the FPGA? 4? 8? 16? More?
-
Pong. In past years of the class, we created a simple Pong game using the VGA display. This was a 2-week lab, and the old lab writeup is available here.
- Paint Program. Create a simple paint program that allows you to draw shapes on the VGA display using the buttons and switches on the board. The Bitmap Memory Module can be used to store arbitrary pixel data, so you can use that as a starting point for this project.
Proposal
Before you start working on your project, you should submit a short proposal describing what you plan to do. If you are planning to do one of the suggested projects above, you only need a sentence or two describing it. If you are planning to do something else, you should provide a bit more detail about what you plan to do, and how you plan to implement it in hardware.
This must be submitted as a text file (.docx, .pdf, not accepted) on LearningSuite. See LearningSuite for the submission link and deadline. There will be no extensions on the proposal deadline, so make sure to submit it on time. The proposal will be worth 5% of the total project grade.
Video Demonstration
Requirements for the video demonstration:
- The video should be less than 2 minutes long.
- The video should show the project working on the Basys 3 board.
- The video should explain how the TA/instructor can test the project, and what they should expect to see when they test it.
- Explain what you implemented, how it works at a high level, and any interesting details about your implementation. Mention what was challenging, and how you handled those challenges.
- Provide a link to your video in the
video.txtfile. You can use Youtube, Google Drive, etc, but make sure the link is publicly accessible. There will be an automatic deduction of points if the TA/instructor cannot access the video.
Grade Criteria
Your project will be graded based on the following criteria:
- Project difficulty
- Functionality (the project will be compiled and tested on the Basys 3 board)
- Video requirements (see above)
Final Pass-Off
Refer to the passoff tutorial for the passoff process.
- See
required_filesin the passoff script. - Makefile rules that must work correctly:
Makefile:cleanproject_top/Makefile:synth,implement,download