eng2410 digital design: week #4 “combinational logic...

66
ENG2410 Digital Design: Week #4 “Combinational Logic Design” S. Areibi School of Engineering University of Guelph

Upload: others

Post on 21-Sep-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ENG2410 Digital Design: Week #4 “Combinational Logic Design”islab.soe.uoguelph.ca/sareibi/TEACHING_dr/ENG241_html_dr/...Digital Design: Week #4 “Combinational Logic Design”

ENG2410Digital Design: Week #4“Combinational Logic

Design”

S. AreibiSchool of EngineeringUniversity of Guelph

Page 2: ENG2410 Digital Design: Week #4 “Combinational Logic Design”islab.soe.uoguelph.ca/sareibi/TEACHING_dr/ENG241_html_dr/...Digital Design: Week #4 “Combinational Logic Design”

Week #4: Topics

Decoders Combinational circuit Implementation

Encoders Priority Encoders

Multiplexers Combinational Circuit Implementation

Demultiplexers

Page 3: ENG2410 Digital Design: Week #4 “Combinational Logic Design”islab.soe.uoguelph.ca/sareibi/TEACHING_dr/ENG241_html_dr/...Digital Design: Week #4 “Combinational Logic Design”

Resources

Chapter #4, Mano Sections 4.1 Combinational Circuits 4.3 Decoding 4.4 Encoding 4.5 Multiplexers 4.6 Comb Function Implementations

Page 4: ENG2410 Digital Design: Week #4 “Combinational Logic Design”islab.soe.uoguelph.ca/sareibi/TEACHING_dr/ENG241_html_dr/...Digital Design: Week #4 “Combinational Logic Design”

4

Central Processing Unit (CPU)

Any CPU consists of two main parts:• Datapath Unit: Arithmetic/Logic Operation

• Control Unit: Sends control signals to datapth to perform certain operations.

Controlunit DatapathCPU

Data/Instructions/codeAll in 01010010010

clock

Memory

Input/Output

Page 5: ENG2410 Digital Design: Week #4 “Combinational Logic Design”islab.soe.uoguelph.ca/sareibi/TEACHING_dr/ENG241_html_dr/...Digital Design: Week #4 “Combinational Logic Design”

Decoders and Multiplexors

Decoders and Multiplexors are important components and fundamental circuits that are found in any Central Processing Unit (CPU)

CPU Datapath

• Multiplexors are used to select certain registers to act as operands (inputs) to the Arithmetic/Logic Unit

• Decoders are used to enable registers to write the results back into the registers.

Page 6: ENG2410 Digital Design: Week #4 “Combinational Logic Design”islab.soe.uoguelph.ca/sareibi/TEACHING_dr/ENG241_html_dr/...Digital Design: Week #4 “Combinational Logic Design”

Decoders

Page 7: ENG2410 Digital Design: Week #4 “Combinational Logic Design”islab.soe.uoguelph.ca/sareibi/TEACHING_dr/ENG241_html_dr/...Digital Design: Week #4 “Combinational Logic Design”

Devices on a Bus

7

Device #0

Device #1

Device #2

Device #3

ControlUnit

Assume we have 4 devices that needs to put its data on a Bus Only one device has to be active at a time (i.e. writes info on the bus)! 4 control signals “wires” from the Control Unit are needed to enable each device If more devices are to be attached to the bus then we will need many more wires!!

BUS

Enable

Disable

Disable

Disable

Page 8: ENG2410 Digital Design: Week #4 “Combinational Logic Design”islab.soe.uoguelph.ca/sareibi/TEACHING_dr/ENG241_html_dr/...Digital Design: Week #4 “Combinational Logic Design”

Address Decoding

8

Device #0

Device #1

Device #2

Device #3

ControlUnit

4 devices need to write data to the Bus Only one device has to be active at a time! But! only 2 wires available from control unit

BUS

1

00

0

0

0

0

10

100

Truth Table

Page 9: ENG2410 Digital Design: Week #4 “Combinational Logic Design”islab.soe.uoguelph.ca/sareibi/TEACHING_dr/ENG241_html_dr/...Digital Design: Week #4 “Combinational Logic Design”

9

Decoders

Are circuits with n inputs and 2n outputs Drives high the output corresponding to binary

code of input Several Applications: Address Decoding, …

A

D0

D1

Page 10: ENG2410 Digital Design: Week #4 “Combinational Logic Design”islab.soe.uoguelph.ca/sareibi/TEACHING_dr/ENG241_html_dr/...Digital Design: Week #4 “Combinational Logic Design”

10

2-to-4 Line Decoder

Notice they are minterms

Inputs Outputs

Plane of AND Gates

Page 11: ENG2410 Digital Design: Week #4 “Combinational Logic Design”islab.soe.uoguelph.ca/sareibi/TEACHING_dr/ENG241_html_dr/...Digital Design: Week #4 “Combinational Logic Design”

11

Other DecodersExamples: 3-to-8 Decoder 4-to-16 Decoder

3-to-8Line

Decoder4-to-16

LineDecoder

3 8

Binary to Octal, Binary to Hex, e.t.c

4 16

Page 12: ENG2410 Digital Design: Week #4 “Combinational Logic Design”islab.soe.uoguelph.ca/sareibi/TEACHING_dr/ENG241_html_dr/...Digital Design: Week #4 “Combinational Logic Design”

12

Truth Table, 3-to-8 Decoder

Notice they are minterms

Example: Binary to Octal, Binary to Hex, e.t.c

3-to-8Line

Decoder

Binary to Octal,

A0

A1

A2

Page 13: ENG2410 Digital Design: Week #4 “Combinational Logic Design”islab.soe.uoguelph.ca/sareibi/TEACHING_dr/ENG241_html_dr/...Digital Design: Week #4 “Combinational Logic Design”

13

3-to-8 Line Decoder Schematic

Page 14: ENG2410 Digital Design: Week #4 “Combinational Logic Design”islab.soe.uoguelph.ca/sareibi/TEACHING_dr/ENG241_html_dr/...Digital Design: Week #4 “Combinational Logic Design”

14

2-to-4 with Enable

Why use an Enable?

Page 15: ENG2410 Digital Design: Week #4 “Combinational Logic Design”islab.soe.uoguelph.ca/sareibi/TEACHING_dr/ENG241_html_dr/...Digital Design: Week #4 “Combinational Logic Design”

15

Enable Used for ExpansionA1A2 A0

0

0

00

0

0

0

1

1

11

1

1

1

0

0

0

0

01

1

1

1

1 0 1

0

1

1

0

A 3-to-8 Decoder can be realized using two2-to-4 line decoders with an enable

Page 16: ENG2410 Digital Design: Week #4 “Combinational Logic Design”islab.soe.uoguelph.ca/sareibi/TEACHING_dr/ENG241_html_dr/...Digital Design: Week #4 “Combinational Logic Design”

16

Usage for Decoders

Binary to Octal/Hex converters. Selecting memory banks, for example 4

memory banks can be selected individually using 2 address lines.

Implementing logic circuits! Decoders are used in Micro Computer

Interfacing for Keyboard and Display applications.

Page 17: ENG2410 Digital Design: Week #4 “Combinational Logic Design”islab.soe.uoguelph.ca/sareibi/TEACHING_dr/ENG241_html_dr/...Digital Design: Week #4 “Combinational Logic Design”

Address Decoding

17

Memory Bank #1

Memory Bank #2

Memory Bank #3

Memory Bank #4

CPU

Page 18: ENG2410 Digital Design: Week #4 “Combinational Logic Design”islab.soe.uoguelph.ca/sareibi/TEACHING_dr/ENG241_html_dr/...Digital Design: Week #4 “Combinational Logic Design”

Decoders: Logic Implementation

Page 19: ENG2410 Digital Design: Week #4 “Combinational Logic Design”islab.soe.uoguelph.ca/sareibi/TEACHING_dr/ENG241_html_dr/...Digital Design: Week #4 “Combinational Logic Design”

19

Decoder generates appropriateminterm based on control signals

(it "decodes" control signals)

Decoders as General-purpose Logic

n:2n decoder implements any function of n variables With the variables used as control inputs Enable inputs tied to 1 and Appropriate minterms summed to form the function

Page 20: ENG2410 Digital Design: Week #4 “Combinational Logic Design”islab.soe.uoguelph.ca/sareibi/TEACHING_dr/ENG241_html_dr/...Digital Design: Week #4 “Combinational Logic Design”

20

Decoders as General-purpose Logic

Example: Implement the following Boolean functions 1. S(A2,A1,A0) = SUM(m(1,2,4,7))

2. C(A2,A1,A0) = SUM(m(3,5,6,7))

1. Since there are three inputs, we need a 3-to-8 line decoder.

2. The decoder generates the eight minterms for inputs A0,A1,A2

3. We choose only the minterms that we need for a function (S) or (C)

4. An OR GATE forms the logical sum mintermsrequired.

Page 21: ENG2410 Digital Design: Week #4 “Combinational Logic Design”islab.soe.uoguelph.ca/sareibi/TEACHING_dr/ENG241_html_dr/...Digital Design: Week #4 “Combinational Logic Design”

21

Decoders as General-purpose Logic

S(A2,A1,A0) = SUM(m(1,2,4,7))

S

Page 22: ENG2410 Digital Design: Week #4 “Combinational Logic Design”islab.soe.uoguelph.ca/sareibi/TEACHING_dr/ENG241_html_dr/...Digital Design: Week #4 “Combinational Logic Design”

22

Decoders as General-purpose Logic

C(A2,A1,A0) = SUM(m(3,5,6,7))

C

A Single Decoder can implement both “S” and “C” with two OR Gates

Page 23: ENG2410 Digital Design: Week #4 “Combinational Logic Design”islab.soe.uoguelph.ca/sareibi/TEACHING_dr/ENG241_html_dr/...Digital Design: Week #4 “Combinational Logic Design”

23

F1

Example F1 = A' B C' D + A' B' C D + A B C D

A B

0 A'B'C'D'1 A'B'C'D2 A'B'CD'3 A'B'CD4 A'BC'D'5 A'BC'D6 A'BCD'7 A'BCD8 AB'C'D'9 AB'C'D10 AB'CD'11 AB'CD12 ABC'D'13 ABC'D14 ABCD'15 ABCD

4:16DECEnable

C D

o F1(A,B,C,D) = SUM(m(3,5,15))Therefore, we will need a 4-to-16 line decoder

23 2122 20

Need to show that variable A (MSB) needsto be connected to MSB of the Decoder

Page 24: ENG2410 Digital Design: Week #4 “Combinational Logic Design”islab.soe.uoguelph.ca/sareibi/TEACHING_dr/ENG241_html_dr/...Digital Design: Week #4 “Combinational Logic Design”

Encoders

Page 25: ENG2410 Digital Design: Week #4 “Combinational Logic Design”islab.soe.uoguelph.ca/sareibi/TEACHING_dr/ENG241_html_dr/...Digital Design: Week #4 “Combinational Logic Design”

25

Encoder

Encoder is the opposite of decoder 2n inputs (or less – maybe BCD in) n outputs

Examples: Octal to binary conversion Hexadecimal to binary conversion

Page 26: ENG2410 Digital Design: Week #4 “Combinational Logic Design”islab.soe.uoguelph.ca/sareibi/TEACHING_dr/ENG241_html_dr/...Digital Design: Week #4 “Combinational Logic Design”

26

Octal to Binary EncoderYou can think of the inputs as the 8 Octal digits

Only one input is active at a time

Page 27: ENG2410 Digital Design: Week #4 “Combinational Logic Design”islab.soe.uoguelph.ca/sareibi/TEACHING_dr/ENG241_html_dr/...Digital Design: Week #4 “Combinational Logic Design”

27

Design of Encoder

A0 = D1 + D3 + D5 + D7

Page 28: ENG2410 Digital Design: Week #4 “Combinational Logic Design”islab.soe.uoguelph.ca/sareibi/TEACHING_dr/ENG241_html_dr/...Digital Design: Week #4 “Combinational Logic Design”

Multiplexors

Page 29: ENG2410 Digital Design: Week #4 “Combinational Logic Design”islab.soe.uoguelph.ca/sareibi/TEACHING_dr/ENG241_html_dr/...Digital Design: Week #4 “Combinational Logic Design”

29

Multiplexer (or Mux)

Selects one of a set of inputs to pass on to output

For Every 2n inputs we need n select lines

Applications: Useful for choosing from sets of data Memory or register to ALU

MUX

In0In1

In2

In3

Out

S0 S1

Page 30: ENG2410 Digital Design: Week #4 “Combinational Logic Design”islab.soe.uoguelph.ca/sareibi/TEACHING_dr/ENG241_html_dr/...Digital Design: Week #4 “Combinational Logic Design”

Multiplexors

The Multiplexor in the register file allows one of the four registers R0, R1, R2, R3 to move its contents to the Function Unit

The Multiplexor in the Function Unit allows the user to choose between the ALUand Shifter to move data back to the Register File.

Page 31: ENG2410 Digital Design: Week #4 “Combinational Logic Design”islab.soe.uoguelph.ca/sareibi/TEACHING_dr/ENG241_html_dr/...Digital Design: Week #4 “Combinational Logic Design”

31

2-Input MultiplexerStructure:

A Plane of AND Gates

Followed by an OR Gate

Page 32: ENG2410 Digital Design: Week #4 “Combinational Logic Design”islab.soe.uoguelph.ca/sareibi/TEACHING_dr/ENG241_html_dr/...Digital Design: Week #4 “Combinational Logic Design”

32

4-to-1 Line Multiplexer

Page 33: ENG2410 Digital Design: Week #4 “Combinational Logic Design”islab.soe.uoguelph.ca/sareibi/TEACHING_dr/ENG241_html_dr/...Digital Design: Week #4 “Combinational Logic Design”

33

Quad 2-to-4 Line Mux Select one set

of 4 lines

Page 34: ENG2410 Digital Design: Week #4 “Combinational Logic Design”islab.soe.uoguelph.ca/sareibi/TEACHING_dr/ENG241_html_dr/...Digital Design: Week #4 “Combinational Logic Design”

Multiplexors: Logic Implementation

Page 35: ENG2410 Digital Design: Week #4 “Combinational Logic Design”islab.soe.uoguelph.ca/sareibi/TEACHING_dr/ENG241_html_dr/...Digital Design: Week #4 “Combinational Logic Design”

35

Implementing Logico 2n:1 multiplexer implements any function of n variables

1. With the variables used as control inputs and2. Data inputs tied to 0 or 13. In essence, a lookup table

o Example: F(A,B) = m0 + m2= A'B' + AB’

A B F0 0 10 1 01 0 11 1 0

Page 36: ENG2410 Digital Design: Week #4 “Combinational Logic Design”islab.soe.uoguelph.ca/sareibi/TEACHING_dr/ENG241_html_dr/...Digital Design: Week #4 “Combinational Logic Design”

36

CA B

10100011

01234567S2

8:1 MUX

S1 S0

F

Muxes as General-purpose Logic

o 2n:1 multiplexer implements any function of n variables1. With the variables used as control inputs and2. Data inputs tied to 0 or 13. In essence, a lookup table

o Example: F(A,B,C) = m0 + m2 + m6 + m7= A'B'C' + A'BC' + ABC' + ABC

A B C F0 0 0 10 0 1 00 1 0 10 1 1 01 0 0 01 0 1 01 1 0 11 1 1 1

Page 37: ENG2410 Digital Design: Week #4 “Combinational Logic Design”islab.soe.uoguelph.ca/sareibi/TEACHING_dr/ENG241_html_dr/...Digital Design: Week #4 “Combinational Logic Design”

37

A B C F0 0 0 10 0 1 00 1 0 10 1 1 01 0 0 01 0 1 01 1 0 11 1 1 1

F

CA B

01234567

10100011

S2

8:1 MUX

S1 S0

2n-1:1 mux can implement any function of n variables With n-1 variables used as control inputs and Data inputs tied to the last variable or its complement

Example: F(A,B,C) = m0 + m2 + m6 + m7

= A'B'C' + A'BC' + ABC' + ABC

Muxes as General-purpose Logic

Not OptimizedHow to use a 4:1 MUX Instead?

Use inputs A, B as the selection lines for the 4:1 MUX since we will only have two selection lines

Find a relationship between C (the third input) and F

Page 38: ENG2410 Digital Design: Week #4 “Combinational Logic Design”islab.soe.uoguelph.ca/sareibi/TEACHING_dr/ENG241_html_dr/...Digital Design: Week #4 “Combinational Logic Design”

38

A B C F0 0 0 10 0 1 00 1 0 10 1 1 01 0 0 01 0 1 01 1 0 11 1 1 1

C'

C'

0

1 A B

S1 S0

F0123

4:1 MUXC'C'01

F

CA B

01234567

10100011

S2

8:1 MUX

S1 S0

2n-1:1 mux can implement any function of n variables With n-1 variables used as control inputs and Data inputs tied to the last variable or its complement

Example: F(A,B,C) = m0 + m2 + m6 + m7

= A'B'C' + A'BC' + ABC' + ABC

Muxes as General-purpose Logic

Not Optimized OptimizedHow to use a 4:1 MUX Instead?

Page 39: ENG2410 Digital Design: Week #4 “Combinational Logic Design”islab.soe.uoguelph.ca/sareibi/TEACHING_dr/ENG241_html_dr/...Digital Design: Week #4 “Combinational Logic Design”

Demultiplexors

Page 40: ENG2410 Digital Design: Week #4 “Combinational Logic Design”islab.soe.uoguelph.ca/sareibi/TEACHING_dr/ENG241_html_dr/...Digital Design: Week #4 “Combinational Logic Design”

40

Demultiplexer

Takes one input out to one of 2n possible outputs

Page 41: ENG2410 Digital Design: Week #4 “Combinational Logic Design”islab.soe.uoguelph.ca/sareibi/TEACHING_dr/ENG241_html_dr/...Digital Design: Week #4 “Combinational Logic Design”

VHDL Implementations

Page 42: ENG2410 Digital Design: Week #4 “Combinational Logic Design”islab.soe.uoguelph.ca/sareibi/TEACHING_dr/ENG241_html_dr/...Digital Design: Week #4 “Combinational Logic Design”

42

entity dec_2_to_4 isport (

A0, A1: in std_logic;D0, D1, D2, D3: out std_logic);

end entity dec_2_to_4;

Decoder: (VHDL Data Flow) Example: 2-to-4 decoder

D0

D1

D2

D3

A(1)

A(0)

Inte

rface

A0_n A1_n

architecture dataflow1 of dec_2_to_4 is

Signal A0_n, A1_n: std_logic;begin

A0_n <= not A0;A1_n <= not A1;D0 <= A0_n and A1_n;D1 <= A0 and A1_n;D2 <= A0_n and A1;D3 <= A0 and A1;

end architecture dataflow1;Fu

nctio

nalit

y

Page 43: ENG2410 Digital Design: Week #4 “Combinational Logic Design”islab.soe.uoguelph.ca/sareibi/TEACHING_dr/ENG241_html_dr/...Digital Design: Week #4 “Combinational Logic Design”

43

mux: Y <= D0 when S1 = ‘0’ and S0 = ‘0’ elseD1 when S1 = ‘0’ and S0 = ‘1’ elseD2 when S1 = ‘1’ and S0 = ‘0’ elseD3;

When Else Statement

Page 44: ENG2410 Digital Design: Week #4 “Combinational Logic Design”islab.soe.uoguelph.ca/sareibi/TEACHING_dr/ENG241_html_dr/...Digital Design: Week #4 “Combinational Logic Design”

44

VHDL of 4-to-1 Multiplexer using When/Else

-- 4-to-1 Line Mux; Conditional Dataflow VHDL Descriplibrary ieee;use ieee.std_logic_1164.all

entity multiplexer_4_to_1 isport (S: in std_logic_vector(1 downto 0);

D: in std_logic_vector(3 downto 0);Y: out std_logic;

end multiplexer_4_to_1;

Page 45: ENG2410 Digital Design: Week #4 “Combinational Logic Design”islab.soe.uoguelph.ca/sareibi/TEACHING_dr/ENG241_html_dr/...Digital Design: Week #4 “Combinational Logic Design”

45

Cont .. Dataflow VHDL Description

architecture function_table of multiplexer_4_to_1 is-- Using When Else

BeginY <= D(0) when S = “00” else

D(1) when S = “01” elseD(2) when S = “10” elseD(3) when S = “11” else`X’;

end function_table;

Page 46: ENG2410 Digital Design: Week #4 “Combinational Logic Design”islab.soe.uoguelph.ca/sareibi/TEACHING_dr/ENG241_html_dr/...Digital Design: Week #4 “Combinational Logic Design”

46

entity dec_2_to_4 isport (

A : in std_logic_vector(1 downto 0);D : out std_logic_vector(3 downto 0)

);end entity dec_2_to_4;

architecture dataflow2 of dec_2_to_4 isbegin

D <= "0001" when A = "00" else"0010" when A = "01" else"0100" when A = "10" else"1000" when A = "11" else"XXXX";

end architecture dataflow2;

Decoder: Data Flow #2Example: 2-to-4 decoder

D(0)

D(1)

D(2)

D(3)A(1)

A(0)

Inte

rface

Func

tiona

lity

A(1..0) D(3..0)

0 0 0 0 0 1

0 1 0 0 1 0

1 0 0 1 0 0

1 1 1 0 0 0

Page 47: ENG2410 Digital Design: Week #4 “Combinational Logic Design”islab.soe.uoguelph.ca/sareibi/TEACHING_dr/ENG241_html_dr/...Digital Design: Week #4 “Combinational Logic Design”

47

VHDL Design Styles

Components andinterconnects

structural

VHDL Design Styles

dataflow

Concurrent statements

behavioral(algorithmic)

• Registers• State machines• Test benches

Sequential statements

Subset most suitable for synthesis

Page 48: ENG2410 Digital Design: Week #4 “Combinational Logic Design”islab.soe.uoguelph.ca/sareibi/TEACHING_dr/ENG241_html_dr/...Digital Design: Week #4 “Combinational Logic Design”

48

Structural VHDL Description of 2-to-4 Line Decoder

Page 49: ENG2410 Digital Design: Week #4 “Combinational Logic Design”islab.soe.uoguelph.ca/sareibi/TEACHING_dr/ENG241_html_dr/...Digital Design: Week #4 “Combinational Logic Design”

49

Structural VHDL Description“Entity Declaration”

-- 2-to-4 Line Decoder; structural VHDL Descriptionlibrary ieee;use ieee.std_logic_1164.all

entity decoder_2_4_w_enable isport (EN, A0, A1 : in std_logic;

D0, D1, D2, D3 : out std_logic);end decoder_2_to_4_w_enable;

Page 50: ENG2410 Digital Design: Week #4 “Combinational Logic Design”islab.soe.uoguelph.ca/sareibi/TEACHING_dr/ENG241_html_dr/...Digital Design: Week #4 “Combinational Logic Design”

50

Structural VHDL Description (Signals)

A0_nA1_n

N0

N3

N1

N2

Page 51: ENG2410 Digital Design: Week #4 “Combinational Logic Design”islab.soe.uoguelph.ca/sareibi/TEACHING_dr/ENG241_html_dr/...Digital Design: Week #4 “Combinational Logic Design”

51

Structural VHDL Description (Components)

architecture structural1_1 of decoder_2_to_4_w_enable is

component NOT1port(in1: in std_logic;

out1: out std_logic);end component;

component AND2port(in1, in2: in std_logic;

out1: out std_logic);end component;

Page 52: ENG2410 Digital Design: Week #4 “Combinational Logic Design”islab.soe.uoguelph.ca/sareibi/TEACHING_dr/ENG241_html_dr/...Digital Design: Week #4 “Combinational Logic Design”

52

Structural VHDL Description(Connecting components)

architecture structural1_1 of decoder_2_to_4_w_enable is-- component NOT1 declaration-- component NAND2 declarationsignal A0_n, A1_n, N0, N1, N2, N3: std_logic;

beging0: NOT1 port map (in1 => A0, out1 => A0_n);g1: NOT1 port map (in1 => A1, out1 => A1_n);………………

end structural_1;

A0_n

A1_n

component NOT1port(in1: in std_logic;

out1: out std_logic);end component;

Page 53: ENG2410 Digital Design: Week #4 “Combinational Logic Design”islab.soe.uoguelph.ca/sareibi/TEACHING_dr/ENG241_html_dr/...Digital Design: Week #4 “Combinational Logic Design”

53

Structural VHDL Description(Connecting components)

architecture structural1_1 of decoder_2_to_4_w_enable is-- component NOT1 declaration-- component NAND2 declarationsignal A0_n, A1_n, N0, N1, N2, N3: std_logic;

beging0: NOT1 port map (in1 => A0, out1 => A0_n);g1: NOT1 port map (in1 => A1, out1 => A1_n);g2: AND2 port map (in1 => A0_n, in2 => A1_n, out1 => N0);g3: AND2 port map (in1 => A0, in2 => A1_n, out1 => N1);g4: AND2 port map (in1 => A0_n, in2 => A1_n, out1 => N2);g5: AND2 port map (in1 => A0, in2 => A1, out1 => N3);g6: AND2 port map (in1 =>EN, in2 => N0, out1 => D0);g7: AND2 port map (in1 => EN, in2 => N1, out1 => D1);g8: AND2 port map (in1 => EN, in2 => N2, out1 => D2);g9: AND2 port map (in1 => EN, in2 => N3, out1 => D3);

end structural_1;

Page 54: ENG2410 Digital Design: Week #4 “Combinational Logic Design”islab.soe.uoguelph.ca/sareibi/TEACHING_dr/ENG241_html_dr/...Digital Design: Week #4 “Combinational Logic Design”

54

2-to-4 Line Decoder: Complete Design

architecture structural1_1 of decoder_2_to_4_w_enable is-- component NOT1 declaration-- component NAND2signal A0_n, A1_n, N0, N1, N2, N3: std_logic;begin

g0: NOT1 port map (in1 => A0, out1 => A0_n);g1: NOT1 port map (in1 => A1, out1 => A1_n);

g2: AND2 port map (in1 => A0_n, in2 => A1_n, out1 => N0);g3: AND2 port map (in1 => A0, in2 => A1_n, out1 => N1);g4: AND2 port map (in1 => A0_n, in2 => A1_n, out1 => N2);g5: AND2 port map (in1 => A0, in2 => A1, out1 => N3);

g6: AND2 port map (in1 =>EN, in2 => N0, out1 => D0);g7: AND2 port map (in1 => EN, in2 => N1, out1 => D1);g8: AND2 port map (in1 => EN, in2 => N2, out1 => D2);g9: AND2 port map (in1 => EN, in2 => N3, out1 => D3);

end structural_1;

A0_n

A1_n

-- 2-to-4 Line Decoder; structural VHDL Descriptionlibrary ieee;use ieee.std_logic_1164.all

entity decoder_2_4_w_enable isport (EN, A0, A1 : in std_logic;

D0, D1, D2, D3 : out std_logic);end decoder_2_to_4_w_enable;

Page 55: ENG2410 Digital Design: Week #4 “Combinational Logic Design”islab.soe.uoguelph.ca/sareibi/TEACHING_dr/ENG241_html_dr/...Digital Design: Week #4 “Combinational Logic Design”
Page 56: ENG2410 Digital Design: Week #4 “Combinational Logic Design”islab.soe.uoguelph.ca/sareibi/TEACHING_dr/ENG241_html_dr/...Digital Design: Week #4 “Combinational Logic Design”

56

Revisiting Encoder!! Why?

Only ONE input is allowed to be active at a time!

Page 57: ENG2410 Digital Design: Week #4 “Combinational Logic Design”islab.soe.uoguelph.ca/sareibi/TEACHING_dr/ENG241_html_dr/...Digital Design: Week #4 “Combinational Logic Design”

57

What’s the Problem?

What if D3 and D6 both high? Simple OR circuit will set A to 111 This is an issue!!!! Solution?

Page 58: ENG2410 Digital Design: Week #4 “Combinational Logic Design”islab.soe.uoguelph.ca/sareibi/TEACHING_dr/ENG241_html_dr/...Digital Design: Week #4 “Combinational Logic Design”

58

Priority Encoder

Chooses one with highest priority Largest number, usually

“X” in input == 0 or 1 compact Truth Table

Page 59: ENG2410 Digital Design: Week #4 “Combinational Logic Design”islab.soe.uoguelph.ca/sareibi/TEACHING_dr/ENG241_html_dr/...Digital Design: Week #4 “Combinational Logic Design”

59

Unfolding the Compact Truth Table

D3 D2 D1 D0 A1 A0

0 0 1 0 0 10 0 0 1 0 0

0 0 1 1 0 1

What if all inputs are zero?

Page 60: ENG2410 Digital Design: Week #4 “Combinational Logic Design”islab.soe.uoguelph.ca/sareibi/TEACHING_dr/ENG241_html_dr/...Digital Design: Week #4 “Combinational Logic Design”

60

Need Another Output!

A Valid Output!

Page 61: ENG2410 Digital Design: Week #4 “Combinational Logic Design”islab.soe.uoguelph.ca/sareibi/TEACHING_dr/ENG241_html_dr/...Digital Design: Week #4 “Combinational Logic Design”

61

Expanded Truth Table (A0)

D3 D2 D1 D0 A0

0 0 0 0 X

0 0 0 1 0

0 0 1 0 1

0 0 1 1 1

0 1 0 0 0

0 1 0 1 0

0 1 1 0 0

0 1 1 1 0

1 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 1

x 0 1 10 0 0 01 1 1 11 1 1 1

00 01 11 10

000111

10

D3D2

D1D0

A0 = D3 + D2D1

Page 62: ENG2410 Digital Design: Week #4 “Combinational Logic Design”islab.soe.uoguelph.ca/sareibi/TEACHING_dr/ENG241_html_dr/...Digital Design: Week #4 “Combinational Logic Design”

62

Valid is OR of all inputs

Page 63: ENG2410 Digital Design: Week #4 “Combinational Logic Design”islab.soe.uoguelph.ca/sareibi/TEACHING_dr/ENG241_html_dr/...Digital Design: Week #4 “Combinational Logic Design”

63

Structural VHDL Descriptionof 4-to-1 Line Multiplexer

N(0:3)D(0:3)S_n(0:1)

Page 64: ENG2410 Digital Design: Week #4 “Combinational Logic Design”islab.soe.uoguelph.ca/sareibi/TEACHING_dr/ENG241_html_dr/...Digital Design: Week #4 “Combinational Logic Design”

64

Cont .. Structural VHDL Descriptionof 4-to-1 Multiplexer

-- 4-to-1 Line Multiplexer; structural VHDL Descriptionlibrary ieee;use ieee.std_logic_1164.all

entity multiplexer_4_to_1_st isport (S: in std_logic_vector(0 to 1);

I: in std_logic_vector(0 to 3);Y: out std_logic;

end multiplexer_4_to_1_st;

Page 65: ENG2410 Digital Design: Week #4 “Combinational Logic Design”islab.soe.uoguelph.ca/sareibi/TEACHING_dr/ENG241_html_dr/...Digital Design: Week #4 “Combinational Logic Design”

65

Cont .. Structural VHDL Descriptionof 4-to-1 Multiplexer

architecture structural_2 of multiplexer_4_to_1_st iscomponent NOT1port(in1: in std_logic;

out1: out std_logic);end component;

component AND2port(in1, in2: in std_logic;

out1: out std_logic);end component;

component OR4port(in1, in2, in3, in4: in std_logic;

out1: out std_logic);end component;

Page 66: ENG2410 Digital Design: Week #4 “Combinational Logic Design”islab.soe.uoguelph.ca/sareibi/TEACHING_dr/ENG241_html_dr/...Digital Design: Week #4 “Combinational Logic Design”

66

Cont .. Structural VHDL Descriptionof 4-to-1 Multiplexer

architecture structural_2 of multiplexer_4_to_1_st is-- component NOT1 AND2 OR4 declarations

signal S_n : std_logic(0 to 1);signal D, N : std_logic_vector(0 to 3);begin

g0: NOT1 port map (S(0), S_n(0));g1: NOT1 port map (S(1), S_n(1));g2: AND2 port map (S_n(1), S_n(0), D(0));g3: AND2 port map (S_n(1),S(0), D(1));g4: AND2 port map (S(1),S(0), D(3));g5: AND2 port map (S(1), S(0), D(3));g6: AND2 port map (D(0), I(0), N(0));g7: AND2 port map (D(1),I(1), N(1));g8: AND2 port map (D(2),I(2),N(2));g9: AND2 port map (D(3),I(3), N(3));g10: OR4 port map (N(0), N(1), N(2), N(3), Y);

end structural_2;