INTRODUCTION TO ELECTRONICS DIGITAL NOTES - Compressed
INTRODUCTION TO ELECTRONICS DIGITAL NOTES - Compressed
Digital electronics is a type of electronics that deals with the digital systems which
processes the data/information in the form of binary(0s and 1s) numbers, whereas analog
electronics deals with the analog systems which processes the data/information in the form of
continuous signals.
Continuous signals
A Continuous signal is function f(t), whose value is defined for all time 't'.
in other words
Continuous signal a varying quantity with respect to independent variable time.
Example: Figure 1.1(a) shows the continuous signal.
Digital signals
A digital signal is a quantized discrete time signals.
Example: Figure 1.1(b) shows the discrete and digital signals.
1. Positive logic
Logic 0 = False, 0V, Open Switch, OFF
Logic 1= True, +5V, Closed Switch, ON
2. Negative logic
Logic 0 = True, +5V, Closed Switch, ON
Logic 1= False, 0V, Open Switch, OFF
Boolean algebra differs from normal or elementary algebra. Latter deals with numerical
operations such as, addition, subtraction, multiplication and division on decimal numbers. And
former deals with the logical operations such as conjunction (OR), disjunction(AND) and
negation(NOT).
In present context, positive logic has been used for the entire discussion, representation
and simplification of Boolean variables.
1. Boolean variables takes only two values, logic 1 and logic 0, called binary numbers.
2. Basic operations of Boolean algebra are complement of a variable, ORing and ANDing of two
or more variables.
3. Mathematical description of Boolean operations using variables is called Boolean expression.
4. Complement of variable is represented by an over-bar (-).
Example: 𝑌 = 𝐴̅, Y is the output variable
5. ORing of variables is represented by a plus symbol (+)
Example:𝑌 = 𝐴 + 𝐵, Y is the output variable
6. ANDing of variables is represented by a dot symbol (.)
Example:𝑌 = 𝐴. 𝐵, Y is the output variable
7. Boolean operations are different from binary operations.
Example : 1+1=10 in Binary Addition
1+1=1 in Boolean algebra.
Table 1.1, shows the complement operation of a variable, table 1.2 summarized the OR operation
and table 1.3, summarized the AND operation of two variables.
A ̅
𝒀=𝑨
0 1
1 0
A B Y=A.B
0 0 0
0 1 0
1 0 0
1 1 1
The present chapter deals with the simplification of Boolean expressions and
representation using sum of product form and product of sum forms.
i. e. , A. B = B. A and A + B = B + A
𝐴. (𝐵 + 𝐶) = 𝐴. 𝐵 + 𝐴. 𝐶
𝐴 + 𝐵𝐶 = (𝐴 + 𝐵)(𝐴 + 𝐶)
Law-5: OR Laws
𝐴+0=𝐴
𝐴+1=1
𝐴+𝐴 = 𝐴
𝐴 + 𝐴̅ = 1
0̅ = 1
1̅ = 0
𝐴̅ = 𝐴
Law-7: Absorption Law
𝑨(𝑨 + 𝑩) = 𝑨
𝑨 + 𝑨𝑩 = 𝑨
𝑨+𝑨 ̅𝑩 = 𝑨 + 𝑩
A B C ̅̅̅̅̅̅̅̅̅̅̅̅̅
𝑨 +𝑩+𝑪 ̅. 𝑩
𝑨 ̅
̅. 𝑪
0 0 0 1 1
0 0 1 0 0
0 1 0 0 0
0 1 1 0 0
1 0 0 0 0
1 0 1 0 0
1 1 0 0 0
1 1 1 0 0
Table 1.4: De-Morgan's First Law
A B C ̅̅̅̅̅̅̅̅
𝑨. 𝑩. 𝑪 ̅+B
A ̅ + C̅
0 0 0 1 1
0 0 1 1 1
0 1 0 1 1
0 1 1 1 1
1 0 0 1 1
1 0 1 1 1
1 1 0 1 1
1 1 1 0 0
Table 1.5: De-Morgan's Second Law
Boolean expressions must be simplified and evaluated using the order of operator precedence
shown in table 1.6
Operator Precedence
Parenthesis 1
NOT 2
AND 3
OR 4
Table 1.6: Operator precedence
Example:
𝒀 = (𝑨 (𝑪 +𝑩 ̅ 𝑫) + ̅̅̅̅̅
̅̅̅̅̅̅̅̅̅̅̅
⏟ 𝑩 ̅) 𝑬
𝑪
⏟ ̅
⏟ ⏟ ⏟
⏟
⏟⏟
1.2.3. Simplify the following expressions
1. 𝐘 = 𝐁𝐂 + 𝐁𝐂̅ + 𝐁𝐀
solution:
Y = BC + BC̅ + BA
Y = B(C + C̅) + BA
Y = B + BA (∵ C + C̅ = 1)
Y = B(1 + A) (∵ 1 + A = 1)
Y = B. 1
𝐘=𝐁
2. 𝐘 = 𝐀 + 𝐀̅𝐁 + 𝐀
̅𝐁̅𝐂 + 𝐀 ̅𝐁̅ 𝐂̅𝐃 + 𝐀 ̅ 𝐂̅𝐃
̅𝐁 ̅𝐄
Solution:
Y =A+A ̅B + A̅B
̅C + A ̅B
̅C̅D + A ̅B̅C̅D̅E
Y =A+A ̅ (B + B
̅C + B̅C̅D + B̅C̅D ̅ E)
̅C + B
Y = A + (B + B ̅C̅D + B ̅C̅D̅ E) ̅ B = A + B)
(∵ A + A
̅ ̅ ̅
Y = A + (B + B(C + CD + CDE))̅ ̅ B = A + B)
(∵ A + A
̅ ̅ ̅
Y = A + (B + (C + CD + CDE)) ̅
(∵ A + AB = A + B)
̅ ̅
Y = A + (B + (C + C(D + DE))) ̅ B = A + B)
(∵ A + A
Y = A + (B + (C + (D + D ̅ E))) ̅ B = A + B)
(∵ A + A
𝐘 = 𝐀+𝐁+𝐂+𝐃+𝐄
3. 𝐘 = 𝐂 + ̅̅̅̅
𝐁𝐂
Solution:
Y = C+B ̅ + C̅
Y = (C + C̅) + B̅
Y=1+B ̅
𝐘=𝟏
4. 𝐘 = ̅̅̅̅
𝐀𝐁(𝐀 ̅ + 𝐁)(𝐁
̅ + 𝐁)
Solution:
Y = (A̅+B ̅ + B)(1)
̅)(A
Y=A ̅A̅+A ̅B + B
̅A̅+B̅B
̅ ̅
Y = 0 + A(B + B) + 0
Y=A ̅ (1)
𝐘=𝐀 ̅
̅ ) + 𝐀𝐂 + 𝐂
5. 𝐘 = (𝐀 + 𝐂)(𝐀𝐃 + 𝐀𝐃
Solution:
̅ )) + AC + C
Y = (A + C)(A(D + D
Y = (A + C)(A)(1) + AC + C
Y = AA + AC + AC + C
Y = A + AC + C
Y = A(1 + C) + C
𝐘 = 𝐀+𝐂
̅ (𝐀 + 𝐁) + (𝐁 + 𝐀𝐀)(𝐀 + 𝐁
6. 𝐘 = 𝐀 ̅)
Solution:
Y=A ̅A + A̅ B + BA + BB
̅ + AAA + AAB̅
̅
Y = 0 + AB + AB + 0 + A + AB̅
̅ + A) + A + AB
Y = B(A ̅
Y = B + A(1 + B̅)
𝐘 = 𝐀+𝐁
̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅
̅̅̅̅̅̅̅̅̅̅ ̅̅̅̅̅̅̅
7. 𝐘 = 𝐀 + 𝐁𝐂̅ + 𝐃(𝐄 + 𝐅̅)
Solution:
̅̅̅̅̅̅̅̅̅̅̅̅
̅̅̅̅̅̅̅̅̅ ̅̅̅̅̅̅̅̅̅̅̅̅
̅̅̅̅̅̅̅
Y = (A + BC̅) ( D(E + F̅))
̅̅̅̅̅̅̅
Y = (A + BC̅)( D ̅ + (E + F̅)
𝐘 = (𝐀 + 𝐁𝐂)( 𝐃̅ ̅ + 𝐄 + 𝐅̅)
8. 𝐘 = 𝐀𝐁 + 𝐀(𝐁 + 𝐂) + 𝐁(𝐁 + 𝐂)
Solution:
Y = AB + AB + AC + BB + BC
Y = AB + AC + B + BC
Y = AB + AC + B(1 + C)
Y = AB + AC + B
Y = B(A + 1) + AC
𝐘 = 𝐁 + 𝐀𝐂
̅ 𝐁𝐂 + 𝐀𝐁
10. 𝐘 = 𝐀 ̅ 𝐂̅ + 𝐀 ̅ 𝐂̅ + 𝐀𝐁
̅𝐁 ̅ 𝐂 + 𝐀𝐁𝐂
Solution:
Y=A ̅ BC + AB̅C̅ + A ̅B̅C̅ + AB̅C + ABC
Y=A ̅ BC + AB̅C̅ + A ̅B̅C̅ + AC(B̅ + B)
̅ ̅ ̅ ̅ ̅
Y = ABC + ABC + ABC + AC ̅
Y=A ̅ BC + B
̅C̅(A + A ̅ ) + AC
Y=A ̅ BC + B
̅C̅ + AC
̅
Y = (AB + A)C + B ̅C̅
Y = (A + B)C + BC̅
̅
𝐘 = 𝐀𝐂 + 𝐁𝐂 + 𝐁 ̅ 𝐂̅
̅ + 𝐁, 𝐀 = 𝐘 + 𝐗 and 𝐁 = 𝐗
11. If 𝐅 = 𝐀 ̅ + 𝐘, then 𝐅 =?
Solution:
̅̅̅̅̅̅̅
F = (Y + X) + (X̅ + Y)
̅ ̅ ̅
F = Y. X + X + Y
𝐅=𝐘+𝐗 ̅
̅𝐘) = 𝐗 + 𝐘
12. If 𝐟(𝐀, 𝐁) = 𝐀 + 𝐁, then show that 𝐟(𝐟(𝐗, 𝐘𝐙), 𝐗
Solution:
f(A, B) = f(X, YZ)
∴ A = X and B = YZ
f(X, YZ) = X + YZ
f(f(X, YZ), ̅
XY) = f(A + B)
A = f(X, YZ)and B = X ̅Y
f(f(X, YZ), ̅ ̅Y
XY) = (X + YZ) + X
f(f(X, YZ), ̅ ̅Y) + YZ
XY) = (X + X
f(f(X, YZ), ̅
XY) = (X + Y) + YZ
f(f(X, YZ), ̅
XY) = (X + Y(1 + Z))
𝐟(𝐟(𝐗, 𝐘𝐙), 𝐗̅𝐘) = (𝐗 + 𝐘)
Logic gate is the basic building block of any digital circuits. The logic gates may have one
or more inputs and only one output. The relationship between input and output is based on a
certain logic, which is same as Boolean operations, such as AND, OR and NOT.
Based on the Boolean operations, the gates are named as AND gate, OR gate and NOT
gate. These three gates are called basic gates, and some more gates can be derived by using the
basic gates, they are named as NAND gate, NOR gate, EXOR gate and XNOR gate. NAND and
NOR gates are called universal gates, because by using only the NAND gates /NOR gates we can
realize all basic gates even all Boolean expression.
Logic gates, its truth table, expression and symbols are summarized in the table 1.7 as follows.
Sl. No. Gate name and Logic Symbol Truth table and Logical Expression
AND Gate
Inputs Output
A B 𝒀 = 𝑨. 𝑩
0 0 0
1
0 1 0
1 0 0
1 1 1
NOT Gate
Inputs Output
A 𝒀=𝑨̅
3
0 1
1 0
Y = AB + BC + AC
Logic diagram
1.3.2. Realize the following Boolean expression using only NAND gates.
Y = AB + BC + AC
Logic diagram
Step-1: Replace basic gates by NAND equivalents
Step-2: Eliminate two single input NAND gates are connected in series.
-
1.4. Representation of Boolean Expressions
The relationship between Boolean variables and output variable is called Boolean
expression, the Boolean expressions can be represented in two different forms, they are,
1. Sum of Products (SOP) form and
2. Product of Sums (POS) form
The Boolean Expressions in which the product of input variables are summed together for output
high.
Example: Consider a truth table shown in table 1.8.
A B C Y
0 0 0 0
0 0 1 1
0 1 0 1
0 1 1 0
1 0 0 1
1 0 1 1
1 1 0 0
1 1 1 1
Table 1.8: Truth table
Expression (1) is a standard or canonical sum of product form, which is directly derived from the
truth table.
-
Y=A ̅B̅C + A̅ BC̅ + AB̅ + AC
Y = ABC + AB + ABC̅ + AC
̅ ̅ ̅ ̅
̅ C + A)B
Y = (A ̅+A ̅ BC̅ + AC
Y = (C + A)B̅+A ̅ BC̅ + AC
̅ ̅ ̅ ̅
Y = AB + CB + ABC + AC − − − (2)
Expression (2) is the simplified form of canonical SOP form called, minimal SOP form.
NOTE:
1. Canonical SOP form to minimal SOP form and vice versa can also be derived using truth table.
2. Each product terms of SOP form is called minterms.
3. Canonical SOP form of Boolean expressions can also be written using decimal equivalent of
input variables for the output high.
Example: for the Boolean expression (1), the output is high for ABC=001, ABC=010 ABC=100,
ABC=101 and ABC=111.
The decimal equivalent of ABC=001 is '1', ABC=010 is '2', ABC=100 is '4', ABC=101 is '5' and
ABC=111 is '7'
Therefore, Y can also be expressed as
Y(A, B, C) = (m1 , m2 , m4 , m5 , m7 )
OR
Y(A, B, C) = ∑ m(1,2,4,5,7)
Problem: Refer the truth table shown in table 1.9., write the Boolean expression in canonical
SOP form and minimal SOP form. Also write the different ways of writing canonical SOP form.
A B C Y
0 0 0 0
0 0 1 1
0 1 0 1
0 1 1 0
1 0 0 0
1 0 1 1
1 1 0 1
1 1 1 1
̅B
Y=A ̅ BC̅ + AB
̅C + A ̅C + ABC̅ + ABC
other representations
Y(A, B, C) = (m1 , m2 , m5 , m6 , m7 )
OR
Y(A, B, C) = ∑ m((1,2,5,6,7)
-
Digital Electronics (18EC32) Notes
Y=B ̅ BC̅ + AB
̅C + A
̅
Y = BC + (A ̅ C̅ + A)B
Y=B ̅C + (C̅ + A)B
̅C + BC̅ + AB − minimal SOP form
Y=B
The Boolean Expressions in which the Sum of input variables are multiplied together for output
low.
Example: Consider a truth table shown in table 1.9.
A B C Y
0 0 0 0
0 0 1 1
0 1 0 1
0 1 1 0
1 0 0 1
1 0 1 1
1 1 0 0
1 1 1 1
̅ + C̅)(A
Y = (A + B + C)(A + B ̅+B
̅ + C) − − − (1)
Expression (1) is a standard or canonical Products of sum form, which is directly derived from the
truth table.
Expression (2) is the simplified form of canonical POS form called, minimal POS form.
NOTE:
1. Canonical POS form to minimal POS form and vice versa can also be derived using truth table.
2. Each Sum terms of POS form is called maxterm.
3. Canonical POS form of Boolean expressions can also be written using decimal equivalent of
input variables for the output high.
Example: for the Boolean expression (1), the output is low for ABC=000, ABC=011 and
ABC=110.
The decimal equivalent of ABC=000 is '0', ABC=011 is '3', and ABC=110 is '6'
Therefore, Y can also be expressed as
Digital Electronics (18EC32) Notes
Y(A, B, C) = (M0 , M3 , M6 )
OR
Y(A, B, C) = ∏ M(0,3,6)
Problem: Refer the truth table shown in table 1.9., write the Boolean expression in canonical
POS form and minimal POS form. Also write the different ways of writing canonical SOP form.
A B C Y
0 0 0 0
0 0 1 1
0 1 0 1
0 1 1 0
1 0 0 0
1 0 1 1
1 1 0 1
1 1 1 1
The simplification of Boolean expressions using Boolean algebraic rules is not unique and
most of the cases, the resultant expression is not in minimal form. In order to get the uniqueness
and final minimal form, K-map technique will be used. In the following section, the introduction
to K-maps, grouping of variables and simplification procedures are discussed with examples.
NOTE:
Number of cells in K-map = number of possible cases
No. of possible cases=2𝑁
N is the number of input variables.
NOTE: K-maps can take wither POS form or SOP form, in SOP form 1's are need to be grouped
and in POS form 0's are need to be grouped.
NOTE: Only adjacent cells will be considered for grouping, diagonal cells should not be grouped.
NOTE: grouping can be done using 2 variables, 4 variables, 8 variables, 16 variables etc.., highest
priority for grouping maximum variables in the above denomination. Variables are 0's for POS
form and 1's for SOP form.
Procedure:
1. Select the number of cells according to the number of input variables.
2. Identify whether the given problem is SOP or POS form, minterms for SOP form and
maxterms for POS form.
NOTE: In SOP form, fill the cells by 1's at corresponding minterms and otherwise
fill with 0's.
NOTE: In POS form, fill the cells by 0's at corresponding maxterms and otherwise
fill with 1's.
NOTE: In POS form, take the complement of the output variable to get the
resultant expression.
3. group the terms in the form of rectangular, the total number of terms is 2, 4, 8, etc.., try to
cover as many elements as you can in one group.
4. from the groups, find the Product terms for SOP from and sum terms for POS form.
Example:
Simplify the following canonical SOP form of Boolean expression using K-map technique.
Y(A, B, C, D) = ∑ m(0,2,3,4,6,9,11,13,15)
̅D
Simplified Boolean Expression 𝑌 = A ̅B
̅+A ̅C + AD
******
UNIT-III: Flip-Flops and Registers
I. Introduction
Digital circuits are interconnection of various logic gates, which processes the data in the
form of digital signals, which are designed to perform arithmetic as well as logical operations.
Digital circuits are classified into two types
1. Combinational circuits and
2. Sequential circuits.
The following section is discussed the definition and differences between combinational and
sequential circuits.
I.1. Combinational Circuits:
Combinational circuits are time independent circuits, which depends on the present input and
do not dependent on previous inputs to generate any output. Figure (1) shows the block diagram
of combinational circuit.
1. SR Latch:
In flip-flops, storing of ‘1’ is called Set and storing of ‘0’ is called Reset, hence the name SR latch.
i.e., Set and Reset Latch. Figure (4) Shows the NOR gate realization of SR latch.
Characteristic table:
Inputs Output
Qn S R Qn+1
0 0 0 0
0 0 1 0
0 1 0 1
0 1 1 X
1 0 0 1
1 0 1 0
1 1 0 1
1 1 1 X
Table 3: Characteristic table of SR Latch
K-map simplification
𝑄𝑛+1 = 𝑄𝑛 𝑅̅ + 𝑆 − − − (3)
Equation (3) is called characteristic equations, which is the Boolean equation or algebraic
description of the next state of a flip-flop in terms of present inputs and previous outputs.
Excitation table:
Inputs Outputs
Qn Qn+1 S 𝑹
0 0 0 X
0 1 1 0
1 0 0 1
1 1 X 0
Equations (4) and (5) represents the Boolean equation or algebraic description of the excitations
(input values) in terms in terms of the desired state.
2. ̅
𝑺𝑹̅ Latch
Figure (6) Shows the NAND gate realization of SR latch.
In the Figure (6), S and R are Set and Reset inputs respectively, G1 and G2 are NAND gates, Q
and 𝑄̅ are output lines.
The circuit can be analyzed with the following cases.
Case (i): If 𝑆̅ = 0, and 𝑅̅ = 1.
As we know that, output of NAND gate is always ‘1’ if any one input is ‘0’, So if 𝑆̅ = 0, output
of G1 is ‘1’ irrespective of other input i.e., 𝑄 = 1 and output of G1 is one of the input for G2.
Now, G2 takes the values 𝑅̅ = 1. and 𝑄 = 1, therefore, 𝑄̅ = 0. This operation is called Set.
With the same reset state, let us consider 𝑆̅ = 1 and 𝑅̅ = 1.
𝑆̅ = 1 and previous output 𝑄̅ = 0 are the inputs for G1 and the output of G1 is 1, i.e., 𝑄 = 1
similarly, 𝑅̅ = 1 and Q=1 are the input for G2 and the output of G2 is 1, i.e., 𝑄̅ = 0. From the
discussion, it has been observed that, for the values of 𝑅̅ = 𝑆̅ = 1, the 𝑆̅𝑅̅ latch retains the previous
data. This operation is memory (storing of binary symbol ‘1’).
Table 5: Truth table of 𝑆̅𝑅̅ Latch Table 5: Function table of 𝑆̅𝑅̅ Latch
Characteristic table:
Inputs Output
Qn ̅
𝑺 ̅
𝑹 Qn+1
0 0 0 X
0 0 1 1
0 1 0 0
0 1 1 0
1 0 0 X
1 0 1 1
1 1 0 0
1 1 1 1
Table 6: Characteristic table of 𝑆̅𝑅̅ Latch
Excitation table:
Inputs Outputs
Qn Qn+1 ̅
𝑺 ̅
𝑹
0 0 1 X
0 1 0 1
1 0 1 0
1 1 X 1
3. Gated SR Latch
In normal SR and 𝑆̅𝑅̅ latches outputs will change immediately just after the change in input
values. It is frequently desirable to avoid change in input values from affecting the state of the
latch immediately. In order to allow the input changes to be effective only during a prescribed
period of time, an enable signal is introduced. SR latch with enable is called gated SR latch or
clocked latch or controlled latch.
In the following section gated 𝑆̅𝑅̅ is discussed. An enable input can be introduced by two additional
NAND gates with a control input ‘C’, shown in figure (7).
In the figure (8), G1 and G2 are two additional NAND gates connected to introduce control
input/enable input. Cross coupling of G3 and G4 forms a 𝑆̅𝑅̅ . The inputs to the 𝑆̅𝑅̅ latch are denoted
as S* and R*, and these values depends on SR and enable input signal.
The gated SR latch arrangement shown in figure (7) can be analyzed with the following cases as
follows. Before that, make a note of the expressions for S* and R*
𝑆 ∗ = ̅̅̅̅̅̅̅
𝑆. 𝐸𝑛 => 𝑆̅ + ̅̅̅̅
𝐸𝑛 − − − (6)
𝑅 = 𝑅. 𝐸𝑛 => 𝑅 + ̅̅̅̅
∗ ̅̅̅̅̅̅̅ ̅ 𝐸𝑛 − − − (7)
Table (8 & 9) shows the truth table/function table of gated SR which summarizes the
operations gated SR latch in two different methods. Table (10) shows the characteristic table of
gated SR latch and Table (11) shows the excitation table.
Characteristic table: Tabular form of generation of output from present input and previous
output is called characteristic table.
Excitation table: Tabular form of finding inputs to change present state to required next state is
called excitation table. Present state is denoted as Qn and next state is denoted as Qn+1.
Characteristic table:
Inputs Output
Qn 𝑺 𝑹 Qn+1
0 0 0 0
0 0 1 0
0 1 0 1
0 1 1 X
1 0 0 1
1 0 1 0
1 1 0 1
1 1 1 X
K-map simplification
𝑄𝑛+1 = 𝑄𝑛 𝑅̅ + 𝑆 − − − (8)
Equation (8) is called characteristic equations, which is the Boolean equation or algebraic
description of the next state of a flip-flop in terms of present inputs and previous outputs.
Excitation table:
Inputs Outputs
Qn Qn+1 𝑺 𝑹
0 0 0 X
0 1 1 0
1 0 0 1
1 1 X 0
Table 12: Truth Table of Gated D latch Table 13: Function Table of Gated D latch
Characteristic table:
Inputs Output
Qn D Qn+1
0 0 0
0 1 1
1 0 0
1 1 1
𝑄𝑛+1 = 𝐷 − − − (9)
Equation (9) is called characteristic equations, which is the Boolean equation or algebraic
description of the next state of a flip-flop in terms of present inputs and previous outputs.
Excitation table:
Inputs Outputs
Qn Qn+1 𝑫
0 0 0
0 1 1
1 0 0
1 1 1
Duty cycle of clock pulse is the ratio of ON time to total time. In the figure () ON time and OFF
time are mentioned for reference.
Figure 13: Duty cycle of clock pulse
𝑇𝑇𝑜𝑡𝑎𝑙 = 𝑇𝑂𝑁 + 𝑇𝑂𝐹𝐹 − − − (11)
𝑇𝑂𝑁
% 𝑜𝑓 𝐷𝑢𝑡𝑦 𝐶𝑦𝑐𝑙𝑒 = ∗ 100 − − − (12)
𝑇𝑇𝑜𝑡𝑎𝑙
Figure (13) shows the ideal clock, which has no rise time and fall times, but for practice the rise
time and fall time need to be considered. Figure () shows the practical clock pulse.
For further analysis, ideal clocks are considered for simplifying the analysis.
Figure (16) shows the timing diagram of SR latch. Timing diagram is a graph that depicts the input
and output transitions of a flip-flop or a latch as a function of time.
II.3. Flip-Flops
Latches have a property called transparency, means the output change occurs immediately
when the input change occurs. In certain applications, this is an undesirable property. Hence it is
necessary to synchronize the change in output with control line. The device/element which has a
property of synchronizing output change in accordance with the control line is called flip-flop.
Classification of Flip-flops
The behavior of flip-flops dependent upon the rising and falling edges of the clock signal as well
as the period of time in which the control signal is high.
The behavior of the flip-flop is dependent on either rising edge or positive edge of the control
signal, is called edge triggered flip-flops.
In this section pulse triggered master slave SR flip- flops are discussed.
The operation of the pulse triggered Master-Slave SR flip flop is explained as follows. The first
SR latch shown in figure (17) is called Master latch and the second latch is called Slave latch. The
slave latch is driven by master latch. Master latch gets enabled at rising edge of the clock pulse
and active for entire ON period of the clock pulse. QM and QM’ are the outputs of the master
latch. The slave latch will enable at the falling edge of the clock pulse because of the NOT gate.
Figure shows the status of master and slave latches with practical clock pulse.
Master latch is active from time t2 to t3, at the same time slave is disabled. Slave latch is active
before t1 and after t4, hence, if either master latch or slave latch is active at a time, not both
simultaneously.
Figure 18: Illustration of enable and disable period of master and slave latches with practical
clock.
Case (i): If clock =0, the master latch is disabled and any changes on S and R are neglected. At the
same time slave latch is enabled because of NOT gate and slave output is same as that of the master
latch, since outputs (QM and QM’) of master latch serves as inputs (SS and RS) to the slave latch.
Case (ii) If clock signal rises to high, i.e., at the rising edge of the clock pulse, slave latch is disabled
and master latch enabled at time t2. During the ON period (from t2 to t3), the master latch responds
to the inputs on S and R lines, meanwhile slave latch is disabled and any change on the master
latch are not reflected in slave latch, hence the output is same as the previous state.
Case (iii) If clock signal reduces to zero, i.e., at the falling edge of the clock pulse, the slave latch
is enabled and master latch is disabled. The output of the slave latch is the same as the state of
master latch as mentioned in case (i).
Table (17), summarized the functionality of master slave SR flip-flop.
The master slave JK flip-flop is converted invalid state of SR flip-flop to toggle condition. This
operation is discussed as follows.
Assume, the initial state of the flip-flop is Q=1 and Q’=0, At the rising edge of the clock
pulse, if J and K inputs are 1’s, the master latch resets and slave latch also resets at the
falling edge, hence, Q=0 and Q’=1.
Assume, the initial state of the flip flop is Q=0 and Q’=1. At the rising edge of the clock
pulse, if J=1 and K=1, the master lath sets and slave latch also sets at the negative edge of
the clock pulse. i.e. Q=1 and Q’=0.
By observing the above cases, the output of the flip-flop is the complement of the previous
state called toggling.
Table (18) summarizes the functionality of Master slave JK flip-flop.
If the slave latch is in reset state, and logic-1 on the J-input line during the ON period of the clock
signal causes, master latch to set, then, the lave latch sets when the clock signal returns to zero.
This behavior is called 1’s catching.
NOTE: Once the master latch is reset by logic-1 signal on K input line, a subsequent logic -1 signal
on the J input line during the same period in which c=1 does not change its state until C returns to
zero, due to feedback. The feedback signal from slave latch Q’=0, keeps the output J-input NAND
gate at logic-0.
If Clk=0, the output of the flip-flop is same as that of the previous state, irrespective of the
levels of input D.
If Clk=1, the data at the input line will be transferred to the output, i.e., Q=D.
Function Table
Table (19) summarizes the functionality of master slave SR D-flip flop
The response of the flip-flops on triggering edge immediately occurs on rising edge or falling edge.
Once triggering occurs, flip-flop is insensitive to the changes on input line until the next triggering
edge.
1. Positive edge triggered D Flip-flop.
Positive edge triggered D flip-flop can be designed using three pairs of cross coupled NAND gates,
i.e., positive edge triggered D flip-flop consisting of three S’R’ latches shown in figure (25).
Function table
Inputs Outputs
𝐃 𝐂𝐥𝐤 𝐐𝐧+𝟏 ̅̅̅̅̅̅̅
𝐐𝐧+𝟏
0 ↓ 0 1 Set
1 ↓ 1 0 Reset
X 0 𝑄𝑛 ̅̅̅̅
𝑄𝑛 Previous state
X 1 𝑄𝑛 ̅̅̅̅
𝑄𝑛 Previous state
Asynchronous Inputs
All information input lines of flip flops are synchronous inputs, to have more flexibility, two
additional inputs have been introduced to set and reset forcibly. These input lines are called
asynchronous inputs denoted as PR’ and CLR’, that is these input line do not depend on the
control/clock signal.
Figure (30) shows the positive edge triggered D flip-flop with asynchronous inputs.
Figure 30: Logic diagram of edge triggered D flip-flop with asynchronous inputs
Inputs Outputs
̅̅̅̅
𝐏𝐑 ̅̅̅̅̅̅
𝐂𝐋𝐑 𝐃 𝐂𝐥𝐤 𝐐𝐧+𝟏 ̅̅̅̅̅̅̅
𝐐𝐧+𝟏
0 1 X X 1 0 Initial state forced to set.
1 0 X X 0 1 Initial state forced to reset
0 0 X X 1 1 Invalid
1 1 0 ↑ 0 1 Set
1 1 1 ↑ 1 0 Reset
1 1 X 0 𝑄𝑛 ̅̅̅̅
𝑄𝑛 Previous state
1 1 X 1 𝑄𝑛 ̅̅̅̅
𝑄𝑛 Previous state
Table 23: Function Table of Positive edge triggered D flip-flop with asynchronous inputs
Logic symbol
Figure 31: Logic symbol of edge triggered D flip-flop with asynchronous inputs
III. Registers
A single flip-flop is able to store single bit information either 0 or 1, but to store more than
one bit information, a group of flip-flops need to be connected. A group of flip-flops is called a
register. If a register contains n flip-flops, it is able to stor n bit information.
Registers can be used to generate the specified sequence and can also be used to shift the content
of flip-flop position wise, based on this the applications of registers are classified into two
categories.
1. Shift registers and
2. Counters
1. Shift registers
A shift register is an entity of flip-flops, which are capable of shifting the state of flip-flop
positionwise in one direction or two directions.
Example: To store 4-bit data 1001, four flip-flops are used.
Shift registers further classified into four types, based on the way the input is loaded and the output
is received.
a) Serial input and serial ouptut
The information will be loaded serially through a single line and output will be received serially
through a single line is called serial input and serial output (SISO) shift register shown in figure
(33).
Truth table
Serial In
Serial Out
Truth table
Serial In
Parallel Out
Truth table
Parallel Out
Truth table
Parallel Data : D=1111
Clk Q0 Q1 Q2 Q3
0 0 0 0 0
1 1 Parallel1Load 1 1
Serial Out
2 0 1 1 1
3 0 0 1 1
4 0 0 0 1
NOTE:
• A single circuit which performs all the shift register operations in single direction shown
in figure (45).
̅̅̅̅̅̅̅ = 0(𝑃𝑎𝑟𝑎𝑙𝑙𝑒𝑙 − 𝑖𝑛)
• 𝑆ℎ𝑖𝑓𝑡/𝐿𝑜𝑎𝑑
̅̅̅̅̅̅̅ = 1(𝑆𝑒𝑟𝑖𝑎𝑙 − 𝑖𝑛)
• 𝑆ℎ𝑖𝑓𝑡/𝐿𝑜𝑎𝑑
Figure 45: Single circuit which performs SISO, SIPO, PIPO and PISO
Bidirectional Shift register
Performs both left shift and right shift
M=0 (Shift left operation), M=1 (Shift right operation)
Logic diagram
S1 S0 Register
Operation
0 0 No Change
(Memory)
0 1 Shift left
1 0 Shift right
1 1 Parallel loading
NOTE: Students are asked to write the detailed working principle of all the shift registers
(Explanation for all shift registers are omitted in this notes and asked to explain).
IV. Counters
Registers can also be used to generate the specified sequence, counting the binary values
either incrementally or in decrement is an example of sequence. Hence, counter is a sequential
circuit, which counts the pulses either in ascending or descending order.
n-bit counter will be designed using n-flip-flops.
Counters are classified into two types based on the application of clock signal.
The output of the previous state flip serves as a clock input to the next state flip-flop is called
asynchronous counters.
Figure (50) shows that, the clock input for the second flip-flop will be supplied from the output of
first flip-flop.
Similarly, counters can be designed using any type of flip-flops, depending on the counting
sequence, counters are further classified into three types.
1. Up-counter and
Counts the clock pulse incrementally.
2. Down-counter
Counts the clock pulse in decrement order.
3. Ring counter
Outputs the specified sequence in circular/ring format.
Output 𝑄̅ of previous order flip-flop serves clock signal for the next order flip-flops, and
clock pulse applied to all the flip-flops is not simultaneous, hence called as asynchronous counter.
T inputs of all flip-flops are connected to logic-1, which acts as a toggle device. Output of the last
stage flip-flop is MSB and the output of first stage flip-flop is LSB.
For every rising edge of the clock pulse the content of first stage(Q0) T-flip-flop will toggles, for
every falling edge of the Q0 the content of second stage(Q1) T-flip-flop will toggles, this process
continues until the last stage flip-flop.
Assume, initially, the contents of all the four T flip-flops are zero. At the rising edge of the clock
pulse Q0 becomes ‘1’ and the remaining flip-flop outputs remains zero. The later stage flip-flops
output change occurs at the next falling edge of the previous stage flip-flop outputs, shown in the
timing diagram figure (52).
Change in the state of flip-flops occurs through the outputs of the previous stage flip-flops, that is
the effect of count pulse must ripple through the counter. Hence the name ripple counter.
Asynchronous Down-Counter (Binary Ripple counter)
Figure (53) shows the logic diagram of 4-bit down counter using positive edge triggered T flip-
flops. Each positive transition of clock makes the flip-flop to toggle.
Logic Diagram
Output 𝑄̅ of previous order flip-flop serves clock signal for the next order flip-flops, and
clock pulse applied to all the flip-flops is not simultaneous, hence called as asynchronous counter.
T inputs of all flip-flops are connected to logic-1, which acts as a toggle device. Output 𝑄 ̅̅̅3 of the
last stage flip-flop is MSB and the output ̅̅̅𝑄0 of first stage flip-flop is LSB.
For every rising edge of the clock pulse the content of first stage(𝑄0 ̅̅̅̅) T-flip-flop will toggles, for
every falling edge of the Q0 the content of second stage(Q1) T-flip-flop will toggles, this process
continues until the last stage flip-flop.
Assume, initially, the contents of all the four T flip-flops are zero, hence complement of the outputs
is 1’s. At the rising edge of the clock pulse ̅̅̅̅
𝑄0 becomes ‘0’ and the remaining flip-flop complement
outputs remains 1. The later stage flip-flops output change occurs at the next falling edge of the
previous stage flip-flop outputs, shown in the timing diagram figure (54).
Change in the state of flip-flops occurs through the outputs of the previous stage flip-flops, that is
the effect of count pulse must ripple through the counter. Hence the name ripple counter
V. Miscelaneous Concepts
Flip-flops conversion
1. SR to D flip-flop
Excitation equations
Excitation table 𝑆 = ̅̅̅̅
𝑄𝑛 𝐽 𝑎𝑛𝑑 𝑅 = 𝑄𝑛 𝐾
Qn J K Qn+1 S R
0 0 0 0 0 X
0 0 1 0 0 X
0 1 0 1 1 0
0 1 1 1 1 0
1 0 0 1 X 0
1 0 1 0 0 1
1 1 0 1 X 0
1 1 1 0 0 1
3. SR to T flip-flop
7. D to JK flip-flop
Excitation table Excitation equation
Qn J K Qn+1 D ̅ + ̅̅̅̅
𝐷 = 𝑄𝑛 𝐾 𝑄𝑛 𝐽
0 0 0 0 0 Logic diagram
0 0 1 0 0
0 1 0 1 1
0 1 1 1 1
1 0 0 1 1
1 0 1 0 0
1 1 0 1 1
1 1 1 0 0
8. T to D flip-flop
Excitation table Logic diagram
Qn D Qn+1 T
0 0 0 0
0 1 1 1
1 0 1 1
1 1 0 0
Excitation equation
𝑇 = 𝑄𝑛 ⊕ 𝐷
9. T-JK Flip-flop
Excitation table Excitation equation
Qn J K Qn+1 T 𝑇 = 𝑄𝑛 𝐾 + ̅̅̅̅
𝑄𝑛 𝐽
0 0 0 0 0 Logic diagram
0 0 1 0 0
0 1 0 1 1
0 1 1 1 1
1 0 0 1 0
1 0 1 0 1
1 1 0 1 0
1 1 1 0 1
******
UNIT-IV : Counters design and state machines
Counters
Registers can also be used to generate the specified sequence, counting the binary values
either incrementally or in decrement is an example of sequence. Hence, counter is a sequential
circuit, which counts the pulses either in ascending or descending order.
n-bit counter will be designed using n-flip-flops.
Counters are classified into two types based on the application of clock signal.
Figure (49) shows the two-bit counter, the clock signal for the two flip-flops are supplied
simultaneously. ̅̅̅̅̅̅
𝐶𝐿𝑅 is an asynchronous input, logic-0 to this pin sets the initial value of all the
flip-flop to zero.
The output of the previous state flip serves as a clock input to the next state flip-flop is called
asynchronous counters.
Figure (50) shows that, the clock input for the second flip-flop will be supplied from the output of
first flip-flop.
Output 𝑄̅ of previous order flip-flop serves clock signal for the next order flip-flops, and
clock pulse applied to all the flip-flops is not simultaneous, hence called as asynchronous counter.
T inputs of all flip-flops are connected to logic-1, which acts as a toggle device. Output of the last
stage flip-flop is MSB and the output of first stage flip-flop is LSB.
For every rising edge of the clock pulse the content of first stage(Q0) T-flip-flop will toggles, for
every falling edge of the Q0 the content of second stage(Q1) T-flip-flop will toggles, this process
continues until the last stage flip-flop.
Assume, initially, the contents of all the four T flip-flops are zero. At the rising edge of the clock
pulse Q0 becomes ‘1’ and the remaining flip-flop outputs remains zero. The later stage flip-flops
output change occurs at the next falling edge of the previous stage flip-flop outputs, shown in the
timing diagram figure (52).
Change in the state of flip-flops occurs through the outputs of the previous stage flip-flops, that is
the effect of count pulse must ripple through the counter. Hence the name ripple counter.
Asynchronous Down-Counter (Binary Ripple counter)
Figure (53) shows the logic diagram of 4-bit down counter using positive edge triggered T flip-
flops. Each positive transition of clock makes the flip-flop to toggle.
Logic Diagram
Output 𝑄̅ of previous order flip-flop serves clock signal for the next order flip-flops, and
clock pulse applied to all the flip-flops is not simultaneous, hence called as asynchronous counter.
T inputs of all flip-flops are connected to logic-1, which acts as a toggle device. Output 𝑄 ̅̅̅3 of the
last stage flip-flop is MSB and the output ̅̅̅𝑄0 of first stage flip-flop is LSB.
For every rising edge of the clock pulse the content of first stage(𝑄0 ̅̅̅̅) T-flip-flop will toggles, for
every falling edge of the Q0 the content of second stage(Q1) T-flip-flop will toggles, this process
continues until the last stage flip-flop.
Assume, initially, the contents of all the four T flip-flops are zero, hence complement of the outputs
is 1’s. At the rising edge of the clock pulse ̅̅̅̅
𝑄0 becomes ‘0’ and the remaining flip-flop complement
outputs remains 1. The later stage flip-flops output change occurs at the next falling edge of the
previous stage flip-flop outputs, shown in the timing diagram figure (54).
Change in the state of flip-flops occurs through the outputs of the previous stage flip-flops, that is
the effect of count pulse must ripple through the counter. Hence the name ripple counter
State diagram.
A graphical representation of the behavior of counters or any sequential circuits is called state
diagram. State diagrams helps for the design of counters easily, which shows the transition from
present states to the next states.
Procedure to draw the state diagram.
Each state is represented by a circle, and the present state should be mentioned inside the
circle.
Use arrow associated lines to show the transition from present state to the next state.
NOTE: if the present state and next state is same, then connect the arrow associated line to
the same state.
Example: Two bit up-counter, four states counting from 00 to 11.
State table
The information contained in the state diagram is tabulated in a tabular form is called state table
also called state synthesis table.
Example: Two-bit counter
Present Next
states states
Q1 Q 0 Q1 + Q0 +
0 0 0 1
0 1 1 0
1 0 1 1
1 1 0 0
In the following section, the design of two-bit synchronous counter is discussed using T flip-
flop.
1. No. of flip-flops is required =2, two-bit counter – sequence is 00, 01, 10 and 11.
2. State diagram
States Excitations
Q Q+ T
0 0 0
0 1 1
1 0 1
1 1 0
4. Excitation table for complete circuit
5. K-map simplification
𝑇1 = 𝑄0
𝑇0 = 1
6. Logic diagram
7. Verification
Function table
Clock Outputs
Pulse Q1 Q0
0 0 0
1 0 1
2 1 0
3 1 1
4 0 0
Timing diagram
States Excitations
Q Q+ T
0 0 0
0 1 1
1 0 1
1 1 0
4. Excitation table of complete circuit
Present states Next states Excitations
Q3 Q2 Q1 Q0 Q3+ Q2+ Q1+ Q0+ T3 T2 T1 T0
0 0 0 0 0 0 0 1 0 0 0 1
0 0 0 1 0 0 1 0 0 0 1 1
0 0 1 0 0 0 1 1 0 0 0 1
0 0 1 1 0 1 0 0 0 1 1 1
0 1 0 0 0 1 0 1 0 0 0 1
0 1 0 1 0 1 1 0 0 0 1 1
0 1 1 0 0 1 1 1 0 0 0 1
0 1 1 1 1 0 0 0 1 1 1 1
1 0 0 0 1 0 0 1 0 0 0 1
1 0 0 1 1 0 1 0 0 0 1 1
1 0 1 0 1 0 1 1 0 0 0 1
1 0 1 1 1 1 0 0 0 1 1 1
1 1 0 0 1 1 0 1 0 0 0 1
1 1 0 1 1 1 1 0 0 0 1 1
1 1 1 0 1 1 1 1 0 0 0 1
1 1 1 1 0 0 0 0 1 1 1 1
5. K-map Simplification
𝑇3 = 𝑄2 𝑄1 𝑄0, 𝑇2 = 𝑄1 𝑄0, 𝑇1 = 𝑄0 , 𝑇0 = 1
6. Logic Diagram
Logic Symbol
2. MOD counters with parallel loading
Example-1: Synchronous Mod-6 counter with parallel loading
Timing diagram
Figure shows the timing diagram of 4-bit ring counter.
Initially, the contents of flip-flops (Q0Q1Q2Q3) are assumed as (0000), at the first rising edge of
the clock pulse 𝐷0 = ̅̅̅𝑄3 and hence, 𝑄0 = 𝐷0 , 𝑄1 = 𝐷1 , 𝑄2 = 𝐷2 , 𝑄3 = 𝐷3 this data shift position
wise at the flip-flops at every rising edge of the clock pulse, The twisted ring counter generates
the eight sequence and the sequence repeats after every eight clock pulses, hence the mod of this
counter is eight. The twisted ring counter is also called Johnson counter and switch tail counter.
Truth Table:
Clk Q0 Q1 Q2 Q3
0 0 0 0 0
1 1 0 0 0
2 1 1 0 0
3 1 1 1 0
4 1 1 1 1
5 0 1 1 1
6 0 0 1 1
7 0 0 0 1
8 0 0 0 0
Timing diagram
Figure shows the timing diagram of Johnson counter.
******
NOTE: State machines, state table and state diagram concepts need to be added
UNIT-V : VHDL
I. Introduction to VHDL
VHDL is a Computer Aided Design (CAD) tool for the modern design and synthesis of digital
systems.
Featurs of VHDL
HDL is a very efficient tool for implementing and synthesizing designs on chips.
It is a high level programming language similar to C.
Debugging is easy, since HDL packages implement simulators and test-benches.
HDL modules follow the general structure of software languages such as C.
VHDL is a case insensitive language
VHDL is a platform independent language.
VHDL was developed in the early 1980s under the VHSIC program at U.S. Department of Defence
(DoD). Until the development of VHDL, each company used its own primitive hardware
description languages, which are only gate level design tools and they did not support very
large scale design.
To meet the need of designing large scale systems, a research team from three companies – IBM,
Texas Instruments, and Intermetrics was jointly contributed at DoD for the development
of powerful hardware description language based tools. The team produced the first
publicly available standard, VHDL version 7.2, in 1985.
In 1986, the institute of electrical and electronics engineers (IEEE) was tasked with globally
standardizing the language in 1987, the IEEE completed their mission and added several
enhancements to the language, the result was the IEEE standard 1076-1987 version of
VHDL, which was also recognized by the American National Standards Institute (ANSI).
In 1993, further updations were done with added features, the updated version is a 1076-1993
version of VHDL. One of the major enhancement is the addition of package
std_logic_1164, which supports addition seven logic levels in addition to the existing two
levels.
Nowadays VHDL is a very popular design tool among industry and academia. Additional tools
have been added to the language, such as graphics based simulators that allow the user to
interact graphically on the screen with simulator to compile, simulate, test and verify the
design. Also an analog extension to the language is underway.
VHDL module has two major constructs: entity and architecture. Entity describes the input and
output signals of the system to be described. And is given a name or identifier by the user.
Architecture describes the functionality of the system to be designed. That is the relation between
input and outputs of the system, and must be bound to an entity. The structure of any VHDL
module/program as follows.
entity entity_name is
port(variable_1:mode data_type;
variable_2:mode data_type;
variable_n:mode data_type);
signal declaration;
constant declaration;
component declaration;
configurations;
packages;
begin
hardware_description_Statement_1;
hardware_description_Statement_2;
hardware_description_Statement_n;
end architecture_name;
entity_name and architecture_name are identitifiers, these are used to name the module. Port
declaration in entity is the listing of input and output variables of the system to be designed. Mode
indicates the direction of input and output variables of the system. VHDL supports huge set of data
types, data type of any variable indicates the type of value and range of values allowed by the
corresponding variable. Architecture, consists of set of hardware description statements for the
system to be designed. Every hardware description statements must be written after the begin
statement. Signal declaration part is the list of intermediate signals of the system to be designed,
component declaration section, lists the components to be used in the design. End statements must
be written for completeness of the module or program.
VHDL supports four mode types, which indicates the direction of the input and output variables,
they are.
1. in : in is the port read mode. This mode is used for input signals, and these variables always
appear on right hand side at the assignment statements.
2. out : out is the port write mode. This mode is used for output signals, and these variables
always appear on left hand side at the assignment statements.
3. buffer : buffer is the port read as well as write mode with limited fan-out. These variables
appear either on right hand side or left hand side at the assignment statements.
4. inout : inout is the port read as well as write mode without any constraints. These variables
appear either on right hand side or left hand side at the assignment statements.
V. Data types
Data type of any element determines the variables allowed value with range. VHDL has a rich
set of data types, some of them are discussed as follows.
1. Scalar data type:
Scalar data type variables allows only numerical values. Scalar data type are further
categorized into many types, they are discussed as follows.
i) bit type : The only values allowed are either ‘0’ and ‘1’.
ii) boolean type : The values allowed in this type is boolen type, true or false.
Generally these boolean data type variables are used in the conditional constrcuts.
Example:
a : in boolean;
b : in boolean;
big : out bit;
if (a>b)
big<=a;
else
big<=b;
iii) integer type : Allows all positive and negative values including zero. The range is
from -2,147,483, 647 to +2,147,483,647. Integer data types can be used as natural,
positive etc. natural data type allows all positive values including zero, positive data
type only positive numbers.
Example:
a : in integer;
iv) real type : Allows fractional values, with range is -1.0E38 to 1.0E38.
v) character type : These variables under character type allows a single character or
group of character (string).
vi) physical type : Allows the values which are measured in units. Like time in
seconds, weight in grams, etc..
2. Composite type
Composite data type are used to declare a bus type variables. There are three types of
composite data types, they are
i) bit vector : port (a:in bit_vector (3 downto 0));
ii) array type : collection of homogeneous elements.
port (a(7 downto 0):in integer);
iii) record type : group elements of different data types.
Example:
record
student_name: in character;
sl_no:in integer;
percentage:in real;
end record;
3. Other data-types
i) std_logic type: std_logic data-type variables take nine values, they are listed in the
following table.
port (a: in std_logic);
std_logic data-type variables take nine values, they are listed in the following table.
U Uninitiated.
X Unknown
0 Low
1 High
Z High impedance
W Weak unknown
L Weak low
H Weak high
- Don’t care
iii) signed type : Numeric data type with MSB is sign bit.
iv) unsigned type : Numeric data type of positive value.
VI. Operators
The operators are used to perform operations on operands, general operations are logical,
arithmetic, relational and shift operations, these are discussed as follows.
1. Logic operators: AND, OR, NOT, NAND, NOR, XOR and XNOR are logical operators
which performs on two operands. In VHDL all these operators performs bitwise logical
operations.
Example:
A=1010, B=1011, A and B=1010.
3. Arithmetic operators: Table below summarized the different types of arithmetic operators.
-
/ Division A-Integer or real Same as A=5, B=2
B- Integer or A A/B=2
real
/ Division A-Physical Same as A=5sec,
B- Integer or A B=2.5
real A/B=2sec
1. Behavioral modeling/modeling
Describes how the output behaves with the inputs. In behavioral modeling the statements
are executed sequentially, i.e., all statements are to be written inside the process block.
Process is the keyword in VHDL, the statements under this block are executed
sequentally.
Example:
Entity of half_adder is
Port (A, B: in std_logic; S, C:out std_logic);
End half_adder;
Architecture behavioural of half_adder is
Begin
Process(A, B)
S<=A xor B;
C<=A and B;
End process;
End behavioural;
2. Structural description/modeling
The hardware will be described using components or gates through the keyword
“component”
Example:
Entity of half_adder is
Port (A, B: in std_logic; S, C:out std_logic);
End half_adder;
Architecture structural of half_adder is
Component xor2
Pot(I1, I2: in bit; O1: out bit);
End xor2;
Component and2
Pot(I1, I2: in bit; O1: out bit);
End and2;
Begin
Xor2 portmap(A, B, S);
And2 portmap(A, B, C);
End structural;
3. Data-flow description/modeling
The statements of the data-flow description are executed concurrently.
Example:
Entity of half_adder is
Port (A, B: in std_logic; S, C:out std_logic);
End half_adder;
Architecture dataflow of half_adder is
Begin
S<=A xor B;
C<=A and B;
End behavioural;
Entity of inverter is
Port (x: in std_logic; y:out std_logic);
End inverter;
Architecture switch_level of inverter is
Component nmos
Pot(I1, I2: in bit; O1: out bit);
End nmos;
Component pmos
Pot(I1, I2: in bit; O1: out bit);
End pmos;
For all pmos use entity work.mos(pmos_behavioural);
For all nmos use entity work.mos(pmos_behavioural);
Constant vdd: std_logic:=’1’;
Constant gnd: std_logic:=’0’;
Begin
P1=pmos portmap(y, vdd, x);
N1=(nmos portmap(y, gnd, x);
End switch_level;
5. Mixed level description/modeling
Combination of two or more type of descriptions. i.e., description can be written using
more than one type of modeling.
Example: Combination of behavioral and data flow modeling.
Entity of example is
Port (A, B: in integer; x, y, z:out integer);
End example;
Architecture mixed_model of example is
X<=B+A
Begin
Process(A, B)
Y<=A - B;
z<=A * B;
End process;
End mixed_model;
VHDL Code:
Library ieee;
use ieee.std_logic_1164.all;
entity half_adder is
port(a,b:in bit; sum,carry:out bit);
end half_adder;
Library ieee;
use ieee.std_logic_1164.all;
Library ieee;
use ieee.std_logic_1164.all;
entity half_sub is
port(a,c:in bit; d,b:out bit);
end half_sub;
Library ieee;
use ieee.std_logic_1164.all;
entity full_sub is
port(a,b,c:in bit; sub,borrow:out bit);
end full_sub;
Library ieee;
use ieee.std_logic_1164.all;
entity mux is
port(S1,S0,D0,D1,D2,D3:in bit; Y:out bit);
end mux;
Library ieee;
use ieee.std_logic_1164.all;
entity demux is
port(S1,S0,D:in bit; Y0,Y1,Y2,Y3:out bit);
end demux;
library ieee;
use ieee.std_logic_1164.all;
entity enc is
port(i0,i1,i2,i3,i4,i5,i6,i7:in bit; o0,o1,o2: out bit);
end enc;
architecture vcgandhi of enc is
begin
o0<=i4 or i5 or i6 or i7;
o1<=i2 or i3 or i6 or i7;
o2<=i1 or i3 or i5 or i7;
end vcgandhi;
library ieee;
use ieee.std_logic_1164.all;
entity dec is
port(i0,i1,i2:in bit; o0,o1,o2,o3,o4,o5,o6,o7: out bit);
end dec;
library ieee;
use ieee.std_logic_1164.all;
entity srl is
port(r,s:in bit; q,qbar:buffer bit);
end srl;
library ieee;
use ieee.std_logic_1164.all;
entity srflip is
port(r,s,clk:in bit; q,qbar:buffer bit);
end srflip;
Entity combinational_circuit is
Port(A, B, C: in bit; Y: out bit);
End combinational_circuit;
******
References
1. John M Yarbrough - Digital Logic Applications and Design, Thomson Learning, 2001. ISBN
981-240-062-1.
2. Donald D. Givone, ―Digital Principles and Design‖, McGraw Hill, 2002. ISBN 978-0-07-
052906-9.
3. Nazeih M.Botros-John Weily India Pvt. Ltd. 2008. HDL Programming (VHDL and Verilog)
4. D. P. Kothari and J. S Dhillon, ―Digital Circuits and Design‖, Pearson, 2016,
ISBN:9789332543539.
5. Charles H Roth, Jr., ―Fundamentals of Logic Design, Cengage Learning.
6. K. A. Navas, ―Electronics Lab Manual‖, Volume I, PHI, 5th Edition, 2015
ISBN:9788120351424.
7. https://www.tutorialspoint.com/vlsi_design/vhdl_programming_for_combinational_circuits.htm