CE433 Embedded Systems
Tutorial 7: Universal Asynchronous Receiver/Transmitter (UART)
Name: Audra Benally

Email: albenally1@fortlewis.edu

1. Title: Universal Asynchronous Receiver/Tansmitter (UART)

2. Introduction: In this lab we learned how to use the UART protocol with the Basys 3 FPGA board. We learned by implementing a transmitter and a reciever design in verilog. Along the way throught these tasks we also implemented a debounce module for the push button, used the Arduino Serial Monitor to display transmissions, downloaded and used a Tera Terminal and practiced ASCII codes.

3. Materials and Methods:
        Materials:

                 - Computer
                 - Basys 3 FPGA Board
                 - Vivado Software
                 - GVim Software
                 - Tera Terminal
                 - Arduino Serial Monitor
        Methods:
             The first tasks was to use the debounce module code to create a counter and display the counter on the seven segment display. For this, I used the old ssDisp.v module that was created from Lab 3. I used a top module that detected the button push from the debounce module and incremented a variable that was displayed on the seven segment. For the second task, section two in the tutorial was followed to make a transmitter. The push
button was used to increment through the ASCII codes starting at 'A', the resulting letters/symbols can be seen in the serial monitor in Figure 2. For section 3, the tutorial led me through the steps to create a receiver using the UART protocol. After typing all the given code the module was synthesized, implemented, and the bitstream was generated. Then the Tera Terminal was downloaded and the serial port was set up to repeat the tutorial results; After this was finished the 'ssDisp.v' module was used again to show the numbers that were typed into the Tera Terminal in the seven segment display. This last part of the homework was for Task 4.

4. Results:

   

             Video 1. Debounce counter for task 1.
    Video link: https://youtu.be/CVokUHcPPy0

   
             Figure 1. Debounce testbench module code.

   
             Figure 2. Serial monitor output from following task 2.

   

             Video 2. Results from tasks 3 and 4.
    Video link: https://youtu.be/eUEQndIDWME

   
             Figure 3. Top code module for receiving code for Tasks 3 and 4. The orange stars show the code I added for Task 4.

5. Discussion
    For this tutorial, the tasks for the turorial went smoothly with very little issue. I got a little worried when I was getting errors for numbers 0, 3, 6, and 9 in the last task but then I realized it was because of the parity check. I combined the results from tasks 3 and 4 because task 3 needed to be done in order to do task 4. Overall a great and comprehensive tutorial.