CE 433 Embedded Devices

HW3: Combinational Blocks
Name: Lucien Verrone
Email: ljverrone@fortlewis.edu

Introduction:

This assignment was an in depth look at more advanced functions in Vivado. This lab started with binary adders followed by comparators, decoders and encoders, multiplexer, and finally parity bit modules. While most modules were simulated virtually, but the two-bit adder, four-one multiplexer, even parity modules, and the improved modules from homework two were simulated on the board using switches, leds, and the seven-segment display.

Task 1:

Task one was to recreate half and full one bit adder simulations.
Figure 1: One bit half adder code and simulation
Figure 2: One bit full adder code and simulation

Task 2:

Task two was to design a test bench for a one-bit comparator and run a simulation.
Figure 3: One bit comparator code and simulation.

Task 3:

Task three was to design a test bench for a four-bit comparator and run a simulation.
Figure 4: Four bit comparator code and simulation.

Task 4:

Task four was to implement a two-bit comparator onto the FPGA board using switches as inputs and LEDs as outputs.

Figure 5:Two-bit comparator code.


Figure 6: Two-bit comparator FPGA demonstration.

Task 5:

Task five was to design a test bench foor a two-four decoder and run a simulation.
Figure 7: Two-four decoder code and simulation.

Task 6:

Task six was to finish the design of a 8x3 priority encoder and run a simulation. One of the outputs, Q0, was given while the expressions for Q1 and Q2 had to be found manually.

Figure 8: Q1 and Q2 calculations.
Figure 9:8x3 priority encoder code and simulation.

Task 7:

Task seven was to derive the logical expression for a 4-1 multiplexer, similar to what was required for the first part of task six.

Figure 10: 4-1 multiplexer logic.

Task 8:

Task eight was to implement the 4-1 multiplexer onto the FPGA board to demonstrate functionality of my logic darrived in task 7.


Figure 11: 4-1 multiplexer demonstration.

Task 9:

Task nine was to design and implement onto the FPGA board both an even parity generator and checker.

Figure 12: Even parity checker code and even parity generator code.

Figure 13: Even parity checker demonstration.

Task 10:

Task ten was to implement two designs which were both improved versions of the modules created in homework two: the home alarm module and the parking module. Both improved versions use a seven-segment display module along with a base logic module tied together with a head module.
Figure 14: Improved home alarm module code and improved parking module code.

Figure 15: Improved home alarm module demonstration.

Figure 16: Improved parking module demonstration.

Discussion:

This assignment honed my test bench creating capabilities. I ran into issues often with the formatting of variables between modules and a greater attention to detail was required compared to pervious labs. It was also reasuring to see some of my seven-segment display skills transfer from Lab 3. Overall, this assignment has forced me to put in hours and familiarize myself more in depth with Vivado and the FPGA board.