Mod 10 Up Counter
Mod 10 Up Counter
Mod 10 Up Counter
ANNE’S
COLLEGE OF ENGINEERING AND TECHNOLOGY
(Approved by AICTE, New Delhi. Affiliated to Anna University, Chennai)
(An ISO 9001: 2015 Certified Institution)
ANGUCHETTYPALAYAM, PANRUTI – 607 106.
DEPARTMENT OF
COMPUTER SCIENCE AND ENGINEERING
LAB MANUAL
2. Design and implementation of combinational circuits using basic gates for arbitrary
functions, code converters.
Staff
Ex.No. Date Title Marks
Sign.
VERIFICATION OF BOOLEAN
1b THEOREMS USING DIGITAL
LOGIC GATES
2 CODE CONVERTOR
4c MAGNITUDE COMPARATOR
MULTIPLEXER AND
4d
DEMULTIPLEXER
5 SHIFT REGISTER
SYNCHRONOUS AND
6
ASYNCHRONOUS COUNTER
COMBINATIONAL AND
8
SEQUENTIAL CIRCUITS
Ex.No.-1a STUDY OF LOGIC GATES
AIM:
To study about logic gates and verify their truth tables.
APPARATUS REQUIRED:
THEORY:
Circuit that takes the logical decision and the process are called logic gates.
Each gate has one or more input and only one output.
OR, AND and NOT are basic gates. NAND, NOR and X-OR are known as
universal gates. Basic gates form these gates.
AND GATE:
The AND gate performs a logical multiplication commonly known as AND
function. The output is high when both the inputs are high. The output is low level
when any one of the inputs is low.
OR GATE:
The OR gate performs a logical addition commonly known as OR function.
The output is high when any one of the inputs is high. The output is low level when
both the inputs are low.
NOT GATE:
The NOT gate is called an inverter. The output is high when the input is low.
The output is low when the input is high.
AND GATE:
The NAND gate is a contraction of AND-NOT. The output is high when both
inputs are low and any one of the input is low .The output is low level when both
inputs are high.
NOR GATE:
The NOR gate is a contraction of OR-NOT. The output is high when both
inputs are low. The output is low when one or both inputs are high.
X- OR GATE:
The output is high when any one of the inputs is high. The output is low
when both the inputs are low and both the inputs are high.
PROCEDURE:
(i) Connections are given as per circuit diagram.
(ii) Logical inputs are given as per circuit diagram.
(iii) Observe the output and verify the truth table.
AND GATE
OR GATE
NOT GATE
EX-OR GATE
Viva-voce
1. List out the basic gate.
2. Mention the universal gate.
3. What are the applications of gates?
4. Write the truth table of AND gate.
5. Write the truth table of OR gate.
6. Write the truth table of NOT gate.
7. Write the truth table of NAND gate.
8. Write the truth table of NOR gate.
9. Write the truth table of EX- OR gate.
RESULT:
The logic gates are studied and its truth tables are verified.
Ex.No.-1b VERIFICATION OF BOOLEAN
THEOREMS USING DIGITAL LOGIC GATES
AIM:
To verify the Boolean Theorems using logic gates.
APPARATUS REQUIRED:
THEORY:
1. Commutative Law
The binary operator OR, AND is said to be commutative if,
1. A+B = B+A
2. A.B=B.A
2. Associative Law
The binary operator OR, AND is said to be associative if,
1. A+(B+C) = (A+B)+C
2. A.(B.C) = (A.B).C
3. Distributive Law
The binary operator OR, AND is said to be distributive if,
1. A+(B.C) = (A+B).(A+C)
2. A.(B+C) = (A.B)+(A.C)
4. Absorption Law
1. A+AB = A
2. A+AB = A+B
6. Idempotent Law
1. A+A = A
2. A.A = A
7. Complementary Law
1. A+A' = 1
2. A.A' = 0
8. De Morgan’s Theorem
1. The complement of the sum is equal to the sum of the product of the individual
complements.
(A+B)’ = (A)’. (B)’
2. The complement of the product is equal to the sum of the individual complements.
(A.B)’ = (A)’+ (B)’
Demorgan’s Theorem
a) Proof of equation (1):
Construct the two circuits corresponding to the functions A’. B’ and (A+B)’
respectively. Show that for all combinations of A and B, the two circuits give identical
results. Connect these circuits and verify their operations.
b) Proof of equation (2)
Construct two circuits corresponding to the functions A’+B’ and (A.B)’ A.B,
respectively. Show that, for all combinations of A and B, the two circuits give identical
results. Connect these circuits and verify their operations.
We will also use the following set of postulates:
P1: Boolean algebra is closed under the AND, OR, and NOT operations.
P2: The identity element with respect to • is one and + is zero. There is no identity
element with respect to logical NOT.
P3: The • and + operators are commutative.
P4: • and + are distributive with respect to one another. That is,
A • (B + C) = (A • B) + (A • C) and A + (B • C) = (A + B) • (A + C).
P5: For every value A there exists a value A’ such that A•A’ = 0 and A+A’ = 1.
This value is the logical complement (or NOT) of A.
P6: • and + are both associative. That is, (A•B)•C = A•(B•C) and (A+B)+C = A+(B+C).
You can prove all other theorems in boolean algebra using these postulates.
PROCEDURE:
VIVA-VOCE
RESULT:
Thus the above stated Boolean laws are verified.
13
Ex.No.-2 CODE CONVERTOR
AIM:
To design and implement 4-bit
(i) Binary to gray code converter
(ii) Gray to binary code converter
(iii) BCD to excess-3 code converter
(iv) Excess-3 to BCD code converter
APPARATUS REQUIRED:
SL.NO. COMPONENT SPECIFICATION QTY.
1. X-OR GATE IC 7486 1
2. AND GATE IC 7408 1
3. OR GATE IC 7432 1
4. NOT GATE IC 7404 1
5. IC TRAINER KIT - 1
6. PATCH CORDS - 35
THEORY:
The availability of large variety of codes for the same discrete elements of
information results in the use of different codes by different systems. A conversion circuit
must be inserted between the two systems if each uses different codes for same
information. Thus, code converter is a circuit that makes the two systems compatible even
though each uses different binary code.
The bit combination assigned to binary code to gray code. Since each code uses
four bits to represent a decimal digit. There are four inputs and four outputs. Gray code is a
non-weighted code.
The input variable are designated as B3, B2, B1, B0 and the output variables are
designated as C3, C2, C1, Co. from the truth table, combinational circuit is designed. The
Boolean functions are obtained from K-Map for each output variable.
A code converter is a circuit that makes the two systems compatible even though
each uses a different binary code. To convert from binary code to Excess-3 code, the input
lines must supply the bit combination of elements as specified by code and the output lines
generate the corresponding bit combination of code. Each one of the four maps represents
one of the four outputs of the circuit as a function of the four input variables.
14
A two-level logic diagram may be obtained directly from the Boolean expressions
derived by the maps. These are various other possibilities for a logic diagram that
implements this circuit. Now the OR gate whose output is C+D has been used to
implement partially each of three outputs.
TRUTH TABLE:
K-Map for G3
G3 = B3
15
K-Map for G2
K-Map for G1
K-Map for G0
16
LOGIC DIAGRAM:
TRUTH TABLE:
17
K-Map for B3:
B3 = G3
18
K-Map for B0:
LOGIC DIAGRAM:
19
TRUTH TABLE: BCD TO EXCESS-3 CONVERTOR
B3 B2 B1 B0 G3 G2 G1 G0
0 0 0 0 0 0 1 1
0 0 0 1 0 1 0 0
0 0 1 0 0 1 0 1
0 0 1 1 0 1 1 0
0 1 0 0 0 1 1 1
0 1 0 1 1 0 0 0
0 1 1 0 1 0 0 1
0 1 1 1 1 0 1 0
1 0 0 0 1 0 1 1
1 0 0 1 1 1 0 0
1 0 1 0 x x x x
1 0 1 1 x x x x
1 1 0 0 x x x x
1 1 0 1 x x x x
1 1 1 0 x x x x
1 1 1 1 x x x X
E3 = B3 + B2 (B0 + B1)
20
K-Map for E2:
21
EXCESS-3 TO BCD CONVERTOR
TRUTH TABLE:
B3 B2 B1 B0 G3 G2 G1 G0
0 0 1 1 0 0 0 0
0 1 0 0 0 0 0 1
0 1 0 1 0 0 1 0
0 1 1 0 0 0 1 1
0 1 1 1 0 1 0 0
1 0 0 0 0 1 0 1
1 0 0 1 0 1 1 0
1 0 1 0 0 1 1 1
1 0 1 1 1 0 0 0
1 1 0 0 1 0 0 1
LOGIC DIAGRAM:
22
EXCESS-3 TO BCD CONVERTOR
K-Map for A:
A = X1 X2 + X3 X4 X1
K-Map for B:
K-Map for C:
23
K-Map for D:
PROCEDURE:
24
VIVA VOCE
RESULT:
25
Ex.No.-3 ADDER AND SUBTRACTOR
AIM:
To design and construct half adder, full adder, half subtractor and full
subtractor circuits and verify the truth table using logic gates.
APPARATUS REQUIRED:
SL.NO. COMPONENT SPECIFICATION QTY.
1. AND GATE IC 7408 1
2. X-OR GATE IC 7486 1
3. NOT GATE IC 7404 1
4. OR GATE IC 7432 1
5. IC TRAINER KIT - 1
6. PATCH CORDS - 23
THEORY:
HALF ADDER:
A half adder has two inputs for the two bits to be added and two outputs one from
the sum ‘ S’ and other from the carry ‘ c’ into the higher adder position. Above circuit is
called as a carry signal from the addition of the less significant bits sum from the X-OR
Gate the carry out from the AND gate.
FULL ADDER:
A full adder is a combinational circuit that forms the arithmetic sum of input; it
consists of three inputs and two outputs. A full adder is useful to add three bits at a time but
a half adder cannot do so. In full adder sum output will be taken from X-OR Gate, carry
output will be taken from OR Gate.
HALF SUBTRACTOR:
The half subtractor is constructed using X-OR and AND Gate. The half subtractor
has two input and two outputs. The outputs are difference and borrow. The difference can
be applied using X-OR Gate, borrow output can be implemented using an AND Gate and
an inverter.
FULL SUBTRACTOR:
The full subtractor is a combination of X-OR, AND, OR, NOT Gates. In a full
subtractor the logic circuit should have three inputs and two outputs. The two half
subtractor put together gives a full subtractor .The first half subtractor will be C and A B.
The output will be difference output of full subtractor. The expression AB assembles the
borrow output of the half subtractor and the second term is the inverted difference output
of first X-OR.
26
HALF ADDER
TRUTH TABLE:
A B CARRY SUM
0 0 0 0
0 1 0 1
1 0 0 1
1 1 1 0
1
1
LOGIC DIAGRAM:
27
FULL ADDER
TRUTH TABLE:
A B C CARRY SUM
0 0 0 0 0
0 0 1 0 1
0 1 0 0 1
0 1 1 1 0
1 0 0 0 1
1 0 1 1 0
1 1 0 1 0
1 1 1 1 1
1 1
1 1
CARRY = AB + BC + AC
28
LOGIC DIAGRAM:
HALF SUBTRACTOR
TRUTH TABLE:
A B BORROW DIFFERENCE
0 0 0 0
0 1 1 1
1 0 0 1
1 1 0 0
BORROW = A’B
29
LOGIC DIAGRAM
FULL SUBTRACTOR
TRUTH TABLE:
A B C BORROW DIFFERENCE
0 0 0 0 0
0 0 1 1 1
0 1 0 1 1
0 1 1 1 0
1 0 0 0 1
1 0 1 0 0
1 1 0 0 0
1 1 1 1 1
1 1
1 1
30
Borrow = A’B + BC + A’C
LOGIC DIAGRAM:
PROCEEDURE:
31
VIVA VOCE
RESULT:
Thus, the half adder, full adder, half subtractor and full subtractor
circuits are designed, constructed and verified the truth table using logic gates.
32
Ex.No.-4a 4-BIT ADDER AND SUBTRACTOR
AIM:
To design and implement 4-bit adder and subtractor using basic gates and MSI
device IC 7483.
APPARATUS REQUIRED:
THEORY:
32
ABCD adder that adds 2 BCD digits and produce a sum digit in BCD. The 2
decimal digits, together with the input carry, are first added in the top 4 bit adder to
produce the binary sum.
LOGIC DIAGRAM:
33
4-BIT BINARY SUBTRACTOR
LOGIC DIAGRAM:
LOGIC DIAGRAM:
34
TRUTH TABLE:
PROCEDURE:
VIVA VOCE
1. What is adder?
2. List out the application of adders.
3. Draw the full adder using two half adder circuits.
4. What is combinational circuit?
5. What is different between combinational and sequential circuit?
6. What are the gates involved for binary adder?
7. List the properties of Ex-Nor gate?
8. What is expression for sum and carry?
9. What do you understand by parallel adder?
RESULT:
Thus the 4-bit adder and subtractor using basic gates and MSI device IC 7483 is
designed and implemented.
35
Ex.No.-4b PARITY GENERATOR AND CHECKER
AIM:
To design and verify the truth table of a three bit Odd Parity generator and checker.
APPARATUS REQUIRED:
THEORY:
A parity bit is used for the purpose of detecting errors during transmission of binary
information. A parity bit is an extra bit included with a binary message to make the number
of 1’s either odd or even. The message including the parity bit is transmitted and then
checked at the receiving end for errors. An error is detected if the checked parity does not
correspond with the one transmitted. The circuit that generates the parity bit in the
transmitter is called a parity generator and the circuit that checks the parity in the receiver
is called a parity checker.
In even parity the added parity bit will make the total number of 1’s an even
amount and in odd parity the added parity bit will make the total number of 1’s an odd
amount.
In a three bit odd parity generator the three bits in the message together with the
parity bit are transmitted to their destination, where they are applied to the parity checker
circuit. The parity checker circuit checks for possible errors in the transmission.
Since the information was transmitted with odd parity the four bits received must
have an odd number of 1’s. An error occurs during the transmission if the four bits
received have an even number of 1’s, indicating that one bit has changed during
transmission. The output of the parity checker is denoted by PEC (parity error check) and
it will be equal to 1 if an error occurs, i.e., if the four bits received has an even number of
1’s.
36
ODD PARITY GENERATOR
TRUTH TABLE:
INPUT OUTPUT
A B C P
1. 0 0 0 1
2. 0 0 1 0
3. 0 1 0 0
4. 0 1 1 1
5. 1 0 0 0
6. 1 0 1 1
7. 1 1 0 1
8. 1 1 1 0
From the truth table the expression for the output parity bit is,
P( A, B, C) = Σ (0, 3, 5, 6)
Also written as,
P = A’B’C’ + A’BC + AB’C + ABC’ = (A B C) ‘
ODD PARITY GENERATOR
CIRCUIT DIAGRAM:
CIRCUIT DIAGRAM:
37
ODD PARITY CHECKER
TRUTH TABLE:
INPUT OUTPUT
SL.NO.
( 4 - Bit Message Received ) (Parity Error Check)
A B C P X
1. 0 0 0 0 1
2. 0 0 0 1 0
3. 0 0 1 0 0
4. 0 0 1 1 1
5. 0 1 0 0 0
6. 0 1 0 1 1
7. 0 1 1 0 1
8. 0 1 1 1 0
9. 1 0 0 0 0
10. 1 0 0 1 1
11. 1 0 1 0 1
12. 1 0 1 1 0
13. 1 1 0 0 1
14. 1 1 0 1 0
15. 1 1 1 0 0
16. 1 1 1 1 1
From the truth table the expression for the output parity checker bit is,
X (A, B, C, P) = Σ (0, 3, 5, 6, 9, 10, 12, 15)
The above expression is reduced as,
X = (A B C P)
PROCEDURE:
1. Connections are given as per the circuit diagrams.
th th
2. For all the ICs 7 pin is grounded and 14 pin is given +5 V supply.
3. Apply the inputs and verify the truth table for the Parity generator and checker.
38
FUNCTION TABLE:
INPUTS OUTPUTS
Number of High Data PE PO ∑E ∑O
Inputs (I0 – I7)
EVEN 1 0 1 0
ODD 1 0 0 1
EVEN 0 1 0 1
ODD 0 1 1 0
X 1 1 0 0
X 0 0 1 1
LOGIC DIAGRAM:
TRUTH TABLE:
I7 I6 I5 I4 I3 I2 I1 I0 I7 I6 I5 I4 I3 I2 I1 I0 Active ∑E ∑O
1 1 0 0 0 0 0 0 11 0 0 0 0 00 1 1 0
1 1 0 0 0 0 0 0 11 0 0 0 0 00 0 0 1
1 1 0 0 0 0 0 0 01 0 0 0 0 00 0 1 0
39
16 BIT ODD/EVEN PARITY CHECKER
LOGIC DIAGRAM
TRUTH TABLE:
00 0 0 0 0 0 1 00 0 0 0 0 00 1 1 0
0 0 0 0 0 1 1 0 00 0 0 0 1 10 0 1 0
0 0 0 0 0 1 1 0 00 0 0 0 1 10 1 0 1
VIVA VOCE
RESULT:
Thus the three bit and 16 bit odd Parity generator and checker circuits were
designed, implemented and their truth tables were verified.
40
Ex.No.-4c MAGNITUDE COMPARATOR
AIM:
APPARATUS REQUIRED:
THEORY:
A = A3 A2 A1 A0
B = B3 B2 B1 B0
This indicates A greater than B, then inspect the relative magnitude of pairs of
significant digits starting from most significant position. A is 0 and that of B is 0.
41
The same circuit can be used to compare the relative magnitude of two BCD
digits. Where, A = B is expanded as,
x3 x2 x1 x0
LOGIC DIAGRAM:
TRUTH TABLE:
42
PROCEDURE:
(i) Connections are given as per circuit diagram.
(ii) Logical inputs are given as per circuit diagram.
(iii) Observe the output and verify the truth table.
VIVO VOCE
1. What is magnitude comparator?
2. What is most significant bit?
3. Explain the k-map simplification of A>B.
4. Explain the k-map simplification of A=B.
5. Explain the k-map simplification of A<B
6. Draw the logic diagram of 1-bit magnitude comparator.
7. What is the truth table of 1-bit magnitude comparator?
8. What is the use of magnitude comparator?
9. What is least significant bit?
RESULT:
Thus the magnitude comparator using MSI device is designed and implemented.
43
Ex.No.-4d MULTIPLEXER AND DEMULTIPLEXER
AIM:
APPARATUS REQUIRED:
THEORY:
MULTIPLEXER:
Multiplexer means transmitting a large number of information units over a smaller
number of channels or lines. A digital multiplexer is a combinational circuit that selects
binary information from one of many input lines and directs it to a single output line. The
selection of a particular input line is controlled by a set of selection lines. Normally there
n
are 2 input line and n selection lines whose bit combination determine which input is
Selected.
DEMULTIPLEXER:
The function of Demultiplexer is in contrast to multiplexer function. It takes
information from one line and distributes it to a given number of output lines. For this
reason, the Demultiplexer is also known as a data distributor. Decoder can also be used as
Demultiplexer.
In the 1: 4 Demultiplexer circuit, the data input line goes to all of the AND gates.
The data select lines enable only one gate at a time and the data on the data input line will
pass through the selected gate to the associated data output line.
44
4:1 MULTIPLEXER
FUNCTION TABLE:
S1 S0 INPUTS Y
0 0 D0 → D0 S1’ S0’
0 1 D1 → D1 S1’ S0
1 0 D2 → D2 S1 S0’
1 1 D3 → D3 S1 S0
TRUTH TABLE:
S1 S0 Y = OUTPUT
0 0 D0
0 1 D1
1 0 D2
1 1 D3
45
CIRCUIT DIAGRAM FOR MULTIPLEXER:
1:4 DEMULTIPLEXER
FUNCTION TABLE:
S1 S0 INPUT
0 0 X → D0 = X S1’ S0’
0 1 X → D1 = X S1’ S0
1 0 X → D2 = X S1 S0’
1 1 X → D3 = X S1 S0
46
TRUTH TABLE:
INPUT OUTPUT
S1 S0 I/P D0 D1 D2 D3
0 0 0 0 0 0 0
0 0 1 1 0 0 0
0 1 0 0 0 0 0
0 1 1 0 1 0 0
1 0 0 0 0 0 0
1 0 1 0 0 1 0
1 1 0 0 0 0 0
1 1 1 0 0 0 1
47
PIN DIAGRAM FOR IC 74150:
PROCEDURE:
48
VIVA VOCE
1. What is de multiplexer?
2. What is the main difference between decoder and De multiplexer?
3. What do you understand by decoder?
4. What do you understand by encoder?
5. What is the main difference between encoder and multiplexer?
6. Why is MUX called as “Data Selector”?
7. What is Digital Multiplexer?
8. Differentiate between functions of MUX & D’MUX?
RESULT:
Thus the multiplexer and Demultiplexer using logic gates are designed
and implemented.
49
Ex.No.-5 SHIFT REGISTER
AIM:
APPARATUS REQUIRED:
2. OR GATE IC 7432 1
3. IC TRAINER KIT - 1
4. PATCH CORDS - 35
THEORY:
A register is capable of shifting its binary information in one or both directions is
known as shift register. The logical configuration of shift register consist of a D-Flip flop
cascaded with output of one flip flop connected to input of next flip flop. All flip flops
receive common clock pulses which causes the shift in the output of the flip flop. The
simplest possible shift register is one that uses only flip flop. The output of a given flip flop
is connected to the input of next flip flop of the register. Each clock pulse shifts the content
of register one bit position to right.
49
SERIAL IN SERIAL OUT
LOGIC DIAGRAM:
TRUTH TABLE:
LOGIC DIAGRAM:
50
TRUTH TABLE:
OUTPUT
CLK DATA QA QB QC QD
1 1 1 0 0 0
2 0 0 1 0 0
3 0 0 0 1 1
4 1 1 0 0 1
LOGIC DIAGRAM:
TRUTH TABLE:
CLK Q3 Q2 Q1 Q0 O/P
0 1 0 0 1 1
1 0 0 0 0 0
2 0 0 0 0 0
3 0 0 0 0 1
51
PARALLEL IN PARALLEL OUT
LOGIC DIAGRAM:
TRUTH TABLE:
1 1 0 0 1 1 0 0 1
2 1 0 1 0 1 0 1 0
PROCEDURE:
(i) Connections are given as per circuit diagram.
(ii) Logical inputs are given as per circuit diagram.
(iii) Observe the output and verify the truth table.
VIVA VOCE
RESULT:
The Serial in serial out, Serial in parallel out, Parallel in serial out and
Parallel in parallel out shift registers are designed and implemented.
52
Ex.No.-6 SYNCHRONOUS AND ASYNCHRONOUS COUNTER
AIM:
APPARATUS REQUIRED:
THEORY:
Asynchronous decade counter is also called as ripple counter. In a ripple counter
the flip flop output transition serves as a source for triggering other flip flops. In other
words the clock pulse inputs of all the flip flops are triggered not by the incoming pulses
but rather by the transition that occurs in other flip flops. The term asynchronous refers to
the events that do not occur at the same time. With respect to the counter operation,
asynchronous means that the flip flop within the counter are not made to change states at
exactly the same time, they do not because the clock pulses are not connected directly to
the clock input of each flip flop in the counter.
53
PIN DIAGRAM FOR IC 7476:
CIRCUIT DIAGRAM:
TRUTH TABLE:
54
LOGIC DIAGRAM FOR MOD - 10 RIPPLE COUNTER:
TRUTH TABLE:
CLK QD QC QB QA
0 0 0 0 0
1 0 0 0 1
2 0 0 1 0
3 0 0 1 1
4 0 1 0 0
5 0 1 0 1
6 0 1 1 0
7 0 1 1 1
8 1 0 0 0
9 1 0 0 1
10 0 0 0 0
55
PIN DIAGRAM:
SYNCHRONOUS COUNTER
LOGIC DIAGRAM:
TRUTH TABLE:
OUTPUT
CLK DATA
QD QC QB QA
1 1 0 0 0 1
2 0 0 0 1 0
3 0 0 0 1 1
4 1 0 1 0 0
56
PROCEDURE:
LOGIC DIAGRAM
TRUTH TABLE:
clk QA QB QC QD
0 0 0 0 0
1 0 0 0 1
2 0 0 1 0
3 0 0 1 1
4 0 1 0 0
5 0 1 0 1
6 0 1 1 0
7 0 1 1 1
8 1 0 0 0
9 1 0 0 1
10 0 0 0 0
APPARATUS REQUIRED:
K- MAP
STATE DIAGRAM
58
LOGIC DIAGRAM
TRUTH TABLE
59
VIVA VOCE
RESULT:
60
Ex.No.- 7 IMPLEMENTATION OF BASIC LOGIC GATES
AIM:
To implement all the basic logic gates using Verilog and VHDL simulator.
61
VERILOG CODE
NOT GATE
module not12(a,g);
input a;
output g;
assign g = ~a;
endmodule
AND GATE
VERILOG CODE:
module and12(a,b,c);
input a;
input b;
output c;
assign c = a & b;
endmodule
62
OUTPUT WAVEFORM:
OR GATE
VERILOG CODE:
module or12(a,b,d);
input a;
input b;
output d;
assign d = a | b;
endmodule
OUTPUT WAVEFORM:
NOT GATE
VERILOG CODE:
module not12(a,g);
input a;
output g;
assign g = ~a;
endmodule
OUTPUT WAVEFORM:
63
EX-OR GATE
VERILOG CODE:
module xor12(a,b,h);
input a;
input b;
output h;
assign h = a^ b;
endmodule
VHDL CODE:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity xor_gate is
port (a,b : in std_logic ;
c : out std_logic);
end xor_gate;
architecture Behavioral o f xor_gate is
begin
c <= a xor b;
end Behavioral;
OUTPUT WAVEFORM:
RESULT:
Thus all the basic logic gates are implemented and verified using Verilog and VHDL
simulator.
64
Ex.No.-8 COMBINATIONAL AND SEQUENTIAL CIRCUITS
AIM:
HALF ADDER
Truth Table
Input Output
A B S(Sum) C(Carry)
0 0 0 0
0 1 1 0
1 0 1 0
1 1 1 1
Equations
S (Sum) =A^B
C (Carry) =AB
Verilog Code:
Output:
65
VHDL CODE
library IEEE;
use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL; entity halfadder is
port(
a : in std_logic; b : in std_logic;
sum : out std_logic; carry : out std_logic );
end halfadder;
architecture Behavioral of halfadder is begin
sum <= (a xor b); carry <= (a and b); end Behavioral;
Input:
a:1;
b :1;
Sum : 0
Carry : 1
Output:
Truth Table
Input Output
A B C SUM Cout
0 0 0 0 0
0 0 1 1 0
0 1 0 1 0
0 1 1 0 1
1 0 0 1 0
1 0 1 0 1
1 1 0 0 1
1 1 1 1 1
66
K- Map for sum K-map for Carry
H.ADDER SUM = A’B’C + A’BC’ + AB’C’ + ABC Cout = A’BC + AB’C + ABC’ +ABC
SUM= A^B^C Cout= (A^B)C+AB
Circuit Diagram:
Verilog Code:
module fadd(a,b,c,s,cout);
input a;
input b;
input c; output s;
output cout;
assign s = (a ^ b) ^ c;
assign cout = (a & b)|( b & c)|(c & a);
endmodule
Output :
67
VHDL Code:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity fulladder is
port(
a : in std_logic;
b : in std_logic;
cin : in std_logic;
sum : out std_logic;
carry : out std_logic
);
end fulladder;
architecture Behavioral of fulladder is
begin
sum <= (a xor b xor cin);
carry <= (a and b) or (b and cin) or (a and cin);
end Behavioral;
Output:
Verilog Code:
module hsub(a,b,d,bor);
Input a;
Input b;
output d;
output bor;
assign d=)a^b);
assign bor = (~a&~b);
end module
VHDL Code:
library IEEE;
68
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity halfsubtractor is
port(
a : in std_logic;
b : in std_logic;
dif : out std_logic;
bor : out std_logic
);
end halfsubtractor;
architecture Behavioral of halfsubtractor is
begin
dif <= a xor b;
bor <= ((not a) and b);
end Behavioral;
Output:
Verilog Code:
module sub(a,b,c,d,b out);
input a;
input b;
input c;
output d;
output bout;
assign d = (a ^ b) ^ c;
assign bout = (~a & b)|( b & c)|(c & ~a);
endmodule
Output:
69
VHDL Code:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity fullsubtractor is
port( a : in std_logic;
b : in std_logic;
cin : in std_logic;
dif : out std_logic;
bor : out std_logic );
end fullsubtractor;
architecture Behavioral of fullsubtractor is begin
dif <= a xor b xor cin;
bor <= (((not a) and b) or (( not a) and cin) or (b and cin));
end Behavioral;
INPUT:
a:0;
b :0;
Cin : 1
Difference : 1
Borrow : 1
Output:
(v) MULTIPLEXER
Verilog Code:
Module mux4to1(Y, I0, I1, I2, I3,
sel);
output Y;
input I0,I1,I2,I3;
input [1:0] sel;
reg Y;
always @ (sel or I0 or I1 or I2 or
70
I3) case (sel)
2'b00:Y=I0;
2'b01:Y=I1;
2'b10: Y=I2;
2'b11: Y=I3;
endcase
endmodule
Output:
VHDL Code:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL; entity mux is
port(
inp : in std_logic_vector(3 downto 0); sel : in std_logic_vector(1 downto 0); muxout
: out std_logic --mux output line );
end mux;
architecture Behavioral of mux is begin
process(inp,sel) begin
case sel is when "00" =>
muxout <= inp(0); -- mux O/P=1 I/P-- when "01" =>
muxout <= inp(1); -- mux O/P=2 I/P-- when "10" =>
muxout <= inp(2); -- mux O/P=3 I/P-- when "11" =>
muxout <= inp(3); -- mux O/P=4 I/P-- when others =>
end case; end process;
end Behavioral;
Truth Table:
71
(vi) DEMULTIPLEXER
Verilog Code:
module demux(S,D,Y);
Input [1:0] S;
Input D;
Output [3:0] Y; reg Y;
always @(S OR )
case({D,S})
3’b100: Y=4’b0001;
3’b101: Y=4’b0010;
3’b110: Y=4’b0100;
3’b111: Y=4’b1000;
default:Y=4’b0000;
endcase
endmodule
VHDL Code:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity demux is
port(
dmuxin : in std_logic;
sel : in std_logic_vector(1 downto 0);
oup : out std_logic_vector(3 downto 0)
);
end demux;
architecture Behavioral of demux is
begin
process(dmuxin,sel)
begin
case sel is
when "00" =>
oup(0) <= dmuxin; --1 dmux o/p = dmux i/p--
oup(1) <= '0';
oup(2) <= '0';
oup(3) <= '0';
when "01" =>
oup(0) <= '0';
oup(1) <= dmuxin; --2 dmux o/p = dmux i/p--
oup(2) <= '0';
oup(3) <= '0';
when "10" =>
72
oup(0) <= '0';
oup(1) <= '0';
oup(2) <= dmuxin; --3 dmux o/p = dmux i/p--
oup(3) <= '0';
when "11" =>
oup(0) <= '0';
oup(1) <= '0';
oup(2) <= '0';
oup(3) <= dmuxin; --4 dmux o/p = dmux i/p--
when others =>
end case;
end process;
end Behavioral;
Truth Table:
Output:
(vii) D FLIPFLOP
VHDL Code:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity dff is
73
port(
clk : in std_logic; --clock input
rst : in std_logic; --active low,synchronous reset
d : in std_logic; --d input
q,qbar : out std_logic --flip flop outputs ie,Qn+1 and its complement
);
end dff;
architecture Behavioral of dff is
begin
process(clk,rst)
begin
if rising_edge(clk) then
if (rst = '0') then --active low,synchronous reset
q <= '0';
qbar <= '1';
else
q <= d;
qbar <= not(d);
end if;
end if;
end process;
end Behavioral;
Output:
(viii) T FLIPFLOP
Verilog Code :
module tffeq(t,rst, clk,qp, qbar);
input t,rst, clk;
output qp, qbar; wire q;
reg qp;
always @ (posedge clk)
if (rst) qp=0;
else
qp = q ^ t;
assign qbar = ~ qp;
endmodule
75
(ix) JK FLIPFLOP
Verilog Code:
module jkff(jk,pst,clr,clk,qp,qbar);
input [1:0] jk;
input pst,clr,clk;
output qp,qbar;
reg qp;
wire q;
always @ (posedge clk) if (pst)
qp= 1;
else
begin
if (clr)
qp= 0;
else
begin
case (jk)
2'b00: qp=q;
2'b01 : qp = 1'b0;
2'b10 : qp =1'b1;
2'b11 : qp = ~q;
default qp =0;
endcase
end
end
assign qbar = ~q;
assign q = qp;
endmodule
Output:
module ripple(clkr,st,,t,A,B,C,D);
input clk,rst,t;
output A,B,C,D;
Tff T0(D,clk,rst,t);
Tff T1(C,clk,rst,t);
Tff T2(B,clk,rst,t);
76
Tff T3(A,clk,rst,t);
endmodule
module Tff(q,clk,rst,t);
input clk,rst,t;
output q;
reg q;
always @(posedge clk)
begin
if(rst)
q<=1’b0; else
if(t)
q<=~q;
end
endmodule
VHDL Code:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
---- Uncomment the following library declaration if instantiating
---- any Xilinx primitives in this code.
--library UNISIM;
--use UNISIM.VComponents.all;
entity counter is
Port ( rst : in STD_LOGIC;
clk : in STD_LOGIC;
led : out std_logic_vector(3 downto 0)
);
end counter;
architecture Behavioral of counter is
signal reg :std_logic_vector(3 downto 0);
begin
process(rst,clk)
begin
if rst = '1' then
reg <= "0000";
elsif rising_edge(clk) then
reg <= reg + 1;
end if;
end process;
led(3 downto 0) <= reg(3 downto 0);
end Behavioral;
77
Output:
Verilog Code:
UP Counter:
78
DOWN Counter:
Verilog code
module d_flip_flop ( din ,clk ,reset ,dout );
output dout ;
reg dout;
input din ;
input clk ;
input reset ;
always @ (posedge clk)
begin
if (reset)
dout <= 1;
else
dout <= din;
end
end module
VHDL Code
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
--library UNISIM;
--use UNISIM.VComponents.all;
entity hj is
port(
clk : in std_logic;
rst : in std_logic;
si: in std_logic;
so: out std_logic
);
end hj;
architecture Behavioral of hj is
signal temp : std_logic_vector(3 downto 0);
79
begin
process(clk,rst)
begin
if rising_edge(clk) then
if rst = '1' then
temp <= (others=>'0');
else
temp <= temp(2 downto 0) & si;
end if;
end if;
end process;
so <= temp(3);
end Behavioral;
Output:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
80
use IEEE.STD_LOGIC_UNSIGNED.ALL;
--library UNISIM;
--use UNISIM.VComponents.all;
entity hj is
port(
clk : in std_logic;
rst : in std_logic;
po: out std_logic_vector(3 downto 0);
pi: in std_logic_vector(3 downto 0)
);
end hj;
architecture Behavioral of hj is
signal temp : std_logic_vector(3 downto 0);
begin
process(clk,rst)
begin
if rising_edge(clk) then
if rst = '1' then
temp <= (others=>'0');
else
temp <= pi(3 downto 0);
end if;
end if;
end process;
po <= temp(3 downto 0);
end Behavioral;
Output:
RESULT:
Thus the sequential and combinational circuits are designed and implemented using
HDL simulator (Verilog and VHDL).
81