Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/ferasaljoudi/classesschedule

A classes schedule designed on BASYS3 (FPGA) using VHDL and Vivado
https://github.com/ferasaljoudi/classesschedule

Last synced: 7 days ago
JSON representation

A classes schedule designed on BASYS3 (FPGA) using VHDL and Vivado

Awesome Lists containing this project

README

        


Class Schedules


This is an individual lab project for the ENEL384 class. The requirement of the project is to design a synchronous circuit of reasonable complexity ( > 1 stage, < 100 stages), which means that the project can not be composed solely of combinational logic.

To design the chosen project (Class Schedules), I used VHSIC Hardware Description Language (VHDL), Vivado (a software for hardware description language designs) and the BASYS-3 FPGA
Board.




Demo




Demo Gif




Technologies Used




VHDL


Vivado


Basys3




Description


In the FPGA board, I used:
- Four Switches to turn ON or OFF the 4 classes/subjects.
- Five buttons to select what do we want to display
- Left button for class
- Center button for lab
- Right button for seminar
- Top button for midterm
- Bottom button for final
- Four 7-Segments to display class names, time and date.
- The first 4 LEDs on the right of the FPGA to highlight which switch is corresponding to which class
- The first 5 LEDs on the left of the FPGA to represent the weekdays (Monday to Friday)

To display 4 different letters/numbers on the four 7-segment displays where the anode of each 7- segment is driven from four transistors which have common 3.3V, I used a multiplexing technique. I created a clock which will switch between each display at intervals of 0.0025 seconds, which is too fast for the human eye to discern. I produce the illusion that all four displays are lighting simultaneously. This allowed me to represent different letters/numbers on each display.

Then I created a second clock which is for 3 seconds. When all 4 switches are OFF, this clock allows me to represent the pattern of the 4 LEDs on the right of the FPGA. Each LED is represented for 3 seconds and it highlights a class switch. Along with these LEDs, the 7 segment displays the name of the class for the corresponding led, and the 5 LEDs on the left will display the days that are occupied by the displayed class.

Then I used combinational logic (if, elsif, case) to determine the output (9 LEDs and 7 segment display) based on the input (4 switches and 5 buttons).




Resources


To view the YouTube video demonstrating the ClassesSchedule on the FPGA:

- _Click Here_

### Note:
I only had to write the Enel384Project.vhd file. The Basys-3-Master.xdc is a general .xdc file for the Basys3, and it is essential to define the pins and constraints for the Basys3 FPGA board. To view the .xdc file on the Digilent website:

Click _HERE_ then find the "Master XDC Files" link.