CE433 Embedded Systems
Tutorial 5: Video Graphics Array (VGA)
Name: Audra Benally

Email: albenally1@fortlewis.edu

1. Title: Video Graphics Array

2. Introduction: In this lab we learned about the VGA signal 640 x 480 @ 60 Hz Industry standard timing basics. We learned about how the refresh rates were timed out based on the pixel frequency. We also learned about how the screen was framed and how there are actually 800 x 525 total pixels in this standard. Then we were tasked with following the textbook example to type the code, create a clock module and create a distributed ROM so we can display a given picture on the monitor. After this we were challenged with creating a blank screen on the monitor then getting the screen to flash red, green, and blue in 1 second intervals.

3. Materials and Methods:
        Materials:

                 - Computer
                 - Vivado Software
                 - GVim Software
        Methods:
             The first portion of the code was a walkthrough to display the image in figure 1 on the monitor. A 25MHz clock signal was created for the VGA controller pixel frequency and a distributed ROM was made to store the given image file. Results from this tutorial are seen in figure 1. The next task was to display a white screen on the monitor. The red, green, blue, and pixel_data variables were expanded to utilize all 12 bits to display the fully white screen. Then the next task was to flash the colors red, green, and blue, in 1 second intervals. I used a counter and the 100MHz clock to accomplish the flashes. Results can be seen in video 1 below.

4. Results:

   
             Figure 1. Basys 3 board picture on the monitor.

   
             Figure 2. White screen displayed on the monitor.

   
             Figure 3. Code used to display the white screen. The sizes of the colors and pixel_data were changed in the VGAmodule code as well.

   

                Video 1. Red green and blue flashing. The screen looked much more green in person than it does in the video.
    Video link: https://youtu.be/qj6Dyd8tgn0

   
              Figure 4. Red green and blue screen flash code.

5. Discussion
    For this tutorial I learned a lot about the way our monitors work. Just learning the basics amazes me about how complex our computer systems are! I enjoyed the challenges and liked learning more about distributed ROM. Everything went pretty smoothly. I kept getting a yellow screen instead of a white screen but was able to figure out that I wasn't sizing my variables correctly once I revisited the code again. My pictures also came out blurry or really dim. Overall great week!