coe 405 vhdl basics dr. aiman h. el-maleh computer engineering department king fahd university of...

29
COE 405 COE 405 VHDL Basics VHDL Basics Dr. Aiman H. El-Maleh Computer Engineering Department King Fahd University of Petroleum & Minerals

Upload: karlie-gaisford

Post on 14-Dec-2015

222 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: COE 405 VHDL Basics Dr. Aiman H. El-Maleh Computer Engineering Department King Fahd University of Petroleum & Minerals Dr. Aiman H. El-Maleh Computer Engineering

COE 405COE 405 VHDL Basics VHDL Basics

COE 405COE 405 VHDL Basics VHDL Basics

Dr. Aiman H. El-Maleh

Computer Engineering Department

King Fahd University of Petroleum & Minerals

Dr. Aiman H. El-Maleh

Computer Engineering Department

King Fahd University of Petroleum & Minerals

Page 2: COE 405 VHDL Basics Dr. Aiman H. El-Maleh Computer Engineering Department King Fahd University of Petroleum & Minerals Dr. Aiman H. El-Maleh Computer Engineering

2-2

OutlineOutlineOutlineOutline

VHDL Terms Design Entity Design Architecture VHDL model of full adder circuit

• Behavioral model

• Structural model

VHDL model of 1’s count circuit• Behavioral model

• Structural model

VHDL Terms Design Entity Design Architecture VHDL model of full adder circuit

• Behavioral model

• Structural model

VHDL model of 1’s count circuit• Behavioral model

• Structural model

Page 3: COE 405 VHDL Basics Dr. Aiman H. El-Maleh Computer Engineering Department King Fahd University of Petroleum & Minerals Dr. Aiman H. El-Maleh Computer Engineering

2-3

VHDL Terms …VHDL Terms …VHDL Terms …VHDL Terms …

Entity: • All designs are expressed in terms of entities • Basic building block in a design

Ports: • Provide the mechanism for a device to communication with its

environment• Define the names, types, directions, and possible default values for

the signals in a component's interface Architecture:

• All entities have an architectural description• Describes the behavior of the entity• A single entity can have multiple architectures (behavioral,

structural, …etc) Configuration:

• A configuration statement is used to bind a component instance to an entity-architecture pair.

• Describes which behavior to use for each entity

Entity: • All designs are expressed in terms of entities • Basic building block in a design

Ports: • Provide the mechanism for a device to communication with its

environment• Define the names, types, directions, and possible default values for

the signals in a component's interface Architecture:

• All entities have an architectural description• Describes the behavior of the entity• A single entity can have multiple architectures (behavioral,

structural, …etc) Configuration:

• A configuration statement is used to bind a component instance to an entity-architecture pair.

• Describes which behavior to use for each entity

Page 4: COE 405 VHDL Basics Dr. Aiman H. El-Maleh Computer Engineering Department King Fahd University of Petroleum & Minerals Dr. Aiman H. El-Maleh Computer Engineering

2-4

… … VHDL Terms …VHDL Terms …… … VHDL Terms …VHDL Terms …

Generic:• A parameter that passes information to an entity

• Example: for a gate-level model with rise and fall delay, values for the rise and fall delays passed as generics

Process:• Basic unit of execution in VHDL

• All operations in a VHDL description are broken into single or multiple processes

• Statements inside a process are processed sequentially

Package:• A collection of common declarations, constants, and/or

subprograms to entities and architectures.

Generic:• A parameter that passes information to an entity

• Example: for a gate-level model with rise and fall delay, values for the rise and fall delays passed as generics

Process:• Basic unit of execution in VHDL

• All operations in a VHDL description are broken into single or multiple processes

• Statements inside a process are processed sequentially

Package:• A collection of common declarations, constants, and/or

subprograms to entities and architectures.

Page 5: COE 405 VHDL Basics Dr. Aiman H. El-Maleh Computer Engineering Department King Fahd University of Petroleum & Minerals Dr. Aiman H. El-Maleh Computer Engineering

2-5

VHDL Terms …VHDL Terms …VHDL Terms …VHDL Terms …

Attribute:• Data attached to VHDL objects or predefined data about

VHDL objects

• Examples: • maximum operation temperature of a device• Current drive capability of a buffer

VHDL is NOT Case-Sensitive • Begin = begin = beGiN

Semicolon “ ; ” terminates declarations or statements. After a double minus sign (--) the rest of the line is

treated as a comment

Attribute:• Data attached to VHDL objects or predefined data about

VHDL objects

• Examples: • maximum operation temperature of a device• Current drive capability of a buffer

VHDL is NOT Case-Sensitive • Begin = begin = beGiN

Semicolon “ ; ” terminates declarations or statements. After a double minus sign (--) the rest of the line is

treated as a comment

Page 6: COE 405 VHDL Basics Dr. Aiman H. El-Maleh Computer Engineering Department King Fahd University of Petroleum & Minerals Dr. Aiman H. El-Maleh Computer Engineering

2-6

VHDL Models …VHDL Models …VHDL Models …VHDL Models …

Page 7: COE 405 VHDL Basics Dr. Aiman H. El-Maleh Computer Engineering Department King Fahd University of Petroleum & Minerals Dr. Aiman H. El-Maleh Computer Engineering

2-7

… … VHDL ModelsVHDL Models… … VHDL ModelsVHDL Models

PACKAGE DECLARATION

PACKAGEBODY

(often used functions, constants, components, …. )

ENTITY(interface description)

ARCHITECTURE(functionality)

CONFIGURATION(connection entity architecture)

Page 8: COE 405 VHDL Basics Dr. Aiman H. El-Maleh Computer Engineering Department King Fahd University of Petroleum & Minerals Dr. Aiman H. El-Maleh Computer Engineering

2-8

Design Entity …Design Entity …Design Entity …Design Entity …

In VHDL, the name of the system is the same as the name of its entity.

Entity comprises two parts:• parametersparameters of the system as seen from outside such as bus-

width of a processor or max clock frequency

• connectionsconnections which are transferring information to and from the system (system’s inputs and outputs)

All parameters are declared as generics and are passed on to the body of the system

Connections, which carry data to and from the system, are called ports. They form the second part of the entity.

In VHDL, the name of the system is the same as the name of its entity.

Entity comprises two parts:• parametersparameters of the system as seen from outside such as bus-

width of a processor or max clock frequency

• connectionsconnections which are transferring information to and from the system (system’s inputs and outputs)

All parameters are declared as generics and are passed on to the body of the system

Connections, which carry data to and from the system, are called ports. They form the second part of the entity.

Page 9: COE 405 VHDL Basics Dr. Aiman H. El-Maleh Computer Engineering Department King Fahd University of Petroleum & Minerals Dr. Aiman H. El-Maleh Computer Engineering

2-9

Illustration of an EntityIllustration of an EntityIllustration of an EntityIllustration of an Entity

Din1 Din2 Din3 Din4 Din5 Din6 Din7 Din8

CLK

Dout1 Dout2 Dout3 Dout4 Dout5 Dout6 Dout7 Dout8

8-bit registerfmax = 50MHz

entity Eight_bit_register is

parameters

connections

end [entity] [Eight_bit_register]

CLK one-bit input

Page 10: COE 405 VHDL Basics Dr. Aiman H. El-Maleh Computer Engineering Department King Fahd University of Petroleum & Minerals Dr. Aiman H. El-Maleh Computer Engineering

2-10

Entity Examples …Entity Examples …Entity Examples …Entity Examples …

Entity FULLADDER is    

 -- Interface description of FULLADDER  

port (   A, B, C: in bit;            SUM, CARRY: out bit); end FULLADDER;

Entity FULLADDER is    

 -- Interface description of FULLADDER  

port (   A, B, C: in bit;            SUM, CARRY: out bit); end FULLADDER;

FULL ADDERABC

SUM

CARRY

Page 11: COE 405 VHDL Basics Dr. Aiman H. El-Maleh Computer Engineering Department King Fahd University of Petroleum & Minerals Dr. Aiman H. El-Maleh Computer Engineering

2-11

… … Entity ExamplesEntity Examples… … Entity ExamplesEntity Examples

Entity Register is  -- parameter: width of the register   generic (width: integer);   --input and output signals   port (  CLK, Reset: in bit;           D: in bit_vector(1 to width);           Q: out bit_vector(1 to width)); end Register;

Entity Register is  -- parameter: width of the register   generic (width: integer);   --input and output signals   port (  CLK, Reset: in bit;           D: in bit_vector(1 to width);           Q: out bit_vector(1 to width)); end Register;

D Q

CLK

Reset

width width

D Q

Page 12: COE 405 VHDL Basics Dr. Aiman H. El-Maleh Computer Engineering Department King Fahd University of Petroleum & Minerals Dr. Aiman H. El-Maleh Computer Engineering

2-12

… … Design EntityDesign Entity… … Design EntityDesign Entity

Architectural Specs

•Behavioral (Algorithmic , DataFlow)• Structural

A

B

ZName

Basic Modeling

Unit

Interface Specs

• Name

• Ports (In, Out, InOut)

• Attributes

DESIGN ENTITY

Page 13: COE 405 VHDL Basics Dr. Aiman H. El-Maleh Computer Engineering Department King Fahd University of Petroleum & Minerals Dr. Aiman H. El-Maleh Computer Engineering

2-13

Architecture Examples: Behavioral Architecture Examples: Behavioral DescriptionDescriptionArchitecture Examples: Behavioral Architecture Examples: Behavioral DescriptionDescription Entity FULLADDER is

  port (   A, B, C: in bit;            SUM, CARRY: out bit); end FULLADDER;

Architecture CONCURRENT of FULLADDER is begin   SUM <= A xor B xor C after 5 ns;   CARRY <= (A and B) or (B and C) or (A and C) after 3 ns; end CONCURRENT;

Entity FULLADDER is   port (   A, B, C: in bit;            SUM, CARRY: out bit); end FULLADDER;

Architecture CONCURRENT of FULLADDER is begin   SUM <= A xor B xor C after 5 ns;   CARRY <= (A and B) or (B and C) or (A and C) after 3 ns; end CONCURRENT;

Page 14: COE 405 VHDL Basics Dr. Aiman H. El-Maleh Computer Engineering Department King Fahd University of Petroleum & Minerals Dr. Aiman H. El-Maleh Computer Engineering

2-14

Architecture Examples: Structural Architecture Examples: Structural Description …Description …Architecture Examples: Structural Architecture Examples: Structural Description …Description … architecture STRUCTURAL of FULLADDER is

  signal S1, C1, C2 : bit;   component HA     port (I1, I2 : in bit; S, C : out bit);   end component;   component OR     port (I1, I2 : in bit; X : out bit);   end component; begin   INST_HA1 : HA port map (I1 => B, I2 => C, S => S1, C => C1);   INST_HA2 : HA     port map (I1 => A, I2 => S1, S => SUM, C => C2);   INST_OR : OR  port map (I1 => C2, I2 => C1, X => CARRY); end STRUCTURAL;

architecture STRUCTURAL of FULLADDER is   signal S1, C1, C2 : bit;   component HA     port (I1, I2 : in bit; S, C : out bit);   end component;   component OR     port (I1, I2 : in bit; X : out bit);   end component; begin   INST_HA1 : HA port map (I1 => B, I2 => C, S => S1, C => C1);   INST_HA2 : HA     port map (I1 => A, I2 => S1, S => SUM, C => C2);   INST_OR : OR  port map (I1 => C2, I2 => C1, X => CARRY); end STRUCTURAL;

I1 S

HAI2 C

I1 S

HAI2 C I1

ORI2 x

A

C

B

CARRY

SUM

S1

C1

C2

Page 15: COE 405 VHDL Basics Dr. Aiman H. El-Maleh Computer Engineering Department King Fahd University of Petroleum & Minerals Dr. Aiman H. El-Maleh Computer Engineering

2-15

… … Architecture Examples: Structural Architecture Examples: Structural DescriptionDescription… … Architecture Examples: Structural Architecture Examples: Structural DescriptionDescription

Entity HA is

PORT (I1, I2 : in bit; S, C : out bit);

end HA ;

Architecture behavior of HA is

begin

S <= I1 xor I2;

C <= I1 and I2;

end behavior;

Entity OR is

PORT (I1, I2 : in bit; X : out bit);

end OR ;Architecture behavior of OR is

begin

X <= I1 or I2;

end behavior;

Page 16: COE 405 VHDL Basics Dr. Aiman H. El-Maleh Computer Engineering Department King Fahd University of Petroleum & Minerals Dr. Aiman H. El-Maleh Computer Engineering

2-16

One Entity Many DescriptionsOne Entity Many DescriptionsOne Entity Many DescriptionsOne Entity Many Descriptions

A system (an entity) can be specified with different architectures

A system (an entity) can be specified with different architectures

Entity

ArchitectureA

ArchitectureB

ArchitectureC

ArchitectureD

Page 17: COE 405 VHDL Basics Dr. Aiman H. El-Maleh Computer Engineering Department King Fahd University of Petroleum & Minerals Dr. Aiman H. El-Maleh Computer Engineering

2-17

Example: Ones Count CircuitExample: Ones Count CircuitExample: Ones Count CircuitExample: Ones Count Circuit

Value of C1 C0 = No. of ones in the inputs A2, A1, and A0

• C1 is the Majority Function ( =1 iff two or more inputs =1)

• C0 is a 3-Bit Odd-Parity Function (OPAR3))

• C1 = A1 A0 + A2 A0 + A2 A1

• C0 = A2 A1’ A0’ + A2’ A1 A0’ + A2’ A1’ A0 + A2 A1 A0

Value of C1 C0 = No. of ones in the inputs A2, A1, and A0

• C1 is the Majority Function ( =1 iff two or more inputs =1)

• C0 is a 3-Bit Odd-Parity Function (OPAR3))

• C1 = A1 A0 + A2 A0 + A2 A1

• C0 = A2 A1’ A0’ + A2’ A1 A0’ + A2’ A1’ A0 + A2 A1 A0

A0

A2

C0

A1

C1

Page 18: COE 405 VHDL Basics Dr. Aiman H. El-Maleh Computer Engineering Department King Fahd University of Petroleum & Minerals Dr. Aiman H. El-Maleh Computer Engineering

2-18

1

2

3

Ones Count Circuit Interface Ones Count Circuit Interface SpecificationSpecificationOnes Count Circuit Interface Ones Count Circuit Interface SpecificationSpecification

entity ONES_CNT is

port ( A : in BIT_VECTOR(2 downto 0);

C : out BIT_VECTOR(1 downto 0));

-- Function Documentation of ONES_CNT-- (Truth Table Form)-- ____________________-- | A2 A1 A0 | C1 C0 |-- |-----------------|------------- |-- | 0 0 0 | 0 0 | -- | 0 0 1 | 0 1 | -- | 0 1 0 | 0 1 | -- | 0 1 1 | 1 0 | -- | 1 0 0 | 0 1 | -- | 1 0 1 | 1 0 | -- | 1 1 0 | 1 0 | -- | 1 1 1 | 1 1 | -- |__________ |________|end ONES_CNT;

DOCUMENTATION

Page 19: COE 405 VHDL Basics Dr. Aiman H. El-Maleh Computer Engineering Department King Fahd University of Petroleum & Minerals Dr. Aiman H. El-Maleh Computer Engineering

2-19

Ones Count Circuit Architectural Ones Count Circuit Architectural Body: Behavioral (Truth Table)Body: Behavioral (Truth Table)Ones Count Circuit Architectural Ones Count Circuit Architectural Body: Behavioral (Truth Table)Body: Behavioral (Truth Table)Architecture Truth_Table of ONES_CNT is

begin Process(A) -- Sensitivity List Contains only Vector A

begin

CASE A is WHEN "000" => C <= "00"; WHEN "001" => C <= "01"; WHEN "010" => C <= "01"; WHEN "011" => C <= "10"; WHEN "100" => C <= "01"; WHEN "101" => C <= "10"; WHEN "110" => C <= "10"; WHEN "111" => C <= "11";

end CASE;end process;

end Truth_Table;

Architecture Truth_Table of ONES_CNT is

begin Process(A) -- Sensitivity List Contains only Vector A

begin

CASE A is WHEN "000" => C <= "00"; WHEN "001" => C <= "01"; WHEN "010" => C <= "01"; WHEN "011" => C <= "10"; WHEN "100" => C <= "01"; WHEN "101" => C <= "10"; WHEN "110" => C <= "10"; WHEN "111" => C <= "11";

end CASE;end process;

end Truth_Table;

Page 20: COE 405 VHDL Basics Dr. Aiman H. El-Maleh Computer Engineering Department King Fahd University of Petroleum & Minerals Dr. Aiman H. El-Maleh Computer Engineering

2-20

Ones Count Circuit Architectural Ones Count Circuit Architectural Body: Behavioral (Algorithmic)Body: Behavioral (Algorithmic)Ones Count Circuit Architectural Ones Count Circuit Architectural Body: Behavioral (Algorithmic)Body: Behavioral (Algorithmic)Architecture Algorithmic of ONES_CNT isbegin Process(A) -- Sensitivity List Contains only Vector A

Variable num: INTEGER range 0 to 3;

beginnum :=0;For i in 0 to 2 Loop

IF A(i) = '1' then num := num+1;

end if;end Loop;

---- Transfer "num" Variable Value to a SIGNAL--

CASE num isWHEN 0 => C <= "00";WHEN 1 => C <= "01";WHEN 2 => C <= "10";WHEN 3 => C <= "11";

end CASE;end process;

end Algorithmic;

Architecture Algorithmic of ONES_CNT isbegin Process(A) -- Sensitivity List Contains only Vector A

Variable num: INTEGER range 0 to 3;

beginnum :=0;For i in 0 to 2 Loop

IF A(i) = '1' then num := num+1;

end if;end Loop;

---- Transfer "num" Variable Value to a SIGNAL--

CASE num isWHEN 0 => C <= "00";WHEN 1 => C <= "01";WHEN 2 => C <= "10";WHEN 3 => C <= "11";

end CASE;end process;

end Algorithmic;

Page 21: COE 405 VHDL Basics Dr. Aiman H. El-Maleh Computer Engineering Department King Fahd University of Petroleum & Minerals Dr. Aiman H. El-Maleh Computer Engineering

2-21

Ones Count Circuit Architectural Ones Count Circuit Architectural Body: Behavioral (Data Flow)Body: Behavioral (Data Flow)Ones Count Circuit Architectural Ones Count Circuit Architectural Body: Behavioral (Data Flow)Body: Behavioral (Data Flow)• C1 = A1 A0 + A2 A0 + A2 A1• C0 = A2 A1’ A0’ + A2’ A1 A0’ + A2’ A1’ A0 + A2 A1 A0

Architecture Dataflow of ONES_CNT isbegin

C(1) <=(A(1) and A(0)) or (A(2) and A(0)) or (A(2) and A(1));

C(0) <= (A(2) and not A(1) and not A(0)) or (not A(2) and A(1) and not A(0)) or (not A(2) and not A(1) and A(0)) or (A(2) and A(1) and A(0));

end Dataflow;

• C1 = A1 A0 + A2 A0 + A2 A1• C0 = A2 A1’ A0’ + A2’ A1 A0’ + A2’ A1’ A0 + A2 A1 A0

Architecture Dataflow of ONES_CNT isbegin

C(1) <=(A(1) and A(0)) or (A(2) and A(0)) or (A(2) and A(1));

C(0) <= (A(2) and not A(1) and not A(0)) or (not A(2) and A(1) and not A(0)) or (not A(2) and not A(1) and A(0)) or (A(2) and A(1) and A(0));

end Dataflow;

Page 22: COE 405 VHDL Basics Dr. Aiman H. El-Maleh Computer Engineering Department King Fahd University of Petroleum & Minerals Dr. Aiman H. El-Maleh Computer Engineering

2-22

Ones Count Circuit Architectural Ones Count Circuit Architectural Body: Structural …Body: Structural …Ones Count Circuit Architectural Ones Count Circuit Architectural Body: Structural …Body: Structural … C1 = A1 A0 + A2 A0 + A2 A1 = MAJ3(A) C0 = A2 A1’ A0’ + A2’ A1 A0’ + A2’ A1’ A0 + A2 A1 A0

= OPAR3(A)

C1 = A1 A0 + A2 A0 + A2 A1 = MAJ3(A) C0 = A2 A1’ A0’ + A2’ A1 A0’ + A2’ A1’ A0 + A2 A1 A0

= OPAR3(A)

ONES_CNT

C1

Majority Fun

C0

Odd-Parity Fun

AND2 NAND3OR3 NAND4

Structural Design Hierarchy

INV

Page 23: COE 405 VHDL Basics Dr. Aiman H. El-Maleh Computer Engineering Department King Fahd University of Petroleum & Minerals Dr. Aiman H. El-Maleh Computer Engineering

2-23

Ones Count Circuit Architectural Ones Count Circuit Architectural Body: Structural …Body: Structural …Ones Count Circuit Architectural Ones Count Circuit Architectural Body: Structural …Body: Structural … Entity MAJ3 is

PORT( X: in BIT_Vector(2 downto 0);

Z: out BIT);

end MAJ3;

Entity OPAR3 is

PORT( X: in BIT_Vector(2 downto 0);

Z: out BIT);

end OPAR3;

Entity MAJ3 is

PORT( X: in BIT_Vector(2 downto 0);

Z: out BIT);

end MAJ3;

Entity OPAR3 is

PORT( X: in BIT_Vector(2 downto 0);

Z: out BIT);

end OPAR3;

Page 24: COE 405 VHDL Basics Dr. Aiman H. El-Maleh Computer Engineering Department King Fahd University of Petroleum & Minerals Dr. Aiman H. El-Maleh Computer Engineering

2-24

VHDL Structural Description of VHDL Structural Description of Majority Function …Majority Function …VHDL Structural Description of VHDL Structural Description of Majority Function …Majority Function …

G1

G3

G2

x(0)x(1)

x(0)x(2)

x(1)x(2)

G4

A2

A1

A3

Z

Maj3Majority Function

Architecture Structural of MAJ3 is

Component AND2

PORT( I1, I2: in BIT; O: out BIT);

end Component ;

Component OR3

PORT( I1, I2, I3: in BIT; O: out BIT);

end Component ;

Declare ComponentsTo be Instantiated

Page 25: COE 405 VHDL Basics Dr. Aiman H. El-Maleh Computer Engineering Department King Fahd University of Petroleum & Minerals Dr. Aiman H. El-Maleh Computer Engineering

2-25

VHDL Structural Description of VHDL Structural Description of Majority FunctionMajority FunctionVHDL Structural Description of VHDL Structural Description of Majority FunctionMajority Function

SIGNAL A1, A2, A3: BIT; Declare Maj3 Local Signals

begin

-- Instantiate Gates

g1: AND2 PORT MAP (X(0), X(1), A1);

g2: AND2 PORT MAP (X(0), X(2), A2);

g3: AND2 PORT MAP (X(1), X(2), A3);

g4: OR3 PORT MAP (A1, A2, A3, Z);

end Structural;

SIGNAL A1, A2, A3: BIT; Declare Maj3 Local Signals

begin

-- Instantiate Gates

g1: AND2 PORT MAP (X(0), X(1), A1);

g2: AND2 PORT MAP (X(0), X(2), A2);

g3: AND2 PORT MAP (X(1), X(2), A3);

g4: OR3 PORT MAP (A1, A2, A3, Z);

end Structural;

Wiring ofMaj3 Components

Page 26: COE 405 VHDL Basics Dr. Aiman H. El-Maleh Computer Engineering Department King Fahd University of Petroleum & Minerals Dr. Aiman H. El-Maleh Computer Engineering

2-26

VHDL Structural Description of Odd VHDL Structural Description of Odd Parity Function …Parity Function …VHDL Structural Description of Odd VHDL Structural Description of Odd Parity Function …Parity Function …

g3

g4

Z1

Z2

Z3

Z4

Z

g1 g2

x(0) A0B x(1) A1B

x(2) A2BX(2)

A1B

X(0)A1B g5

g6

g7

A0B

A2B

X(0)X(1)

X(2)

X(1)A2B

A0B

C0 Odd-Parity

(OPAR3)

g8

Architecture Structural of OPAR3 is

Component INV

PORT( I: in BIT; O: out BIT);

end Component ;

Component NAND3

PORT( I1, I2, I3: in BIT;

O: out BIT);

end Component ;

Component NAND4

PORT( I1, I2, I3, I4: in BIT; O: out BIT);

end Component ;

Page 27: COE 405 VHDL Basics Dr. Aiman H. El-Maleh Computer Engineering Department King Fahd University of Petroleum & Minerals Dr. Aiman H. El-Maleh Computer Engineering

2-27

VHDL Structural Description of Odd VHDL Structural Description of Odd Parity FunctionParity FunctionVHDL Structural Description of Odd VHDL Structural Description of Odd Parity FunctionParity Function

SIGNAL A0B, A1B, A2B, Z1, Z2, Z3, Z4: BIT;

begin

g1: INV PORT MAP (X(0), A0B);

g2: INV PORT MAP (X(1), A1B);

g3: INV PORT MAP (X(2), A2B);

g4: NAND3 PORT MAP (X(2), A1B, A0B, Z1);

g5: NAND3 PORT MAP (X(0), A1B, A2B, Z2);

g6: NAND3 PORT MAP (X(0), X(1), X(2), Z3);

g7: NAND3 PORT MAP (X(1), A2B, A0B, Z4);

g8: NAND4 PORT MAP (Z1, Z2, Z3, Z4, Z);

end Structural;

SIGNAL A0B, A1B, A2B, Z1, Z2, Z3, Z4: BIT;

begin

g1: INV PORT MAP (X(0), A0B);

g2: INV PORT MAP (X(1), A1B);

g3: INV PORT MAP (X(2), A2B);

g4: NAND3 PORT MAP (X(2), A1B, A0B, Z1);

g5: NAND3 PORT MAP (X(0), A1B, A2B, Z2);

g6: NAND3 PORT MAP (X(0), X(1), X(2), Z3);

g7: NAND3 PORT MAP (X(1), A2B, A0B, Z4);

g8: NAND4 PORT MAP (Z1, Z2, Z3, Z4, Z);

end Structural;

Page 28: COE 405 VHDL Basics Dr. Aiman H. El-Maleh Computer Engineering Department King Fahd University of Petroleum & Minerals Dr. Aiman H. El-Maleh Computer Engineering

2-28

VHDL Top Structural Level of Ones VHDL Top Structural Level of Ones Count CircuitCount CircuitVHDL Top Structural Level of Ones VHDL Top Structural Level of Ones Count CircuitCount CircuitArchitecture Structural of ONES_CNT is

Component MAJ3

PORT( X: in BIT_Vector(2 downto 0); Z: out BIT);

END Component ;

Component OPAR3

PORT( X: in BIT_Vector(2 downto 0); Z: out BIT);

END Component ;

begin

-- Instantiate Components

c1: MAJ3 PORT MAP (A, C(1));

c2: OPAR3 PORT MAP (A, C(0));

end Structural;

Architecture Structural of ONES_CNT is

Component MAJ3

PORT( X: in BIT_Vector(2 downto 0); Z: out BIT);

END Component ;

Component OPAR3

PORT( X: in BIT_Vector(2 downto 0); Z: out BIT);

END Component ;

begin

-- Instantiate Components

c1: MAJ3 PORT MAP (A, C(1));

c2: OPAR3 PORT MAP (A, C(0));

end Structural;

Page 29: COE 405 VHDL Basics Dr. Aiman H. El-Maleh Computer Engineering Department King Fahd University of Petroleum & Minerals Dr. Aiman H. El-Maleh Computer Engineering

2-29

VHDL Behavioral Definition of Lower VHDL Behavioral Definition of Lower Level Components Level ComponentsVHDL Behavioral Definition of Lower VHDL Behavioral Definition of Lower Level Components Level Components

Entity NAND2 is

PORT( I1, I2: in BIT;

O: out BIT);

end NAND2;

Architecture behavior of NAND2 is

begin

O <= not (I1 and I2);

end behavior;

Entity INV is

PORT( I: in BIT;

O: out BIT);

end INV;

Architecture behavior of INV is

begin

O <= not I;

end behavior;

Other Lower Level Gates Are Defined Similarly