Note: Please scroll down to see all details of this project below ↓
fpga Verilog Multimeter
Objective of This Project
The goal of this project is to create a digital multimeter that can calculate the DC value inputs given by the professor for my Computer Hardware Design class. For this project I will be mainly implementing everything I learned in this class to this final project, including, UART interface, FPGA Verilog coding to my DE10-Lite Board, and Python terminal interface (which will be sending the data back and forward from the computer to the FPGA board).

Verilog Coding & planning
For the code, I coded everything on Intel Quartus Prime Lite 2022 in Verilog programming language. The system shall have one UART TX/RX pair. TX shall be assigned to GPIO[0] and RX shall be assigned to GPIO[1]. The UART format is 9600 baud, no parity, one stop bit. The system shall use two 7‐segment displays to display the current value of the selected measurement in hexadecimal. The system shall use SW[1:0] to select the measurement function. KEY0 shall be used as a reset signal. The system shall receive 8‐bit unsigned samples on the UART RX input and store the samples in memory. The system shall store the last 256 samples received. If the value of SW[1:0] is 00, the system shall calculate the DC value of the 256 stored samples.

Applying UART interface with python terminal
When applying the UART interface the data will be sent back and forward between my computer and the FPGA board. Therefore, the selected measurement shall be calculated each time a new sample is received. Each time the measurement is calculated, the result shall be displayed on HEX1 and HEX0 in the hexadecimal format of the board. Each time the measurement is calculated (I will be using Python to be sending a huge list of data in hexadecimal to my FPGA board), the result shall be transmitted via the UART interface.

Verilog Multimeter Final Demo
This is the final demo of my multimeter Verilog project. The data that was given by my professor was put into my computer to the FPGA board via UART interface, in which the calculated values from the FPGA board were then sent back to the Python terminal screen back a forward changing the average DC values as new values were added to the terminal, that's why we can see the number flickering on our FPGA board as our terminal board is updating.
