This page is dedicated to my time in CPE-487, Fall 2020 at Stevens. As I take the course it will be updated accordingly!
Week 1 (8/30 - 9/5):
9/1 - Reviewed the syllabus, created this Google Site, created a GitHub Repo for this class (LINKED ABOVE)
9/3 - Continued to review the syllabus, began with the textbook (Free Range VHDL by Bryan Mealy and Fabrizio Tappero of Free Range Factory), introduced VHDL and its basic rules (case sensitivity, white space, etc.)
Week 2 (9/6 - 9/12):
9/8 - Learned more about VHDL and the Black Box concept
9/10 - Downloaded GHDL and GtkWave to a Linux Mint Cinnamon system, continued with the textbook (Chapter 4), ran Hello World! and Full Adder test cases
Week 3 (9/13 - 9/19):
9/15 - Continued with the textbook (Chapter 5), visualized the Full Adder Test-Bench with GtkWave, discussed the three main types of modelling styles in VHDL: Data-Flow, Behavioural, Structural
9/17 - Discussed Multiplexer and Flip-Flop examples and ran the test benches with GtkWave, continued with the textbook (Chapters 6 and 7), created groups for our projects, and discussed how to best distribute the limited hardware
Week 4 (9/20 - 9/26):
9/22 - Continued with the textbook (Chapter 8), discussed Finite-State Machines, how to model them using flow diagrams and how to represent them using VHDL
This article, although based in JavaScript, is a great crash course in understanding just what an FSM is and features a great walk though of the logic of a single streetlight and a house lighting circuit as well as how to construct their flow diagrams
9/24 - Finished textbook Chapter 8, discussed One-Hot Encoding and Gray Code, discussed class and group organization, weekly report structure and expectations, personal contributions, and FPGA distribution methods
Week 5 (9/27 - 10/3):
9/29 - Continued with the textbook (Chapter 9), discussed semi-conducting devices, further analyzed Chapter 8 code examples
10/1 - Continued with the textbook (Chapter 10), went over personal class contributions, FPGA distribution plan discussed, group leaders assigned, group communication established
Week 6 (10/04 - 10/10):
10/06 - Continued with textbook (Chapters 11 and 12), downloaded Reference Manual for FPGA
10/08 - Finished textbook (Chapter 13), discussed keywords and looping in VHDL programs, downloaded Xilinx Vivado for Linux Mint (much harder than it needed to be) simulator for FPGA board
Here is the link to the forum post that helped me install Vivado successfully on an "unsupported" OS. Keep in mind, Vivado is supported on Ubuntu and Mint Cinnamon is a derivative of Ubuntu, YMMV!
In order for this solution to work, you must also use chown recursively to make yourself the owner of all files within the Xilinx folder, this is not included in the forum post and is likely distro dependent
Week 7 (10/11 - 10/17):
10/13 - Columbus/Indigenous Peoples' Day Day :)
10/15 - Instructions for labs, walk-through of class GitHub page, followed Lab 1 in lecture
Completed Lab 1 in conjunction with my teammates over Zoom using Vivado and our borrowed board
Week 8 (10/18 - 10/24):
10/20 - Troubleshooted Lab 1 Vivado and compilation issues with Prof. Lu, discussed Lab 1 Part 2 and walked through it in class
10/22 - Walked through Lab 2 in class, completed Lab 1 Part 2 and Lab 2 in conjunction with teammates using our borrowed board
Week 9 (10/25 -10/31):
10/27 - Walked through and completed Lab 3
10/29 - Walked through and completed Lab 6
Week 10 (11/01 - 11/07):
11/03 - Finished Labs 4 and 5, met with group to discuss plans for the final project
11/06 - Decided to alter code for the Pong Lab to create a Brick Breaker-esque game
Week 11 (11/08 - 11/14):
11/10 - Met with group to plan Brick Breaker project
11/12 - Searched for similar previous projects, there are several written in VHDL and other similar languages but not for the same board
Week 12 (11/15 - 11/21):
Began to deconstruct other similar VHDL projects to get a grasp on how to edit our already completed pong lab into a Brick Breaker game:
Week 13 (11/22 - 11/28):
Using the deconstructed projects collected in the week prior, began implementing changes to the Pong Lab code
Ran into issues making the bricks appear on the screen at all
Ran into several issues yet unresolved in the other VHDL projects we had found:
Proper hit detection, Making the bricks disappear when hit
Week 14 (11/29 - 12/05):
Began solving issues from the prior week:
The bricks not appearing was a silly syntax error on our part
Hit detection was very similar to that of the bat controlled by the player. The bricks reflect the ball in a way that makes physical sense.
One struck by the ball, the bricks "disappear," but are actually more simply moved off screen out of view of the user
Began constructing website page exclusively for the BrickBreaker project
Week 15 (12/06 - 12/12):
Finalized BrickBreaker site page
Edited the class repo:
Added all Lab files for ease of access
Completed markdown README.md file explaining both the final project code as well as edits that were made to Lab files