CE 433 Embedded Devices

HW4: Data Storage
Name: Lucien Verrone
Email: ljverrone@fortlewis.edu

Introduction:

This assignment was an in depth look at more advanced gates in Vivado, along with an introduction to data storage. This assignment started with latches and flipflops, before moving on to a button debounce circuit. After this, the assignment continues with more flipflops and finally wraps up with an introduction into memory and ROMs, including an introduction to IP blocks.

Task 1:

Task one was to recreate an SR latch, SR flip-flop, a D latch, and an edge triggered D flip-flop along with simulating each module virtually.
Figure 1: SR latch and SR flip-flop code.
Figure 2: SR latch and SR flip-flop simulations.
Figure 3: D latch and edge triggered D flip-flop code.
Figure 4: D latch and edge triggered D flip-flop simulations

Task 2:

Task two was to implement a button debounce circuite on a breadboard and test it using a DC source. The circuit consisted of two resistors, a capacitor, and a Schmitt trigger IC chip.
Figure 5: Button debounce circuit and oscilloscope reading (yellow is button input, blue is circuit output).

Task 3:

Task three was to implement a JK and T flipflop and simulate each.
Figure 6: JK and T flip-flop code.
Figure 7: JK and T flip-flop simulations

Task 4:

Task four was to experement with reading different memory files, ending with building a ROM IP block and designing and simulating a test bench for it.

First, an eight bit binary ROM was implemented.
Figure 8: 8bit binary ROM code and simulation.

Next, a 16bit hexidecimal ROM was implemented.
Figure 8: 16bit hexidecimal ROM code and simulation.

Next, an 8bit hexidecimal ROM was implemented.
Figure 8: 8bit hexidecimal ROM code and simulation.

Next, a 3bit binary ROM was implemented.
Figure 8: 3bit binary ROM code and simulation.

Finally, a ROM IP block was created and a test bench was designed for it. The address is set with an offset to demonstrate a change in memory, as all values before ~value 625 decimal are seven.
Figure 8: ROM IP block testbench code and simulation.

Discussion:

This assignment familiarized me not only with an array of flip-flop designs but also experience creating memory files and designing a module to read memory files of different formats. I also gained experience designing a debounce circuit, then using a virtual implementation later on in the week during a quiz. Overall, I feel ready to work more with file storage and memory in Verilog.