VHDL Assignment
CKRE110 Assignment 2:
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.
X a b c d e f g
1 = off
0 = on
0 0 0 0 0 0 0 1
1 1 0 0 1 1 1 1
2 0 0 1 0 0 1 0
3 0 0 0 0 1 1 0
4 1 0 0 1 1 0 0
5 0 1 0 0 1 0 0
6 0 1 0 0 0 0 0
7 0 0 0 1 1 1 1
8 0 0 0 0 0 0 0
9 0 0 0 0 1 0 0
A 0 0 0 1 0 0 0
b 1 1 0 0 0 0 0
C 0 1 1 0 0 0 1
d 1 0 0 0 0 1 0
E 0 1 1 0 0 0 0
F 0 1 1 1 0 0 0
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.
Example 1
Example 2
What to hand in:
o The constraints file (*.xdc) o All vhdl files that you wrote (*.vhd) o The compiled program (.bit file)