36
Chapter 8: Combinational Logic Modules Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 8-1 Chapter 8: Combinational Logic Modules Department of Electronic Engineering National Taiwan University of Science and Technology Prof. Ming-Bo Lin

Chapter 8: Combinational Logic Modules - John Wiley … 8: Combinational Logic Modules Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 8-23

  • Upload
    lamtu

  • View
    226

  • Download
    2

Embed Size (px)

Citation preview

Page 1: Chapter 8: Combinational Logic Modules - John Wiley … 8: Combinational Logic Modules Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 8-23

Chapter 8: Combinational Logic Modules

Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 8-1

Chapter 8: Combinational Logic Modules

Department of Electronic Engineering

National Taiwan University of Science and Technology

Prof. Ming-Bo Lin

Page 2: Chapter 8: Combinational Logic Modules - John Wiley … 8: Combinational Logic Modules Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 8-23

Chapter 8: Combinational Logic Modules

Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 8-2

Syllabus

ObjectivesFundamentals of combinational logic modulesDecodersEncodersMultiplexersDemultiplexersComparators

Page 3: Chapter 8: Combinational Logic Modules - John Wiley … 8: Combinational Logic Modules Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 8-23

Chapter 8: Combinational Logic Modules

Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 8-3

Objectives

After completing this chapter, you will be able to:Understand the features of decoders Understand the features of encoders Understand the features of priority encodersUnderstand the features of multiplexersUnderstand the features of demultiplexersDescribe how to design comparators and magnitude comparatorsDescribe how to design a parameterized module

Page 4: Chapter 8: Combinational Logic Modules - John Wiley … 8: Combinational Logic Modules Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 8-23

Chapter 8: Combinational Logic Modules

Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 8-4

Syllabus

ObjectivesFundamentals of combinational logic modulesDecodersEncodersMultiplexersDemultiplexersComparators

Page 5: Chapter 8: Combinational Logic Modules - John Wiley … 8: Combinational Logic Modules Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 8-23

Chapter 8: Combinational Logic Modules

Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 8-5

Basic Combinational Logic Modules

DecoderEncoderMultiplexerDemultiplexerComparatorAdder (CLA)Subtracter (subtractor)MultiplierPLA Parity Generator

-

Page 6: Chapter 8: Combinational Logic Modules - John Wiley … 8: Combinational Logic Modules Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 8-23

Chapter 8: Combinational Logic Modules

Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 8-6

Options for Modeling Combinational Logic

Verilog HDL primitivesContinuous assignmentBehavioral statementFunctionsTask without delay or event controlCombinational UDPInterconnected combinational logic modules

Page 7: Chapter 8: Combinational Logic Modules - John Wiley … 8: Combinational Logic Modules Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 8-23

Chapter 8: Combinational Logic Modules

Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 8-7

Syllabus

ObjectivesFundamentals of combinational logic modulesDecodersEncodersMultiplexersDemultiplexersComparators

Page 8: Chapter 8: Combinational Logic Modules - John Wiley … 8: Combinational Logic Modules Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 8-23

Chapter 8: Combinational Logic Modules

Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 8-8

Decoder Block Diagrams

n-to-m decoders

Page 9: Chapter 8: Combinational Logic Modules - John Wiley … 8: Combinational Logic Modules Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 8-23

Chapter 8: Combinational Logic Modules

Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 8-9

A 2-to-4 Decoder Example

Page 10: Chapter 8: Combinational Logic Modules - John Wiley … 8: Combinational Logic Modules Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 8-23

Chapter 8: Combinational Logic Modules

Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 8-10

A 2-to-4 Decoder Example

// a 2-to-4 decoder with active low outputalways @(x or enable_n)

if (enable_n) y = 4'b1111; else case (x)

2'b00 : y = 4'b1110;2'b01 : y = 4'b1101;2'b10 : y = 4'b1011;2'b11 : y = 4'b0111;

endcase

y28

y25

y26

y27

un1_y28

un1_y25

un1_y26

un1_y27 y[3:0]

0

1

[0][1]

[0][1]

[0][1]

[1][0]

1111[3:0] y[3:0][3:0]

enable

x[1:0] [1:0]

Page 11: Chapter 8: Combinational Logic Modules - John Wiley … 8: Combinational Logic Modules Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 8-23

Chapter 8: Combinational Logic Modules

Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 8-11

A 2-to-4 Decoder with Enable Control

// a 2-to-4 decoder with active-high outputalways @(x or enable)

if (!enable) y = 4'b0000; else case (x)

2'b00 : y = 4'b0001;2'b01 : y = 4'b0010;2'b10 : y = 4'b0100;2'b11 : y = 4'b1000;

endcase

y28

y25

y26

y27 y[3:0]

0

1

[0][1]

[0][1]

[0][1]

[1][0]

0000[3:0] y[3:0][3:0]

enable

x[1:0] [1:0]

Page 12: Chapter 8: Combinational Logic Modules - John Wiley … 8: Combinational Logic Modules Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 8-23

Chapter 8: Combinational Logic Modules

Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 8-12

Syllabus

ObjectivesFundamentals of combinational logic modulesDecodersEncodersMultiplexersDemultiplexersComparators

Page 13: Chapter 8: Combinational Logic Modules - John Wiley … 8: Combinational Logic Modules Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 8-23

Chapter 8: Combinational Logic Modules

Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 8-13

Encoder Block Diagrams

m-to-n encoders

Page 14: Chapter 8: Combinational Logic Modules - John Wiley … 8: Combinational Logic Modules Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 8-23

Chapter 8: Combinational Logic Modules

Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 8-14

A 4-to-2 Encoder Example

Q: What is the problem of this encoder?

Page 15: Chapter 8: Combinational Logic Modules - John Wiley … 8: Combinational Logic Modules Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 8-23

Chapter 8: Combinational Logic Modules

Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 8-15

A 4-to-2 Encoder Example

// a 4-to-2 encoder using if ... else structurealways @(in) begin

if (in == 4'b0001) y = 0; elseif (in == 4'b0010) y = 1; elseif (in == 4'b0100) y = 2; elseif (in == 4'b1000) y = 3; else

y = 2'bx;end

y22

y23

y24

y25

y[1:0]

ed

ed

ed

ed

[0][1][2][3]

[1][0][2][3]

[2][0][1][3]

[3][0][1][2]

00

01[1:0]

10

11

y[1:0][1:0]

in[3:0] [3:0]

Page 16: Chapter 8: Combinational Logic Modules - John Wiley … 8: Combinational Logic Modules Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 8-23

Chapter 8: Combinational Logic Modules

Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 8-16

Another 4-to-2 Encoder Example

// a 4-to-2 encoder using case structurealways @(in)

case (in)4'b0001 : y = 0;4'b0010 : y = 1;4'b0100 : y = 2;4'b1000 : y = 3;default : y = 2'bx;

endcase

y22

y23

y24

y25

y[1:0]

ed

ed

ed

ed

[0][1][2][3]

[1][0][2][3]

[2][0][1][3]

[3][0][1][2]

00

01[1:0]

10

11

y[1:0][1:0]

in[3:0] [3:0]

Page 17: Chapter 8: Combinational Logic Modules - John Wiley … 8: Combinational Logic Modules Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 8-23

Chapter 8: Combinational Logic Modules

Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 8-17

A 4-to-2 Priority Encoder

Page 18: Chapter 8: Combinational Logic Modules - John Wiley … 8: Combinational Logic Modules Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 8-23

Chapter 8: Combinational Logic Modules

Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 8-18

A 4-to-2 Priority Encoder Example

// using if ... else structureassign valid_in = |in;always @(in) begin

if (in[3]) y = 3; elseif (in[2]) y = 2; elseif (in[1]) y = 1; elseif (in[0]) y = 0; elsey = 2'bx;

end

un1_in_1

y23

valid_in

un1_in_3

y24

y25

y_1[0]

ed

ed

ed

ed

[2][3]

[2][3]

[0][1][2][3]

[1]

[1]

[0]

[3]1

0

1

0

y[1:0]

valid_in

in[3:0] [3:0]

Page 19: Chapter 8: Combinational Logic Modules - John Wiley … 8: Combinational Logic Modules Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 8-23

Chapter 8: Combinational Logic Modules

Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 8-19

Another 4-to-2 Priority Encoder Example

// using casex structureassign valid_in = |in;always @(in) casex (in)

4'b1xxx: y = 3;4'b01xx: y = 2;4'b001x: y = 1;4'b0001: y = 0;default: y = 2'bx;

endcase

y23[0]

y24[0]

valid_in

y25

y[1:0]

ed

ed

ed

ed

[2][3]

[1][2][3]

[0][1][2][3]

[0][1][2][3]

[3]11

10[1:0]

01

00

y[1:0][1:0]

valid_in

in[3:0] [3:0]

Page 20: Chapter 8: Combinational Logic Modules - John Wiley … 8: Combinational Logic Modules Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 8-23

Chapter 8: Combinational Logic Modules

Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 8-20

Syllabus

ObjectivesFundamentals of combinational logic modulesDecodersEncodersMultiplexersDemultiplexersComparators

Page 21: Chapter 8: Combinational Logic Modules - John Wiley … 8: Combinational Logic Modules Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 8-23

Chapter 8: Combinational Logic Modules

Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 8-21

Multiplexer Block Diagramsm-to-1 ( m = 2n ) multiplexers

Page 22: Chapter 8: Combinational Logic Modules - John Wiley … 8: Combinational Logic Modules Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 8-23

Chapter 8: Combinational Logic Modules

Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 8-22

A 4-to-1 Multiplexer Example

Gate-based 4-to-1 multiplexers

Page 23: Chapter 8: Combinational Logic Modules - John Wiley … 8: Combinational Logic Modules Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 8-23

Chapter 8: Combinational Logic Modules

Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 8-23

An n-bit 4-to-1 Multiplexer Example

// an N-bit 4-to-1 multiplexer using conditional operatorparameter N = 4; //input [1:0] select;input [N-1:0] in3, in2, in1, in0;output [N-1:0] y;assign y = select[1] ?

(select[0] ? in3 : in2) :(select[0] ? in1 : in0) ;

un1_select_2

un1_select_3

un1_select_4

un1_select_5

y[3:0]

ed

ed

ed

ed

[0][1]

[1][0]

[0][1]

[0][1]

[3:0]

[3:0][3:0]

[3:0]

[3:0]

y[3:0][3:0]

in0[3:0] [3:0]

in1[3:0] [3:0]

in2[3:0] [3:0]

in3[3:0] [3:0]

select[1:0] [1:0]

Page 24: Chapter 8: Combinational Logic Modules - John Wiley … 8: Combinational Logic Modules Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 8-23

Chapter 8: Combinational Logic Modules

Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 8-24

The Second n-bit 4-to- 1 Multiplexer Example

// an N-bit 4-to-1 multiplexer with enable controlparameter N = 4; input [1:0] select;input enable;input [N-1:0] in3, in2, in1, in0;output reg [N-1:0] y;

always @(select or enable or in0 or in1 or in2 or in3)if (!enable) y = {N{1’b0}};else y = select[1] ?

(select[0] ? in3 : in2) :(select[0] ? in1 : in0) ;

Page 25: Chapter 8: Combinational Logic Modules - John Wiley … 8: Combinational Logic Modules Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 8-23

Chapter 8: Combinational Logic Modules

Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 8-25

The Third n-bit 4-to- 1 Multiplexer Example

// an N-bit 4-to-1 multiplexer using case structureparameter N = 8; input [1:0] select;input [N-1:0] in3, in2, in1, in0;output reg [N-1:0] y;always @(*)

case (select)2’b11: y = in3 ;2’b10: y = in2 ;2’b01: y = in1 ;2’b00: y = in0 ;

endcase

un1_select_2

un1_select_3

un1_select_4

un1_select_5

y[7:0]

ed

ed

ed

ed

[0][1]

[1][0]

[0][1]

[0][1]

[7:0]

[7:0][7:0]

[7:0]

[7:0]

y[7:0][7:0]

in0[7:0] [7:0]

in1[7:0] [7:0]

in2[7:0] [7:0]

in3[7:0] [7:0]

select[1:0] [1:0]

Page 26: Chapter 8: Combinational Logic Modules - John Wiley … 8: Combinational Logic Modules Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 8-23

Chapter 8: Combinational Logic Modules

Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 8-26

Syllabus

ObjectivesFundamentals of combinational logic modulesDecodersEncodersMultiplexersDemultiplexersComparators

Page 27: Chapter 8: Combinational Logic Modules - John Wiley … 8: Combinational Logic Modules Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 8-23

Chapter 8: Combinational Logic Modules

Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 8-27

DeMultiplexer Block Diagrams

1-to-m ( m = 2n ) demultiplexers

Page 28: Chapter 8: Combinational Logic Modules - John Wiley … 8: Combinational Logic Modules Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 8-23

Chapter 8: Combinational Logic Modules

Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 8-28

A 1-to-4 DeMultiplexer Example

Gate-based 1-to-4 demultiplexers

Page 29: Chapter 8: Combinational Logic Modules - John Wiley … 8: Combinational Logic Modules Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 8-23

Chapter 8: Combinational Logic Modules

Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 8-29

An n-bit 1-to-4 DeMultiplexer Example

// an N-bit 1-to-4 demultiplexer using if ... else structureparameter N = 4; // default widthinput [1:0] select;input [N-1:0] in;output reg [N-1:0] y3, y2, y1, y0;

always @(select or in) begin if (select == 3) y3 = in; else y3 = {N{1'b0}};if (select == 2) y2 = in; else y2 = {N{1'b0}};if (select == 1) y1 = in; else y1 = {N{1'b0}};if (select == 0) y0 = in; else y0 = {N{1'b0}};

end

y37

y27

y17

y07

y3[3:0]

0

1

y2[3:0]

0

1

y1[3:0]

0

1

y0[3:0]

0

1

[0][1]

[1][0]

[0][1]

[0][1]

0000[3:0]

[3:0]

0000[3:0]

[3:0]

0000[3:0]

[3:0]

0000[3:0]

[3:0]y0[3:0][3:0]

y1[3:0][3:0]

y2[3:0][3:0]

y3[3:0][3:0]

in[3:0] [3:0]

select[1:0] [1:0]

Page 30: Chapter 8: Combinational Logic Modules - John Wiley … 8: Combinational Logic Modules Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 8-23

Chapter 8: Combinational Logic Modules

Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 8-30

The Second n-bit 1-to-4 DeMultiplexer Example

// an N-bit 1-to-4 demultiplexer with enable controlparameter N = 4; // Default width …output reg [N-1:0] y3, y2, y1, y0;always @(select or in or enable) begin

if (enable)beginif (select == 3) y3 = in; else y3 = {N{1'b0}};if (select == 2) y2 = in; else y2 = {N{1'b0}};if (select == 1) y1 = in; else y1 = {N{1'b0}};if (select == 0) y0 = in; else y0 = {N{1'b0}};

end else beginy3 = {N{1'b0}}; y2 = {N{1'b0}}; y1 = {N{1'b0}}; y0 = {N{1'b0}}; end

end

Page 31: Chapter 8: Combinational Logic Modules - John Wiley … 8: Combinational Logic Modules Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 8-23

Chapter 8: Combinational Logic Modules

Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 8-31

Syllabus

ObjectivesFundamentals of combinational logic modulesDecodersEncodersMultiplexersDemultiplexersComparators

Page 32: Chapter 8: Combinational Logic Modules - John Wiley … 8: Combinational Logic Modules Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 8-23

Chapter 8: Combinational Logic Modules

Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 8-32

Comparators

A 4-bit comparator

A 4-bit cascadable comparator block diagram

Page 33: Chapter 8: Combinational Logic Modules - John Wiley … 8: Combinational Logic Modules Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 8-23

Chapter 8: Combinational Logic Modules

Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 8-33

Types of Comparators

ComparatorCascadable comparator

Page 34: Chapter 8: Combinational Logic Modules - John Wiley … 8: Combinational Logic Modules Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 8-23

Chapter 8: Combinational Logic Modules

Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 8-34

Comparators

An 8-bit comparator

Q: What will happen if you set the input value (010) at the rightmost end to other values?

Page 35: Chapter 8: Combinational Logic Modules - John Wiley … 8: Combinational Logic Modules Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 8-23

Chapter 8: Combinational Logic Modules

Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 8-35

A Simple Comparator Example

// an N-bit comparator module exampleparameter N = 4; // default size input [N-1:0] a, b;output cgt, clt, ceq;

assign cgt = (a > b);assign clt = (a < b);assign ceq = (a == b);

ceq =

cgt <

clt <

[3:0]

[3:0]

[3:0]

[3:0]

[3:0]

[3:0]

ceq

clt

cgt

b[3:0] [3:0]

a[3:0] [3:0]

Page 36: Chapter 8: Combinational Logic Modules - John Wiley … 8: Combinational Logic Modules Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 8-23

Chapter 8: Combinational Logic Modules

Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008~2010, John Wiley 8-36

A Cascadable Comparator Example

parameter N = 4; // I/O port declarationsinput Iagtb, Iaeqb, Ialtb;input [N-1:0] a, b;output Oagtb, Oaeqb, Oaltb;

// dataflow modeling using relation operatorsassign Oaeqb = (a == b) && (Iaeqb == 1); // =assign Oagtb = (a > b) || ((a == b)&& (Iagtb == 1)); // >assign Oaltb = (a < b) || ((a == b)&& (Ialtb == 1)); // <

un1_Oaeqb =

un1_Oagtb <

un1_Oaltb <

Oaeqb

un2_Oagtb

un2_Oaltb

Oagtb

Oaltb

[3:0]

[3:0]

[3:0]

[3:0]

[3:0]

[3:0]

Ialtb

Iaeqb

Iagtb

b[3:0] [3:0]

a[3:0] [3:0]

Oaltb

Oaeqb

Oagtb