07 - Combinational Logic - Comparators
07 - Combinational Logic - Comparators
07 - Combinational Logic - Comparators
COMPARATORS
Designed Circuit
x : IN STD_LOGIC_VECTOR (2 DOWNTO 0)
3
Comparator q : OUT STD_LOGIC
y : IN STD_LOGIC_VECTOR (2 DOWNTO 0)
3
THREE-bit comparator
• Two binary numbers are equal if their corresponding bits are equal.
x : IN STD_LOGIC_VECTOR (2 DOWNTO 0)
3
Comparator q : OUT STD_LOGIC
y : IN STD_LOGIC_VECTOR (2 DOWNTO 0)
3
N inputs
Example: AND Reduction
x(n-1)
´1´
x(2)
´1´
x(1)
´1´
x(0)
´1´
Example: AND Reduction
Example: AND Reduction
Example: AND Reduction
Example: AND Reduction
Example: AND Reduction
Example: AND Reduction
Example: AND Reduction
GENERATE Statement
• GENERATE is a concurrent statement.
• It allows a section of code to be repeated a number of times, thus
creating several instances of the same assignments.
inN
eq
andReduction eq
x(1) in0
1-Bit
in1
eq
Comparator in0
y(1) in1
x(0) in0
1-Bit eq
Comparator
y(0) in1
N-bit Equality
N-bit Equality
N-bit Equality
N-bit Comparator Instantiation with 4-bits Quartus Generated Circuit
N-bit Equality
N-bit Comparator Instantiation with 8-bits Quartus Generated Circuit
GreaterThan – LessThan Comparator
• A circuit to determine whether one binary number is greater than
another, or less than another.
x :=“101” x :=“101”
y :=“110” y :=“011”
x :=“011” x :=“010”
y :=“011” y :=“011”
GreaterThan – LessThan Comparator
THREE-bit GreaterThan 0
m16-m17
- -
0
-
1
- -
0 0
-
0
-
-
Table 1 m16-m24 0 1 - 0 0 0
Group minterm Binary m32-m33 1 0 0 0 0 -
1
0 - - - - - - - m32-m24 1 0 0 0 - 0
m16 0 1 0 0 0 0 m32-m40 1 0 - 0 0 0
1 m32-m48 1 - 0 0 0 0
m32 1 0 0 0 0 0
m17 0 1 0 0 0 1 m17-m25 0 1 - 0 0 1
m24 0 1 1 0 0 0 m24-m25 0 1 1 0 0 -
m33 1 0 0 0 0 1 m24-m26 0 1 1 0 - 0
2 m34-m35 1 0 0 0 1 -
m34 1 0 0 0 1 0
m40 1 0 1 0 0 0 m34-m42 1 0 - 0 1 0
m48 1 1 0 0 0 0 2 m40-m41 1 0 1 0 0 -
m25 0 1 1 0 0 1 m40-m42 1 0 1 0 - 0
m26 0 1 1 0 1 0 m40-m44 1 0 1 - 0 0
m35 1 0 0 0 1 1 m48-m49 1 1 0 0 0 -
m41 1 0 1 0 0 1 m48-m50 1 1 0 0 - 0
3 m42 1 0 1 0 1 0 m48-m52 1 1 0 - 0 0
m44 1 0 1 1 0 0 m35-m43 1 0 - 0 1 1
m49 1 1 0 0 0 1 m35-m51 1 - 0 0 1 1
m50 1 1 0 0 1 0 m41-m43 1 0 1 0 - 1
m52 1 1 0 1 0 0 m42-m43 1 0 1 0 1 -
3
m43 1 0 1 0 1 1 m49-m51 1 1 0 0 - 1
4 m51 1 1 0 0 1 1 m49-m53 1 1 0 - 0 1
m53 1 1 0 1 0 1 m50-m51 1 1 0 0 1 -
m52-m53 1 1 0 1 0 -
THREE-bit comparator Group minterm
Table 3
Binary
Table 2 m16-m17-m24-m25 0 1 0 0 0 -
Group minterm Binary
0 - - - - - - -
m16-m17-m48-m49 - 1 0 0 0 -
m16-m17 0 1 0 0 0 - m16-m24-m17-m25 0 1 - 0 0 -
m16-m24 0 1 - 0 0 0 m32-m33-m34-m35 1 0 0 0 - -
m32-m33 1 0 0 0 0 - 1 m32-m33-m40-m41 1 0 - 0 0 -
1
m32-m24 1 0 0 0 - 0
m32-m40 1 0 - 0 0 0
m32-m33-m48-m49 1 - 0 0 0 -
m32-m48 1 - 0 0 0 0 m32-m40-m34-m42 1 0 - 0 - 0
m17-m25 0 1 - 0 0 1 m32-m24 1 0 0 0 - 0
m24-m25 0 1 1 0 0 - m32-m48 1 - 0 0 0 0
m24-m26 0 1 1 0 - 0
m24-m26 0 1 1 0 - 0
m34-m35 1 0 0 0 1 -
m34-m42 1 0 - 0 1 0 m34-m35-m42-m43 1 0 - 0 1 -
2 m40-m41 1 0 1 0 0 - m34-m35-m50-m51 1 - 0 0 1 -
m40-m42 1 0 1 0 - 0 m34-m42-m35-m43 1 0 - 0 1 -
m40-m44 1 0 1 - 0 0
m40-m42-m41-m43 1 0 1 0 - -
m48-m49 1 1 0 0 0 -
m48-m50 1 1 0 0 - 0 2 m48-m49-m52-m53 1 1 0- 0-
m48-m52 1 1 0 - 0 0 m48-m52-m49-m53 1 1 0- 0-
m35-m43 1 0 - 0 1 1 m24-m26 0 1 1 0 - 0
m35-m51 1 - 0 0 1 1
m40-m42 1 0 1 0 - 0
m41-m43 1 0 1 0 - 1
m42-m43 1 0 1 0 1 - m40-m44 1 0 1 - 0 0
3
m49-m51 1 1 0 0 - 1 m48-m50 1 1 0 0 - 0
m49-m53 1 1 0 - 0 1 m35-m51 1 - 0 0 1 1
m50-m51 1 1 0 0 1 - 4
m49-m51 1 1 0 0 - 1
m52-m53 1 1 0 1 0 -
THREE-bit GreaterThan Table 4
Group minterm Binary m16 m17 m24 m25 m26 m32 m33 m34 m35 m40 m41 m42 m43 m44 m48 m49 m50 m51 m52 m53
m16-m17-m24-m25 0 1 - 0 0 - X X X X
m16-m17-m48-m49 - 1 0 0 0 - X X X X
m16-m24-m17-m25 0 1 - 0 0 - X X X X
m32-m33-m34-m35 1 0 0 0 - - X X X X
1 m32-m33-m40-m41 1 0 - 0 0 - X X X X
m32-m33-m48-m49 1 - 0 0 0 - X X X X
m32-m40-m34-m42 1 0 - 0 - 0 X X X X
m32-m24 1 0 0 0 - 0 X X
m32-m48 1 - 0 0 0 0 X X
m24-m26 0 1 1 0 - 0 X X
m34-m35-m42-m43 1 0 - 0 1 - X X X X
m34-m35-m50-m51 1 - 0 0 1 - X X X X
m34-m42-m35-m43 1 0 - 0 1 - X X X X
m40-m42-m41-m43 1 0 1 0 - - X X X X
2 m48-m49-m52-m53 1 1 0- 0 - X X X X
m48-m52-m49-m53 1 1 0- 0 - X X X X
m24-m26 0 1 1 0 - 0 X X
m40-m42 1 0 1 0 - 0 X X
m40-m44 1 0 1 - 0 0 X X
m48-m50 1 1 0 0 - 0 X X
m35-m51 1 - 0 0 1 1 X X
4
m49-m51 1 1 0 0 - 1 X X
𝑓 = 𝑥2 𝑥1 𝑥0 𝑦1 𝑥0 +
THREE-bit GreaterThan Table 4
Group minterm Binary m16 m17 m24 m25 m26 m32 m33 m34 m35 m40 m41 m42 m43 m44 m48 m49 m50 m51 m52 m53
m16-m17-m24-m25 0 1 - 0 0 - X X X X
m16-m17-m48-m49 - 1 0 0 0 - X X X X
m16-m24-m17-m25 0 1 - 0 0 - X X X X
m32-m33-m34-m35 1 0 0 0 - - X X X X
1 m32-m33-m40-m41 1 0 - 0 0 - X X X X
m32-m33-m48-m49 1 - 0 0 0 - X X X X
m32-m40-m34-m42 1 0 - 0 - 0 X X X X
m32-m24 1 0 0 0 - 0 X X
m32-m48 1 - 0 0 0 0 X X
m24-m26 0 1 1 0 - 0 X X
m34-m35-m42-m43 1 0 - 0 1 - X X X X
m34-m35-m50-m51 1 - 0 0 1 - X X X X
m34-m42-m35-m43 1 0 - 0 1 - X X X X
m40-m42-m41-m43 1 0 1 0 - - X X X X
2 m48-m49-m52-m53 1 1 0- 0 - X X X X
m48-m52-m49-m53 1 1 0- 0 - X X X X
m24-m26 0 1 1 0 - 0 X X
m40-m42 1 0 1 0 - 0 X X
m40-m44 1 0 1 - 0 0 X X
m48-m50 1 1 0 0 - 0 X X
m35-m51 1 - 0 0 1 1 X X
4
m49-m51 1 1 0 0 - 1 X X
𝑓 = 𝑥2 𝑥1 𝑥0 𝑦1 𝑥0 + 𝑥2 𝑥1 𝑦2 𝑦1
THREE-bit GreaterThan Table 4
Group minterm Binary m16 m17 m24 m25 m26 m32 m33 m34 m35 m40 m41 m42 m43 m44 m48 m49 m50 m51 m52 m53
m16-m17-m24-m25 0 1 - 0 0 - X X X X
m16-m17-m48-m49 - 1 0 0 0 - X X X X
m16-m24-m17-m25 0 1 - 0 0 - X X X X
m32-m33-m34-m35 1 0 0 0 - - X X X X
1 m32-m33-m40-m41 1 0 - 0 0 - X X X X
m32-m33-m48-m49 1 - 0 0 0 - X X X X
m32-m40-m34-m42 1 0 - 0 - 0 X X X X
m32-m24 1 0 0 0 - 0 X X
m32-m48 1 - 0 0 0 0 X X
m24-m26 0 1 1 0 - 0 X X
m34-m35-m42-m43 1 0 - 0 1 - X X X X
m34-m35-m50-m51 1 - 0 0 1 - X X X X
m34-m42-m35-m43 1 0 - 0 1 - X X X X
m40-m42-m41-m43 1 0 1 0 - - X X X X
2 m48-m49-m52-m53 1 1 0- 0 - X X X X
m48-m52-m49-m53 1 1 0- 0 - X X X X
m24-m26 0 1 1 0 - 0 X X
m40-m42 1 0 1 0 - 0 X X
m40-m44 1 0 1 - 0 0 X X
m48-m50 1 1 0 0 - 0 X X
m35-m51 1 - 0 0 1 1 X X
4
m49-m51 1 1 0 0 - 1 X X
𝑓 = 𝑥2 𝑥1 𝑥0 𝑦1 𝑥0 + 𝑥2 𝑥1 𝑦2 𝑦1 + 𝑥2 𝑥1 𝑥0 𝑦2
THREE-bit GreaterThan Table 4
Group minterm Binary m16 m17 m24 m25 m26 m32 m33 m34 m35 m40 m41 m42 m43 m44 m48 m49 m50 m51 m52 m53
m16-m17-m24-m25 0 1 - 0 0 - X X X X
m16-m17-m48-m49 - 1 0 0 0 - X X X X
m16-m24-m17-m25 0 1 - 0 0 - X X X X
m32-m33-m34-m35 1 0 0 0 - - X X X X
1 m32-m33-m40-m41 1 0 - 0 0 - X X X X
m32-m33-m48-m49 1 - 0 0 0 - X X X X
m32-m40-m34-m42 1 0 - 0 - 0 X X X X
m32-m24 1 0 0 0 - 0 X X
m32-m48 1 - 0 0 0 0 X X
m24-m26 0 1 1 0 - 0 X X
m34-m35-m42-m43 1 0 - 0 1 - X X X X
m34-m35-m50-m51 1 - 0 0 1 - X X X X
m34-m42-m35-m43 1 0 - 0 1 - X X X X
m40-m42-m41-m43 1 0 1 0 - - X X X X
2 m48-m49-m52-m53 1 1 0- 0 - X X X X
m48-m52-m49-m53 1 1 0- 0 - X X X X
m24-m26 0 1 1 0 - 0 X X
m40-m42 1 0 1 0 - 0 X X
m40-m44 1 0 1 - 0 0 X X
m48-m50 1 1 0 0 - 0 X X
m35-m51 1 - 0 0 1 1 X X
4
m49-m51 1 1 0 0 - 1 X X
𝑓 = 𝑥2 𝑥1 𝑥0 𝑦1 𝑥0 + 𝑥2 𝑥1 𝑦2 𝑦1 + 𝑥2 𝑥1 𝑥0 𝑦2 + 𝑥2 𝑥1 𝑥0 𝑦1
GreaterThan – LessThan Comparator
• To determine whether one binary number is greater than another, the
most significant bits (MSBs) are tested first:
• If they were not equal, the number with an MSB of 1 is the larger number.
• If the MSBs are equal, the next bit positions are tested using the same
process.
• The complement of the process is used to determine whether one
binary number is less than another.
GreaterThan – LessThan Comparator
• To determine whether one binary number is greater than another, the
most significant bits (MSBs) are tested first:
• If they were not equal, the number with an MSB of 1 is the larger number.
• If the MSBs are equal, the next bit positions are tested using the same
process.
• The complement of the process is used to determine whether one
binary number is less than another.
GreaterThan – LessThan Comparator
Lg
Ls
2-bit Lg-Ls Comparator
Lg
Ls
N-bit Equality
N-bit Generic Comparator VHDL Code