Assignment : Complex Combinational Logic
Assignment Description:
In this assignment we will put in practice the topics covered in Modules 4 and 5. There are two parts to this assignment: the first is to implement the 4-bit adder discussed in Module 5; the second is to take the output from the 4-bit adder and implement a decoder to display the result on the 7-segment display.
Figure 1 - Assignment 2 block diagram
4-bit Adder
The inputs to the adder should be connected to the toggle switches SW0-7 where SW7-4 represent one number and SW3-SW0 represent the other.
7-Segment Display
Seven LEDs can be arranged in a pattern to form different digits as shown in Figure 2. Also shown in Figure 2 are the two different configurations: common-anode is where all the LED anodes are all connected to positive voltage; common-cathode is where all the cathodes are connected to ground. The 7-segments displays on the Basys3 board are common-anode. In this case, an output of 0 will turn on an LED and an output of 1 will turn it off.
Figure 2 - 7-segment display configurations
The design of the 7-segment decoder should have 4-bit hex number as input, x(3:0), and the outputs are the 7-segment values a - g. The table shown in Figure 3 describes the output cathode values for each segment a - g needed to display all hex values from 0 - F. Since the 4-bit adder has an extra carry bit, we will connect it directly to the decimal point on the 7-segment display.
Figure 3 - Segment values required to display hex digits 0 - F
Hint: Use case and/or if/else statements to implement the 7-segment decode.
Below are some examples showing the appropriate inputs and outputs of a properly functioning program. Note that these show the Basys2, but the output should look the same on the Basys3.
What to hand in:
o The constraints file (*.xdc)
o All vhdl files that you wrote (*.vhd)
o The compiled program (.bit file)