moore’s law in microprocessors · vhdl standards p1076.3 standard vhdl synthesis packages...

260

Upload: others

Post on 06-Jul-2020

9 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application
Page 2: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application
Page 3: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Moore’s Law in Microprocessors

1000

P610

100(M

T)

2X growth in 1.96 years!

286386

486Pentium® proc

P6

0 1

1

nsi

sto

rs

80088080

8085 8086286

0.01

0.1

Tran

40048008

0.001

1970 1980 1990 2000 2010YCourtesy Intel YearCourtesy, Intel

Transistors on Lead Microprocessors double every 2 years

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 4: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Productivity Trendsy

10,000,000 100,000,00010,000(M)

100,000

100,000

1,000,000

1,000,000

10,000,000Logic Tr./ChipTr./Staff Month.

1,000

100

r p

er C

hip

1,000

10,000

ty f -M

o.

xity

1,000

10,000

10,000

100,00058%/Yr. compoundedComplexity growth rate

10

1

Tra

nsi

sto

r

10

100

Pro

du

ctiv

itTr

ans.

/Sta

ff

Co

mp

lex

10

100

100

1,000x

xx

xxx

x

21%/Yr. compoundProductivity growth rate

x0.1

0.01

0 001

Lo

gic

0 01

0.1

1

P(K

) T

1

2003

1981

1983

1985

1987

1989

1991

1993

1995

1997

1999

2001

2005

2007

2009

100.001 0.01

S S t hCourtesy ITRS Roadmap Source: Sematech

Complexity outpaces design productivity

Courtesy, ITRS Roadmap

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 5: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Abstraction Drives Design Productivityg y

SimulationSource Implementation

Algorithmic C++Algorithmic C++Algorithmic C++Algorithmic C++ 10,000x (1 min) 20x (2 days!!)Functional

Untimed TLM SystemCUntimed TLM SystemCUntimed TLM SystemCUntimed TLM SystemC 1,000xStructural

Timed TLM SystemCTimed TLM SystemCTimed TLM SystemCTimed TLM SystemC 100xTransaction

Cycle Accurate SystemCCycle Accurate SystemCCycle Accurate SystemCCycle Accurate SystemC 10x 2x (2 weeks)Cycle

RTLRTLRTLRTL 1x (7 days) 1x (5 weeks)RTL

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 6: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Design Languages & Tasksg g g

R i tR i t Text / UMLText / UMLRequirementsRequirements

AlgorithmAlgorithmExplorationExploration

Text / UMLText / UML

ExplorationExploration

Architecture Architecture AnalysisAnalysis TransactionTransaction

LevelLevel

C/C++C/C++UntimedUntimedSystemCSystemC

VerificationVerification

LevelLevelSystemCSystemCBlueSpecBlueSpec

BlueSpecBlueSpecSystemSystem

RTL D iRTL D i

VHDLVHDLVerilogVerilog

AssertionsAssertionsPSL/SVAPSL/SVA

SystemSystemVerilogVerilog

LanguageLanguageTaskTask

RTL DesignRTL Design

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

LanguageLanguageTaskTask

Page 7: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Gajski’s & Khun’s Y-chartj

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 8: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

VHDL

VHDL is a language for describing digital hardware used by industry worldwide

–VHDL is an acronym for VHSIC (Very High Speed y ( y g p

Integrated Circuit) Hardware Description Language

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 9: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Advantages of VHDLg

Technology/vendor independent

P t bl Portable

Reusable Reusable

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 10: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Genesis of VHDL

State of art circa 1980

– Multiple design entry methods and h d d i ti l i

State of art circa 1980

hardware description languages in use– No or limited portability of designs b t CAD t l f diff t dbetween CAD tools from different vendors

– Objective: shortening the time from a design concept to implementation fromconcept to implementation from18 months to 6 months

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 11: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

History of VHDLy

June 1981: Woods Hole WorkshopJune 1981: Woods Hole Workshop July 1983: contract awarded to develop VHDL

Intermetrics– Intermetrics– IBM

T I t t– Texas Instruments

August 1985: VHDL Version 7.2 released December 1987:

VHDL became IEEE Standard 1076-1987 and in 1988 an ANSI standard

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 12: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

VHDL Standards

P1076 Standard VHDL Language Reference Manual (VASG)

VHDL 87 VHDL 93 VHDL 01 VHDL 08VHDL-87, VHDL-93, VHDL-01, VHDL-08 P1076.1 Standard VHDL Analog and Mixed-Signal

Extensions (VHDL AMS)Extensions (VHDL-AMS) P1076.1.1 Standard VHDL Analog and Mixed-Signal

Extensions - Packages for Multiple Energy DomainExtensions - Packages for Multiple Energy Domain Support (StdPkgs) - this group is now part of 1076.1

P1076.2 IEEE Standard VHDL Mathematical PackagesP1076.2 IEEE Standard VHDL Mathematical Packages (math)

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 13: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

VHDL Standards

P1076.3 Standard VHDL Synthesis Packages (vhdlsynth)P1076 4 St d d VITAL ASIC (A li ti S ifi P1076.4 Standard VITAL ASIC (Application Specific Integrated Circuit) Modeling Specification (VITAL) - This group is now part of 1076group is now part of 1076.

P1164 Standard Multivalue Logic System for VHDL Model Interoperability (Std logic 1164) (vhdl-std-logic) ode e ope ab y (S d_ og c_ 6 ) ( d s d og c)

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 14: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

VHDL vs Verilogg

Government Commercially Developed Developed

Ada based C basedAda based C based

St l T C t Mildl T C tStrongly Type Cast Mildly Type Cast

Difficult to learn Easier to Learn

More Powerful Less Powerful

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 15: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

VHDL Subsets

VHDL for Specification

VHDL for Simulation

VHDL for SynthesisVHDL for Synthesis

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 16: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Design Flowg

SpecificationDesign and implement a simple unit permitting to speed up encryption with RC5-similar cipher with fixed key set on 8031 microcontroller. Unlike in the experiment 5, this time your unit has to be able to perform an encryption algorithm by itself, executing 32 rounds…..

VHDL description

Library IEEE;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;

entity RC5_core isport(

clock, reset, encr_decr: in std_logic;d t i t i td l i t (31 d t 0)

Functional simulationdata_input: in std_logic_vector(31 downto 0);data_output: out std_logic_vector(31 downto 0);out_full: in std_logic;key_input: in std_logic_vector(31 downto 0);key_read: out std_logic;

);end AES_core;

Synthesis Post-synthesis simulationSynthesis

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 17: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Design Flowg

Implementation(M i Pl i & R i )(Mapping, Placing & Routing)

Timing simulation

Configuration

On chip testingOn chip testing

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 18: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

EDA Tools

ModelSim – www.model.com, www.mentor.com

ModelSim Xilinx Edition – www.xilinx.com

Leonardo Spectrum – www.mentor.com

Xilinx ISE – www.xilinx.com

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 19: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Translating Code into Circuitsg

VHDL description Circuit netlistarchitecture MLU_DATAFLOW of MLU is

signal A1:STD_LOGIC;signal B1:STD LOGIC;

C cu t et st

signal B1:STD_LOGIC;signal Y1:STD_LOGIC;signal MUX_0, MUX_1, MUX_2, MUX_3: STD_LOGIC;

beginA1<=A when (NEG_A='0') else

not A;B1<=B when (NEG_B='0') else

not B;Y<=Y1 when (NEG_Y='0') else

not Y1;

MUX_0<=A1 and B1;MUX_1<=A1 or B1;MUX_2<=A1 xor B1;MUX_3<=A1 xnor B1;

with (L1 & L0) selectwith (L1 & L0) selectY1<=MUX_0 when "00",

MUX_1 when "01",MUX_2 when "10",MUX_3 when others;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

end MLU_DATAFLOW;

Page 20: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

VHDL Design Stylesg y

VHDL DesignVHDL Design Styles

structuraldataflow behavioral

Components andi t t

structuraldataflow

Concurrent

behavioral

Sequential statementsinterconnectsstatements • Registers

• State machines• Test benchesTest benches

Subset most suitable for synthesisMicroprocessors & Digital Systems Laboratory

© 2009 National Technical University of Athens

Subset most suitable for synthesis

Page 21: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Dataflow Description

Describes how data moves through the system and the various processing steps. D t Fl i f t t t t t Data Flow uses series of concurrent statements to realize logic. Concurrent statements are evaluated at the same time; thus order of these statements doesn’tsame time; thus, order of these statements doesn t matter.

Data Flow is most useful style when series of Boolean a a o s os use u s y e e se es o oo eaequations can represent a logic.

Data Flow describes best combinational logic. g

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 22: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Structural Description

Structural design is the simplest to understand. This style is the closest to schematic capture and utilizes simple building blocks to compose logic functionssimple building blocks to compose logic functions.

Components are interconnected in a hierarchical mannermanner.

Structural descriptions may connect simple gates or complex, abstract components.co p e , abs ac co po e s

Structural style is useful when expressing a design that is naturally composed of sub-blocks.y p

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 23: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Behavioral Description

It accurately models what happens on the inputs and outputs of the black box (no matter what is inside and how it works)how it works).

This style uses PROCESS and sequential statements to realize logic which are executed one after the other likerealize logic, which are executed one after the other, like in most programming languages.

Behavioral descriptions describe best sequential logic.e a o a desc p o s desc be bes seque a og c

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 24: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Naming and Labelingg g

VHDL is not case sensitiveExample:

Names or labelsdatabus

Databus

DataBus

DATABUS

are all equivalent

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 25: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Naming and Labelingg g

General rules of thumb (according to VHDL-( g87)

1 All names should start with an alphabet character (a-z1. All names should start with an alphabet character (a z or A-Z)

2. Use only alphabet characters (a-z or A-Z) digits (0-9) and underscore (_)

3. Do not use any punctuation or reserved characters within a name (! ? & + etc )within a name (!, ?, ., &, +, -, etc.)

4. Do not use two or more consecutive underscore characters ( ) within a name (e.g., Sel A is invalid)characters (__) within a name (e.g., Sel__A is invalid)

5. All names and labels in a given entity and architecture must be unique

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 26: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Free Format

VHDL is a “free format” languageVHDL is a free format languageNo formatting conventions, such as spacing or

indentation imposed by VHDL compilers Spaceindentation imposed by VHDL compilers. Space and carriage return treated the same way.Example:Example:

if (a=b) then

orif (a=b) then

orif (if (a =

b) then

are all equivalent

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

q

Page 27: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Comments

Comments in VHDL are indicated with a “double dash”, i.e., “--”

Comment indicator can be placed anywhere in the liline

Any text that follows in the same line is treated asa commenta comment Carriage return terminates a comment No method for commenting a block extending over No method for commenting a block extending over

a couple of linesExamples:p-- main subcircuitData_in <= Data_bus; -- reading data from the input FIFO

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 28: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Design Entityg y

design entity

Design Entity most basicentity declaration Design Entity - most basic building block of a design.

entity declaration

One entity can have architecture 1

many different architectures.architecture 2

architecture 3

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 29: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Entity Declarationy

Entity Declaration describes the interface of th t i i t d t t tthe component, i.e. input and output ports.

Entity name Port names Port typeSemicolon

ENTITY nand_gate ISPORT(

a : IN STD_LOGIC;b : IN STD LOGIC; No Semicolonb : IN STD_LOGIC;z : OUT STD_LOGIC

);END nand_gate;

No Semicolon

Reserved words Port modes (data flow directions)

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 30: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Entity Declaration - Syntaxy y

ENTITY entity name ISENTITY entity_name ISPORT (

port_name : signal_mode signal_type;port_name : signal_mode signal_type;………….

t i l d i l t )port_name : signal_mode signal_type);END entity_name;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 31: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Architecture

Describes an implementation of a design entity. esc bes a p e e tat o o a des g e t ty Architecture example:

ARCHITECTURE model OF nand gate ISARCHITECTURE model OF nand_gate ISBEGIN

z <= a NAND b;z <= a NAND b;END model;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 32: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Architecture - Syntaxy

ARCHITECTURE architecture name OF entity name ISARCHITECTURE architecture_name OF entity_name IS[ declarations ]

BEGINBEGINcode

END architecture_name;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 33: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Entity Declaration & Architecturey

nand_gate.vhd

LIBRARY ieee;USE ieee.std_logic_1164.all;

ENTITY nand_gate ISPORT(

a : IN STD_LOGIC;b : IN STD_LOGIC;_z : OUT STD_LOGIC);

END nand_gate;

ARCHITECTURE model OF nand_gate ISBEGIN

z <= a NAND b;END model;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 34: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Port Mode In

EntityPort signal

a

Driver residesoutside the entity

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 35: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Port Mode Out

Entityy

Port signal

z

Can’t read out within an entityc

Driver resides

y

<inside the entity

c <= z

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 36: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Port Mode Out with Signalg

Entity

Port signal

y

x z

cSignal X can beread inside the entity

Driver resides z <= x

y

inside the entity c <= x

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 37: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Port Mode Inout

EntityyPort signal

Signal can bea

gread inside the entity

Driver may resideboth inside and outside

f th titMicroprocessors & Digital Systems Laboratory

© 2009 National Technical University of Athens

of the entity

Page 38: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Port Mode Buffer

Entityy

Port signal

z

Port signal Z can beread inside the entityc

Driver resides

y

c <= zinside the entity

c

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 39: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Port Modes

The Port Mode of the interface describes the direction in which data travels with respect to the component

– In: Data comes in this port and can only be read within the entity. It can appear only on the right side of a signal or variable assignment.

– Out: The value of an output port can only be updated within the entity. It cannot be read. It can only appear on the left side of a signalcannot be read. It can only appear on the left side of a signal assignment.

Inout: The value of a bi directional port can be read and updated within– Inout: The value of a bi-directional port can be read and updated within the entity model. It can appear on both sides of a signal assignment.

B ff U d f i l th t i t t f tit Th l f– Buffer: Used for a signal that is an output from an entity. The value of the signal can be used inside the entity, which means that in an assignment statement the signal can appear on the left and right sides

f th < t

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

of the <= operator

Page 40: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Library Declarationy

Use all definitions from the packagestd logic 1164

Library declarationstd_logic_1164

LIBRARY ieee;;USE ieee.std_logic_1164.all;

ENTITY nand_gate ISPORT(

a : IN STD_LOGIC;b : IN STD_LOGIC;z : OUT STD_LOGIC);

END nand_gate;

ARCHITECTURE model OF nand_gate ISBEGIN

z <= a NAND b;END model;END model;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 41: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Library Declaration - Syntaxy y

LIBRARY library_name;USE lib k k tUSE library_name.package_name.package_parts;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 42: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Parts of a Libraryy

LIBRARYLIBRARY

PACKAGE 1 PACKAGE 2

TYPES TYPESCONSTANTSFUNCTIONS

PROCEDURES

CONSTANTSFUNCTIONS

PROCEDURESPROCEDURESCOMPONENTS

PROCEDURESCOMPONENTS

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

ECE 545 Introduction to VHDL

Page 43: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Common Libraries

ieeeNeed to be explicitlydeclared

Specifies multi-level logic system,including STD_LOGIC, and STD LOGIC VECTOR d t tSTD_LOGIC_VECTOR data types.

stdSpecifies pre-defined data types(BIT, BOOLEAN, INTEGER, REAL, SIGNED UNSIGNED etc ) arithmetic

std

Visible by defaultSIGNED, UNSIGNED, etc.), arithmetic operations, basic type conversion functions, basic text i/o functions, etc.

C t d i ft il ti

work

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Current designs after compilation.

Page 44: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

STD_LOGIC

LIBRARY ieee;USE ieee.std_logic_1164.all;

ENTITY nand_gate ISPORT(

a : IN STD_LOGIC;b : IN STD_LOGIC;z : OUT STD_LOGIC);

END d tEND nand_gate;

ARCHITECTURE model OF nand_gate ISBEGIN

z <= a NAND b;z <= a NAND b;END model;

What is STD_LOGIC you ask?

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 45: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

STD_LOGIC Typey

Value MeaningValue Meaning

‘X’ Forcing (Strong driven) Unknown

‘0’ Forcing (Strong driven) 00 Forcing (Strong driven) 0

‘1’ Forcing (Strong driven) 1

‘Z’ High Impedance

‘W’ Weak (Weakly driven) Unknown

‘L’Weak (Weakly driven) 0.Models a pull down.

‘H’Weak (Weakly driven) 1. Models a p ll pModels a pull up.

‘-’ Don't Care

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 46: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

STD_LOGIC Meaningg

‘1’1‘X’

X

‘0’

Contention on the bus

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 47: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

STD_LOGIC Meaningg

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 48: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

STD_LOGIC Meaningg

VDDVDD

VDD

‘H’‘1’

‘0’

‘1’

‘L’

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 49: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

STD_LOGIC Meaningg

‘ ’‘-’

•Do not care.•Can be assigned to outputs for the case of invalid inputs(may produce significant improvement ininputs(may produce significant improvement in resource utilization after synthesis).•Use with caution‘1’ = ‘-’ give FALSEg

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 50: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Resolving Logic Levelsg g

X 0 1 Z W L H -X 0 1 Z W L H

X X X X X X X X X0 X 0 X 0 0 0 0 X1 X X 1 1 1 1 1 XZ X 0 1 Z W L H XZ X 0 1 Z W L H XW X 0 1 W W W W XL X 0 1 L W L W XL X 0 1 L W L W XH X 0 1 H W W H X- X X X X X X X X

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 51: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Wires and Buses

SIGNAL a : STD_LOGIC;_

a

wire

a

1

SIGNAL b : STD_LOGIC_VECTOR(7 DOWNTO 0);

b

bus8

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 52: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Standard Logic Vectorsg

SIGNAL a: STD_LOGIC;_ ;SIGNAL b: STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL c: STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL d: STD LOGIC VECTOR(7 DOWNTO 0);SIGNAL d: STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL e: STD_LOGIC_VECTOR(15 DOWNTO 0);SIGNAL f: STD LOGIC VECTOR(8 DOWNTO 0);_ _ ( );

……….a <= ‘1’;b < ”0000” Bi b d b d f ltb <= ”0000”; -- Binary base assumed by defaultc <= B”0000”; -- Binary base explicitly specifiedd <= ”0110 0111”; -- You can use ‘ ’ to increase readabilityd 0110_0111 ; You can use _ to increase readabilitye <= X”AF67”; -- Hexadecimal basef <= O”723”; -- Octal base

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 53: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Concatenation

SIGNAL a: STD LOGIC VECTOR(3 DOWNTO 0);_ _ ( )SIGNAL b: STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL c, d, e: STD_LOGIC_VECTOR(7 DOWNTO 0);

a <= ”0000”; b <= ”1111”; c <= a & b; -- c = ”00001111”;

d <= ‘0’ & ”0001111”; -- d <= ”00001111”

e <= ‘0’ & ‘0’ & ‘0’ & ‘0’ & ‘1’ & ‘1’ &‘1’ & ‘1’;

-- e <= ”00001111”e < 00001111

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 54: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

XOR3 Example

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 55: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Entity xor3y

ENTITY xor3 ISENTITY xor3 IS

PORT(

A : IN STD LOGIC;A : IN STD_LOGIC;

B : IN STD_LOGIC;

C : IN STD LOGIC;C : IN STD_LOGIC;

Result : OUT STD_LOGIC

););

end xor3;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 56: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Dataflow Architecture

ARCHITECTURE dataflow OF xor3 ISSIGNAL U1_out: STD_LOGIC;BEGIN

U1 t A XOR BU1_out <=A XOR B;Result <=U1_out XOR C;

END dataflow;END dataflow;

U1 tU1_out

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 57: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Structural Architecture

ARCHITECTURE structural OF xor3 ISSIGNAL U1_OUT: STD_LOGIC;

I1I2

Y

XOR2

COMPONENT xor2 ISPORT(

I1 : IN STD LOGIC;I1 : IN STD_LOGIC;I2 : IN STD_LOGIC;Y : OUT STD_LOGIC

);END COMPONENT

AB ResultXOR3END COMPONENT;

BEGINU1: xor2 PORT MAP (I1 => A,

BC

ResultXOR3

I2 => B,Y => U1_OUT);

U2: xor2 PORT MAP (I1 => U1 OUT

AB

CRESULT

U1_OUT

XOR3

U2: xor2 PORT MAP (I1 => U1_OUT,I2 => C,Y => Result);

END structural;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 58: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Component Instantiation

Named association connectivitya ed assoc at o co ect ty(recommended)

COMPONENT xor2 ISPORT(

I1 : IN STD LOGIC;I1 : IN STD_LOGIC;I2 : IN STD_LOGIC;Y : OUT STD_LOGIC));

END COMPONENT;

U1: xor2 PORT MAP (I1 > AU1: xor2 PORT MAP (I1 => A,I2 => B,Y => U1_OUT);

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 59: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Component Instantiation

Positional association connectivity os t o a assoc at o co ect ty(not recommended)

COMPONENT xor2 ISPORT((

I1 : IN STD_LOGIC;I2 : IN STD_LOGIC;Y : OUT STD LOGICY : OUT STD_LOGIC);

END COMPONENT;

U1: xor2 PORT MAP (A, B, U1_OUT);

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 60: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Behavioral Architecture

ARCHITECTURE behavioral OF xor3 ISBEGINxor3_behave: PROCESS (A,B,C)BEGIN

IF ((A XOR B XOR C) = '1') THENResult <= '1';

ELSEResult <= '0';

END IF;END PROCESS xor3_behave;END behavioral;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 61: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

QuestionsQuestions

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 62: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Dataflow VHDL

Major instructionsjConcurrent statements

• concurrent signal assignment ()

di i l i l i• conditional concurrent signal assignment(when-else)

l d i l i• selected concurrent signal assignment(with-select-when)

t h f ti• generate scheme for equations (for-generate)

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 63: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

MLU Block Diagramg

A A1

MUX_0

NEG_AIN0

IN1

IN2

IN3 OUTPUT Y

Y1MUX_1

MUX_2

IN3 OUTPUT

SEL1

SEL0

NEG Y

Y

B1B MUX_4_1

NEG_YB1

MUX_3

NEG_B

L0L1

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 64: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

MLU Entity Declarationy

LIBRARY ieee;USE ieee.std_logic_1164.all;

ENTITY mlu ISPORT(

NEG_A : IN STD_LOGIC;NEG B : IN STD LOGIC;NEG_B : IN STD_LOGIC;NEG_Y : IN STD_LOGIC;A : IN STD_LOGIC;B : IN STD LOGIC;B : IN STD_LOGIC;L1 : IN STD_LOGIC;L0 : IN STD_LOGIC;Y : OUT STD LOGICY : OUT STD_LOGIC

);END mlu;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 65: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

MLU Architecture: Declarations

ARCHITECTURE mlu_dataflow OF mlu IS

SIGNAL A1 : STD_LOGIC;SIGNAL B1 : STD LOGIC;SIGNAL B1 : STD_LOGIC;SIGNAL Y1 : STD_LOGIC;SIGNAL MUX_0 : STD_LOGIC;SIGNAL MUX_1 : STD_LOGIC;SIGNAL MUX_2 : STD_LOGIC;SIGNAL MUX 3 : STD LOGIC;SIGNAL MUX_3 : STD_LOGIC;SIGNAL L: STD_LOGIC_VECTOR(1 DOWNTO 0);

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 66: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

MLU Architecture: BodyyBEGIN

A1<= NOT A WHEN (NEG_A='1') ELSEAA;

B1<= NOT B WHEN (NEG_B='1') ELSE B;

Y <= NOT Y1 WHEN (NEG Y='1') ELSE( _ )Y1;

MUX_0 <= A1 AND B1;MUX 1 <= A1 OR B1;MUX_1 < A1 OR B1;MUX_2 <= A1 XOR B1;MUX_3 <= A1 XNOR B1;

L <= L1 & L0;L < L1 & L0;

with (L) selectY1 <= MUX_0 WHEN "00",

MUX_1 WHEN "01",MUX_2 WHEN "10",MUX_3 WHEN OTHERS;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

END mlu_dataflow;

Page 67: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

FOR … GENERATE

F G tFor - Generate

label: FOR identifier IN range GENERATEBEGIN{Concurrent Statements}

END GENERATE;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 68: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

PARITY Example

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 69: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

PARITY: Entity Declarationy

LIBRARY ieee;USE ieee.std_logic_1164.all;

ENTITY parity ISPORT(

it i IN STD LOGIC VECTOR(7 DOWNTO 0)parity_in : IN STD_LOGIC_VECTOR(7 DOWNTO 0);parity_out : OUT STD_LOGIC

);END parity;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 70: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

PARITY: Block Diagramg

xor_out(1)xor_out(2)

xor_out(3) xor_out(4)xor out(5)xor_out(5) xor_out(6)

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 71: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

PARITY: Architecture

ARCHITECTURE parity_dataflow OF parity IS

SIGNAL xor_out: std_logic_vector (6 downto 1);

BEGIN

t(1) it i (0) XOR it i (1)xor_out(1) <= parity_in(0) XOR parity_in(1);xor_out(2) <= xor_out(1) XOR parity_in(2);xor_out(3) <= xor_out(2) XOR parity_in(3);xor_out(4) <= xor_out(3) XOR parity_in(4);xor_out(5) <= xor_out(4) XOR parity_in(5);xor out(6) <= xor out(5) XOR parity in(6);_ ( ) _ ( ) p y_ ( );parity_out <= xor_out(6) XOR parity_in(7);

END parity dataflow;Microprocessors & Digital Systems Laboratory

© 2009 National Technical University of Athens

END parity_dataflow;

Page 72: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

PARITY: Block Diagram 2g

xor_out(1)xor_out(2)

xor_out(3) xor_out(4)xor out(5)

xor_out(0)

xor_out(5) xor_out(6)xor_out(7)

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 73: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

PARITY: Architecture 2

ARCHITECTURE parity_dataflow OF parity IS

SIGNAL xor_out: STD_LOGIC_VECTOR (7 downto 0);

BEGINBEGIN

xor_out(0) <= parity_in(0);xor_out(1) <= xor_out(0) XOR parity_in(1);xor_out(2) <= xor_out(1) XOR parity_in(2);xor_out(3) <= xor_out(2) XOR parity_in(3);

t(4) < t(3) XOR it i (4)xor_out(4) <= xor_out(3) XOR parity_in(4);xor_out(5) <= xor_out(4) XOR parity_in(5);xor_out(6) <= xor_out(5) XOR parity_in(6);xor out(7) <= xor out(6) XOR parity in(7);xor_out(7) <= xor_out(6) XOR parity_in(7);parity_out <= xor_out(7);

END parity dataflow;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

END parity_dataflow;

Page 74: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

PARITY: Architecture 3

ARCHITECTURE parity_dataflow OF parity IS

SIGNAL xor_out: STD_LOGIC_VECTOR (7 DOWNTO 0);

BEGIN

xor out(0) <= parity in(0);_ ( ) p y_ ( );

G2: FOR i IN 1 TO 7 GENERATExor out(i) <= xor out(i-1) XOR parity in(i);xor_out(i) < xor_out(i 1) XOR parity_in(i);

end generate G2;

parity out <= xor out(7);parity_out <= xor_out(7);

END parity_dataflow;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 75: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Simple Rules

For combinational logic,For combinational logic,use only concurrent statements

• concurrent signal assignment ()• conditional concurrent signal assignment• conditional concurrent signal assignment

(when-else)• selected concurrent signal assignment• selected concurrent signal assignment

(with-select-when)• generate scheme for equations• generate scheme for equations

(for-generate)

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 76: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Simple Rules

F i it d fFor circuits composed of - simple logic operations (logic gates)- simple arithmetic operations (addition,subtraction, multiplication)subt act o , u t p cat o )

- shifts/rotations by a constantuseuse

• concurrent signal assignment ()

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 77: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Simple Rules

For circuits composed of - multiplexers- decoders, encodersdecoders, encoders- tri-state buffers

useuse

diti l t i l i t• conditional concurrent signal assignment(when-else)

l t d t i l i t• selected concurrent signal assignment(with-select-when)

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 78: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Left vs Right Side of Assignmentsg g

<=Left side Right side<= when-elsewith-select <=

g

with select <

Expressions including:• Internal signals (defined

in a given architecture)• Ports of the mode

Expressions including:• Internal signals (defined

in a given architecture)• Ports of the mode

- out- inout

• Ports of the mode- in

inoutinout- buffer

- inout- buffer

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 79: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Arithmetic Operators

Synthesizable arithmetic operations:Sy t es ab e a t et c ope at o s Addition, + Subtraction, -Subtraction, Comparisons, >, >=, <, <= Multiplication *Multiplication, Division by a power of 2, /2**6

(equivalent to right shift)( q g ) Shifts by a constant, SHL, SHR

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 80: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Arithmetic Operators

The result of synthesis of an arithmeticoperation is a- combinational circuitcombinational circuit- without pipelining.

The exact internal architecture used (and thus delay and area of the circuit)(and thus delay and area of the circuit)may depend on the timing constraints specifiedd i th i ( th t d iduring synthesis (e.g., the requested maximumclock frequency).

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 81: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

QuestionsQuestions

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 82: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Anatomy of a Processy

OPTIONALOPTIONAL

[label:] process [(sensitivity list)][declaration part]

begingstatement part

end process [label];end process [label];

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 83: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Statement Part

Contains Sequential Statements to be Executed Each Time the Process Is Activated

Analogous to Conventional Programming Languages

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 84: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

What is a Process

A process is a sequence of instructions referred to as sequential statements

A process can be given a unique name using an optional LABEL TESTING: process

sequential statements.The Keyword PROCESS

using an optional LABEL

This is followed by the keyword PROCESS

pbegin

TEST_VECTOR<=“00”;wait for 10 ns;TEST VECTOR<=“01”;

The keyword BEGIN is used to indicate the start of the process

TEST_VECTOR<= 01 ;wait for 10 ns;TEST_VECTOR<=“10”;wait for 10 ns;TEST VECTOR “11” All statements within the process are

executed SEQUENTIALLY. Hence, order of statements is important.

TEST_VECTOR<=“11”;wait for 10 ns;

end process;

A process must end with the keywords END PROCESS.

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 85: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Execution of Statements

Testing: PROCESS

The execution of statements

BEGINtest_vector<=“00”;WAIT FOR 10 ns; The execution of statements

continues sequentially till the last statement in the process.

After execution of the last r of

exe

cutio

n

WAIT FOR 10 ns;test_vector<=“01”;WAIT FOR 10 ns;

After execution of the last statement, the control is again passed to the beginning of the process

Ord

er test_vector<=“10”;WAIT FOR 10 ns;test vector<=“11”;process. test_vector< 11 ;WAIT FOR 10 ns;

END PROCESS;

Program control is passed to the first statement after BEGIN

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

BEGIN

Page 86: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

WAIT Statement

The last statement in the Testing: PROCESSPROCESS is a WAIT instead of WAIT FOR 10 ns.

This will cause the PROCESS

BEGINtest_vector<=“00”;WAIT FOR 10 ns;

to suspend indefinitely when the WAIT statement is executed.

WAIT FOR 10 ns;test_vector<=“01”;WAIT FOR 10 ns;

r of

exe

cutio

n

This form of WAIT can be used in a process included in a testbench when all possible

test_vector<=“10”;WAIT FOR 10 ns;test vector<=“11”;

Ord

er

combinations of inputs have been tested or a non-periodical signal has to be generated.

test_vector< 11 ;WAIT;

END PROCESS;

Program execution stops here

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

here

Page 87: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

WAIT FOR vs WAIT

WAIT FOR: waveform will keep repeating p p gitself forever

0 1 2 3 0 1 2 3 …

WAIT : waveform will keep its state after theWAIT : waveform will keep its state after the last wait instruction.

…Microprocessors & Digital Systems Laboratory

© 2009 National Technical University of Athens

Page 88: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Sensitivity Listy

List of signals to which the gprocess is sensitive.

Whenever there is an t f thevent on any of the

signals in the sensitivity list, the process fires.

label: process (sensitivity list)declaration part , p

Every time the process fires, it will run in its

ti t

beginstatement part

entirety. WAIT statements are

NOT ALLOWED in a

end process;

NOT ALLOWED in a processes with SENSITIVITY LIST.

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 89: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Process Suitabilityy

Processes Describe Sequential Behavior

Processes in VHDL Are Very Powerful Statements Allow to define an arbitrary behavior that may be difficult to

represent by a real circuit Not every process can be synthesized Not every process can be synthesized

Use Processes with Caution in the Code to Be Synthesized

Use Processes Freely in Testbenches

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 90: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Component Equivalent of a Process

yclk

priority: PROCESS (clk)BEGIN

IF w(3) = '1' THEN

wa z

priority

bc

All signals which appear on the left of signal assignment statement (<=)

t t

IF w(3) = 1 THENy <= "11" ;

ELSIF w(2) = '1' THEN y <= "10" ; are outputs e.g. y, z

All signals which appear on the right of signal assignment statement (<=)

y < 10 ;ELSIF w(1) = c THEN

y <= a and b;ELSE g g ( )

or in logic expressions are inputse.g. w, a, b, c

All signals which appear in the

ELSEz <= "00" ;

END IF ;END PROCESS ; g pp

sensitivity list are inputs e.g. clk

Note that not all inputs need to be included in the sensitivity list

;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

included in the sensitivity list

Page 91: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

IF Statement - Syntaxy

If Statement

if boolean expression thenstatementsstatements

elsif boolean expression thenstatements

else boolean expression thenstatements

end if;

else and elsif are optional

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

p

Page 92: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

IF Statement: Example

SELECTOR: processbegin

WAIT UNTIL Cl k'EVENT AND Cl k '1'WAIT UNTIL Clock'EVENT AND Clock = '1' ;IF Sel = “00” THEN

f <= x1;f <= x1;ELSIF Sel = “10” THEN

f <= x2;;ELSE

f <= x3;END IFEND IF;

end process;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 93: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

2-to-4 Decoder

y 0

w 1

w 0

En y 1

y 2

y 3

w y0

0 1

0 1

1 0

1

1

0

0

0

0

0 w

0 y 0

w 1

y 1

1

1

0

1

1

1

0

0

0

0

1

0

0

1 En

y 2

y 3

x x 0 0 0 0 0

( ) T th t bl (b) G hi l(a) Truth table (b) Graphical symbol

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 94: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Dataflow DescriptionLIBRARY ieee ;USE ieee.std_logic_1164.all ;

ENTITY dec2to4 ISPORT ( w : IN STD_LOGIC_VECTOR(1 DOWNTO 0) ;

En : IN STD LOGIC ;En : IN STD_LOGIC ;y : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ) ;

END dec2to4 ;

ARCHITECTURE dataflow OF dec2to4 ISSIGNAL Enw : STD_LOGIC_VECTOR(2 DOWNTO 0) ;

BEGINEnw <= En & w ;WITH Enw SELECT

y <= “0001" WHEN "100","0010" WHEN "101"0010 WHEN 101 ,"0100" WHEN "110",“1000" WHEN "111","0000" WHEN OTHERS ;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

0000 WHEN OTHERS ;END dataflow ;

Page 95: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Behavioral DescriptionLIBRARY ieee ;USE ieee.std_logic_1164.all ;ENTITY dec2to4 ISENTITY dec2to4 IS

PORT ( w : IN STD_LOGIC_VECTOR(1 DOWNTO 0) ;En : IN STD_LOGIC ;y : OUT STD_LOGIC_VECTOR(0 TO 3) ) ;

END dec2to4 ;END dec2to4 ;

ARCHITECTURE Behavior OF dec2to4 ISBEGIN

PROCESS ( w En )PROCESS ( w, En )BEGIN

IF En = '1' THENCASE w IS

WHEN "00" => y <= "1000" ;WHEN 00 => y <= 1000 ;WHEN "01" => y <= "0100" ;WHEN "10" => y <= "0010" ;WHEN OTHERS => y <= "0001" ;

END CASE ;END CASE ;ELSE

y <= "0000" ;END IF ;

END PROCESS ;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

END PROCESS ;END Behavior ;

Page 96: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

7 Segment Displayg yLIBRARY ieee ; USE ieee.std_logic_1164.all ;ENTITY seg7 IS

PORT ( bcd : IN STD LOGIC VECTOR(3 DOWNTO 0) ;PORT ( bcd : IN STD_LOGIC_VECTOR(3 DOWNTO 0) ;leds : OUT STD_LOGIC_VECTOR(1 TO 7) ) ;

END seg7 ;ARCHITECTURE Behavior OF seg7 ISBEGINBEGIN

PROCESS ( bcd )BEGIN

CASE bcd IS -- abcdefgWHEN "0000" => leds <= "1111110" ;WHEN 0000 leds 1111110 ;WHEN "0001" => leds <= "0110000" ;WHEN "0010" => leds <= "1101101" ;WHEN "0011" => leds <= "1111001" ;WHEN "0100" => leds <= "0110011" ;WHEN 0100 leds 0110011 ;WHEN "0101" => leds <= "1011011" ;WHEN "0110" => leds <= "1011111" ;WHEN "0111" => leds <= "1110000" ;WHEN "1000" => leds <= "1111111" ;WHEN 1000 leds 1111111 ;WHEN "1001" => leds <= "1110011" ;WHEN OTHERS => leds <= "-------" ;

END CASE ;END PROCESS ;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

END PROCESS ;END Behavior ;

Page 97: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Comparator

LIBRARY ieee ;USE ieee.std logic 1164.all ;USE ieee.std_logic_1164.all ;

ENTITY compare1 ISPORT ( A, B : IN STD LOGIC ;( , _ ;

AeqB : OUT STD_LOGIC ) ;END compare1 ;

ARCHITECTURE Behavior OF compare1 ISBEGIN

PROCESS ( A, B )BEGIN

AeqB <= '0' ;IF A = B THEN

A B '1'AeqB <= '1' ;END IF ;

END PROCESS ;END Behavior ;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

END Behavior ;

Page 98: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Latch InferenceLIBRARY ieee ;USE ieee.std logic 1164.all ;_ g _ ;

ENTITY implied ISPORT ( A B : IN STD LOGIC ;PORT ( A, B : IN STD_LOGIC ;

AeqB : OUT STD_LOGIC ) ;END implied ;

ARCHITECTURE Behavior OF implied ISBEGIN

PROCESS ( A B )PROCESS ( A, B )BEGIN

IF A = B THENAeqB <= '1' ;

END IF ;END PROCESS ;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

END Behavior ;

Page 99: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Latch Inference

A B AeqBB AeqB

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 100: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Combinational Circuits with Processes

Rules that need to be followed:

1. All inputs to the combinational circuit should be includedincluded in the sensitivity list

2. No other signals should be included gin the sensitivity list

3. None of the statements within the process should be sensitive to rising or falling edges

4. All possible cases need to be covered in the internalIF and CASE statements in order to avoidIF and CASE statements in order to avoidimplied latches

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 101: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Covering all Combinations with IFg

Using ELSE

IF A = B THENAeqB <= '1' ;q ;

ELSEAeqB <= '0' ;

Using default values

AeqB <= '0' ;IF A = B THENIF A B THEN

AeqB <= '1' ;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 102: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Covering all Combinations with CASEg

Using WHEN OTHERSCASE ISCASE y IS

WHEN S1 => Z <= "10";WHEN S2 => Z <= "01";

CASE y ISWHEN S1 => Z <= "10";WHEN S2 => Z <= "01";WHEN S2 Z 01 ;

WHEN OTHERS => Z <= "00";END CASE;

WHEN S3 => Z <= "00";WHEN OTHERS => Z <= „--";

END CASE;

Using default values

;

Z <= "00";CASE y IS

WHEN S1 => Z <= "10";WHEN S1 => Z <= 10 ;WHEN S2 => Z <= "10";

END CASE;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 103: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Sequential Logic: D Latchg

Truth table Graphical symbol

Clock D 0 1

–0 0

Q(t+1)

Q(t)D Q

Cl k 1 1

0 1

0 1

Clock

t 1 t 2 t 3 t 4

Timing diagram

Clock

D

Ti

D

Q

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Time

Page 104: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Sequential Logic: D Flip-flopg

Truth table Graphical symbol

Clk D

0 1

0 1

Q(t+1)D Q

1 1 Q(t)

Clock 0 –

Q(t)1 –

t 1 t 2 t 3 t 4

Timing diagramQ(t)

Clock

D

Ti

D

Q

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Time

Page 105: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

VHDL Code: D Latch

LIBRARY ieee ; USE ieee std logic 1164 all ;USE ieee.std_logic_1164.all ;

ENTITY latch IS PORT ( D Clock : IN STD LOGIC ;

D Q

Clock PORT ( D, Clock : IN STD_LOGIC ; Q : OUT STD_LOGIC) ;

END latch ;

ARCHITECTURE Behavior OF latch IS BEGIN

PROCESS ( D, Clock ) ( )BEGIN

IF Clock = '1' THENQ <= D ;

END IF ; END PROCESS ;

END Behavior;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 106: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

VHDL Code: D Flip-flop

LIBRARY ieee ; USE ieee std logic 1164 all ;USE ieee.std_logic_1164.all ;

ENTITY flipflop IS PORT ( D, Clock : IN STD LOGIC ;

D Q

Cl kPORT ( D, Clock : IN STD_LOGIC ;

Q : OUT STD_LOGIC) ; END flipflop ;

Clock

ARCHITECTURE Behavior_1 OF flipflop IS BEGIN

PROCESS ( Clock ) BEGIN

IF Clock'EVENT AND Clock = '1' THEN Q <= D ;

END IF ; END PROCESS ;

END Behavior_1 ;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 107: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

VHDL Code: D Flip-flop

LIBRARY ieee ; USE ieee std logic 1164 all ;USE ieee.std_logic_1164.all ;

ENTITY flipflop IS PORT ( D, Clock : IN STD LOGIC ;

D Q

Cl kPORT ( D, Clock : IN STD_LOGIC ;

Q : OUT STD_LOGIC) ; END flipflop ;

Clock

ARCHITECTURE Behavior_1 OF flipflop IS BEGIN

PROCESS ( Clock ) BEGIN

IF rising_edge(Clock) THEN Q <= D ;

END IF ; END PROCESS ;

END Behavior_1 ;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 108: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

VHDL Code: D Flip-flop

LIBRARY ieee ; USE ieee.std_logic_1164.all ;

ENTITY flipflop IS PORT ( D Cl k IN STD LOGIC

D Q

Cl kPORT ( D, Clock : IN STD_LOGIC ; Q : OUT STD_LOGIC) ;

END flipflop ;

Clock

ARCHITECTURE Behavior_2 OF flipflop IS BEGIN

PROCESSPROCESSBEGIN

WAIT UNTIL Clock'EVENT AND Clock = '1' ;Q <= D ;Q < D ;

END PROCESS ;

END Behavior_2 ;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 109: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

VHDL Code: D Flip-flop

LIBRARY ieee ; USE ieee std logic 1164 all ;USE ieee.std_logic_1164.all ;

ENTITY flipflop IS PORT ( D Clock : IN STD LOGIC ;

D Q

Cl kPORT ( D, Clock : IN STD_LOGIC ; Q : OUT STD_LOGIC) ;

END flipflop ;

Clock

ARCHITECTURE Behavior_2 OF flipflop IS BEGIN

PROCESSPROCESSBEGIN

WAIT UNTIL rising_edge(Clock) ;Q <= D ; ;

END PROCESS ;

END Behavior_2 ;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 110: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

VHDL Code: D Flip-flop Async ResetyLIBRARY ieee ; USE ieee.std_logic_1164.all ;

ENTITY flipflop IS PORT ( D, Resetn, Clock : IN STD_LOGIC ;

Q : OUT STD LOGIC) ;

D Q

ClockQ : OUT STD_LOGIC) ; END flipflop ;

ARCHITECTURE Behavior OF flipflop IS

Clock

Resetn

ARCHITECTURE Behavior OF flipflop IS BEGIN

PROCESS ( Resetn, Clock ) BEGINBEGIN

IF Resetn = '0' THEN Q <= '0' ;

ELSIF Clock'EVENT AND Clock = '1' THENELSIF Clock EVENT AND Clock 1 THEN Q <= D ;

END IF ; END PROCESS ;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

;

END Behavior ;

Page 111: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

VHDL Code: D Flip-flop Sync ResetyLIBRARY ieee ; USE ieee.std_logic_1164.all ; ENTITY fli fl ISENTITY flipflop IS

PORT ( D, Resetn, Clock : IN STD_LOGIC ; Q : OUT STD_LOGIC) ;

END flipflop ;

D Q

ClockEND flipflop ;

ARCHITECTURE Behavior OF flipflop IS BEGIN

Clock

Resetn

BEGINPROCESS BEGIN

WAIT UNTIL Clock'EVENT AND Clock = '1' ;WAIT UNTIL Clock EVENT AND Clock 1 ;IF Resetn = '0' THEN

Q <= '0' ; ELSEELSE

Q <= D ; END IF ;

END PROCESS ;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

;

END Behavior ;

Page 112: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

QuestionsQuestions

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 113: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Variables: Example

LIBRARY iLIBRARY ieee ;USE ieee.std_logic_1164.all ;

ENTITY Numbits ISPORT ( X : IN STD_LOGIC_VECTOR(1 TO 3) ;

Count : OUT INTEGER RANGE 0 TO 3) ;END Numbits ;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 114: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Variables: Example

ARCHITECTURE Behavior OF Numbits IS

BEGIN

PROCESS(X) – count the number of bits in X equal to 1PROCESS(X) count the number of bits in X equal to 1VARIABLE Tmp: INTEGER;

BEGINTmp := 0;p 0;FOR i IN 1 TO 3 LOOP

IF X(i) = ‘1’ THENTmp := Tmp + 1;p p

END IF;END LOOP;Count <= Tmp;

END PROCESS;

END Behavior ;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 115: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Variables: Features

Can only be declared within processes and subprograms (functions & procedures)subprograms (functions & procedures)

Initial value can be explicitly specified in the Initial value can be explicitly specified in the declaration

When assigned take an assigned value immediately

Variable assignments represent the desired behavior, not the structure of the circuit

Should be avoided, or at least used with caution in a synthesizable code

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

synthesizable code

Page 116: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Variable vs Signal – Variable Exampleg

ARCHITECTURE Behavior OF Numbits IS

BEGIN

PROCESS(X) – count the number of bits in X equal to 1PROCESS(X) count the number of bits in X equal to 1VARIABLE Tmp: INTEGER;

BEGINTmp := 0;p 0;FOR i IN 1 TO 3 LOOP

IF X(i) = ‘1’ THENTmp := Tmp + 1;p p

END IF;END LOOP;Count <= Tmp;

END PROCESS;

END Behavior ;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 117: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Variable vs Signal – Signal Exampleg g

ARCHITECTURE Behavior OF Numbits IS

SIGNAL Tmp : INTEGER RANGE 0 TO 3 ;

BEGIN

PROCESS(X) – count the number of bits in X equal to 1BEGIN

Tmp <= 0;FOR i IN 1 TO 3 LOOP

IF X(i) = ‘1’ THEN1Tmp <= Tmp + 1;

END IF;END LOOP;C t < TCount <= Tmp;

END PROCESS;

END Behavior ;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

END Behavior ;

Page 118: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Variable vs Signal: NAND Gateg

LIBRARY ieee;USE ieee.std_logic_1164.all;

ENTITY NANDn ISGENERIC (n: INTEGER := 8)PORT ( X : IN STD_LOGIC_VECTOR(1 TO n);

Y : OUT STD_LOGIC);END NANDn;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 119: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Variable vs Signal: NAND Gate - Varg

ARCHITECTURE behavioral1 OF NANDn ISBEGINBEGIN

PROCESS (X) VARIABLE Tmp: STD LOGIC;VARIABLE Tmp: STD_LOGIC;

BEGINTmp := X(1);

AND_bits: FOR i IN 2 TO n LOOPTmp := Tmp AND X( i ) ;

END LOOP AND bitEND LOOP AND_bits ;

Y <= NOT Tmp ;

END PROCESS;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

END behavioral1 ;

Page 120: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Variable vs Signal: NAND Gate - Signalg g

ARCHITECTURE behavioral2 OF NANDn ISSIGNAL Tmp: STD LOGIC;SIGNAL Tmp: STD_LOGIC;

BEGIN

PROCESS (X)PROCESS (X) BEGINTmp <= X(1);

AND_bits: FOR i IN 2 TO n LOOPTmp <= Tmp AND X( i ) ;

END LOOP AND bitEND LOOP AND_bits ;

Y <= NOT Tmp ;

END PROCESS;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

END behavioral2 ;

Page 121: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Variable vs Signal: NAND Gate - Signalg g

ARCHITECTURE dataflow1 OF NANDn ISARCHITECTURE dataflow1 OF NANDn IS

SIGNAL Tmp: STD_LOGIC_VECTOR(1 TO n);

BEGINTmp(1) <= X(1);

AND_bits: FOR i IN 2 TO n GENERATETmp(i) <= Tmp(i-1) AND X( i ) ;

END LOOP AND_bits ;

Y <= NOT Tmp(n) ;p( ) ;

END dataflow1 ;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 122: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

QuestionsQuestions

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 123: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Structural VHDL

Major instructions

component instantiation (port map)

j

p (p p) generate scheme for component instantiations

(for-generate)( g ) component instantiation with generic

(generic map, port map)(g p, p p)

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 124: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Structural VHDL

Major instructions

component instantiation (port map)

j

p (p p) component instantiation with generic

(generic map, port map)(g p, p p) generate scheme for component instantiations

(for-generate)( g )

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 125: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Structural VHDL: Example

s(0)

0r(0) p(0) En

w 0 y 0w

0y 0

1r(1)

p(1)q(0)

(1) (0) (0)Enable

y0

y 1

z

w 1

w 2

0 0 w

1 y 1

y

r(2)

r(3)p(2)

q(1)

ena

z(0)

z(1)

z(0)

z(1)D Q

w 3z

En

y 2

y 3

0r(4) p(3)z(2)

z(3)dec2to4

priority z(2)

z(3)regn

1r(5)dec2to4 regn

Clk Clock

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

s(1)

Page 126: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

2-to-1 Multiplexer

fs

s

0w

0f

w0 0

1

0

w1

fw

1 1

(a) Graphical symbol (b) Truth table

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 127: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

VHDL Code for 2-to-1 Multiplexer

LIBRARY ieee ;LIBRARY ieee ;USE ieee.std_logic_1164.all ;

ENTITY mux2to1 ISPORT (w0, w1, s : IN STD_LOGIC ;

f OUT STD LOGIC )f : OUT STD_LOGIC ) ;END mux2to1 ;

ARCHITECTURE dataflow OF mux2to1 ISBEGIN

f <= w0 WHEN s = '0' ELSE w1 ;END dataflow ;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 128: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Priority Encodery

w 0 y 0

y 1w 1

w

w 3z

w 2

w0 y1 y0 zw1w2w3

d00

01

d 011

1x

001

000

000

0

01

10

1 1 1

11

xxx

1xx

01x

001

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 129: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

VHDL Code for Priority EncoderyLIBRARY ieee ;USE ieee.std_logic_1164.all ;_ g _

ENTITY priority ISPORT ( w : IN STD LOGIC VECTOR(3 DOWNTO 0) ;PORT ( w : IN STD_LOGIC_VECTOR(3 DOWNTO 0) ;

y : OUT STD_LOGIC_VECTOR(1 DOWNTO 0) ;z : OUT STD_LOGIC ) ;

END priority ;END priority ;

ARCHITECTURE dataflow OF priority ISBEGINBEGIN

y <= "11" WHEN w(3) = '1' ELSE "10" WHEN w(2) = '1' ELSE"01" WHEN (1) '1' ELSE"01" WHEN w(1) = '1' ELSE"00" ;

z <= '0' WHEN w = "0000" ELSE '1' ;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

END dataflow ;

Page 130: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

2-to-4 Decoder

y 0

w 1

w 0

En y 1

y 2

y 3

w y0

0 1

0 1

1 0

1

1

0

0

0

0

0 w

0 y 0

w 1

y 1

1

1

0

1

1

1

0

0

0

0

1

0

0

1 En

y 2

y 3

x x 0 0 0 0 0

( ) T th t bl (b) G hi l(a) Truth table (b) Graphical symbol

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 131: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

VHDL Code for 2-to-4 DecoderLIBRARY ieee ;USE ieee.std_logic_1164.all ;

ENTITY dec2to4 ISPORT ( w : IN STD_LOGIC_VECTOR(1 DOWNTO 0) ;

En : IN STD LOGIC ;En : IN STD_LOGIC ;y : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ) ;

END dec2to4 ;

ARCHITECTURE dataflow OF dec2to4 ISSIGNAL Enw : STD_LOGIC_VECTOR(2 DOWNTO 0) ;

BEGINEnw <= En & w ;WITH Enw SELECT

y <= “0001" WHEN "100","0010" WHEN "101"0010 WHEN 101 ,"0100" WHEN "110",“1000" WHEN "111","0000" WHEN OTHERS ;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

0000 WHEN OTHERS ;END dataflow ;

Page 132: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

N-bit Register with EnablegLIBRARY ieee ;USE ieee.std_logic_1164.all ;

ENTITY regn ISGENERIC ( N : INTEGER := 8 ) ;PORT ( D : IN STD_LOGIC_VECTOR(N-1 DOWNTO 0) ;( ( )

Enable, Clock : IN STD_LOGIC ;Q : OUT STD_LOGIC_VECTOR(N-1 DOWNTO 0) ) ;

END regn ;

ARCHITECTURE Behavior OF regn ISBEGIN

PROCESS (Clock) EnableN N

BEGINIF (Clock'EVENT AND Clock = '1' ) THEN

IF Enable = '1' THENQ <= D ;

QD

Q <= D ;END IF ;

END IF;END PROCESS ;

Clock

regn

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

END Behavior ;

Page 133: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Circuit Built with Components

s(0)

0r(0) p(0) En

w 0 y 0w

0y 0

1r(1)

p(1)q(0)

(1) (0) t(0)Enable

y0

y 1

z

w 1

w 2

0 0 w

1 y 1

y

r(2)

r(3)p(2)

q(1)

ena

z(0)

z(1)

t(0)

t(1)D Q

w 3z

En

y 2

y 3

0r(4) p(3)z(2)

z(3)dec2to4

priority t(2)

t(3)regn

1r(5)dec2to4 regn

Clk Clock

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

s(1)

Page 134: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Structural Description

LIBRARY ieee ;USE ieee.std logic 1164.all ;_ g _ ;

ENTITY priority_resolver ISPORT (r : IN STD_LOGIC_VECTOR(5 DOWNTO 0) ;( ( )

s : IN STD_LOGIC_VECTOR(1 DOWNTO 0) ;clk : IN STD_LOGIC;en : IN STD_LOGIC;t : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ) ;

END priority_resolver;

ARCHITECTURE t t l OF i it l ISARCHITECTURE structural OF priority_resolver IS

SIGNAL p : STD_LOGIC_VECTOR (3 DOWNTO 0) ;SIGNAL STD LOGIC VECTOR (1 DOWNTO 0)SIGNAL q : STD_LOGIC_VECTOR (1 DOWNTO 0) ;SIGNAL z : STD_LOGIC_VECTOR (3 DOWNTO 0) ;SIGNAL ena : STD_LOGIC ;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 135: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Structural DescriptionCOMPONENT mux2to1

PORT (w0, w1, s : IN STD_LOGIC ;f : OUT STD_LOGIC ) ;

END COMPONENT ;

COMPONENT priorityPORT (w : IN STD_LOGIC_VECTOR(3 DOWNTO 0) ;

y : OUT STD_LOGIC_VECTOR(1 DOWNTO 0) ;z : OUT STD_LOGIC ) ;

END COMPONENT ;END COMPONENT ;

COMPONENT dec2to4PORT ( IN STD LOGIC VECTOR(1 DOWNTO 0)PORT (w : IN STD_LOGIC_VECTOR(1 DOWNTO 0) ;

En : IN STD_LOGIC ;y : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ) ;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

END COMPONENT ;

Page 136: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Structural Description

COMPONENT regnGENERIC ( N : INTEGER := 8 ) ;PORT ( D : IN STD_LOGIC_VECTOR(N-1 DOWNTO 0) ;

Enable, Clock : IN STD_LOGIC ;Q : OUT STD LOGIC VECTOR(N-1 DOWNTO 0) ) ;Q _ _ ( ) ) ;

END COMPONENT ;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 137: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Structural DescriptionBEGIN

u1: mux2to1 PORT MAP (w0 => r(0)u1: mux2to1 PORT MAP (w0 => r(0) ,w1 => r(1),s => s(0),f => p(0));

p(1) <= r(2);p(1) <= r(3);

u2: mux2to1 PORT MAP (w0 => r(4)u2: mux2to1 PORT MAP (w0 => r(4) ,w1 => r(5),s => s(1),f => p(3));

u3: priority PORT MAP (w => p,y => q,z => ena);z => ena);

u4: dec2to4 PORT MAP (w => q,En => ena,

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

y => z);

Page 138: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Structural Description

u5: regn GENERIC MAP (N => 4)u5: regn GENERIC MAP (N > 4)

PORT MAP (D => z ,

Enable => En ,Cl k ClkClock => Clk,Q => t );

END structural;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 139: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Structural Description – Pos. Assoc.

BEGIN

u1: mux2to1 PORT MAP (r(0), r(1), s(0), p(0));

p(1) <= r(2);

p(1) <= r(3);

u2: mux2to1 PORT MAP (r(4) r(5) s(1) p(3));u2: mux2to1 PORT MAP (r(4) , r(5), s(1), p(3));

u3: priority PORT MAP (p, q, ena);

u4: dec2to4 PORT MAP (q, ena, z);

u5: regn GENERIC MAP(4) PORT MAP (z, En, Clk, t);

END structural;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 140: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Configuration Declarationg

CONFIGURATION SimpleCfg OF priority_resolver IS

FOR structural

FOR ALL: mux2to1USE ENTITY k 2t 1(d t fl )USE ENTITY work.mux2to1(dataflow);

END FOR;

FOR u3: priorityFOR u3: priority USE ENTITY work.priority(dataflow);

END FOR;

FOR 4 d 2t 4FOR u4: dec2to4USE ENTITY work.dec2to4(dataflow);

END FOR;

END FOR;

END SimpleCfg;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 141: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Configuration SpecificationgLIBRARY ieee ;USE ieee.std_logic_1164.all ;USE k G t Pk llUSE work.GatesPkg.all;

ENTITY priority_resolver ISPORT (r : IN STD LOGIC VECTOR(5 DOWNTO 0) ;( _ _ ( ) ;

s : IN STD_LOGIC_VECTOR(1 DOWNTO 0) ;z : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ) ;

END priority_resolver;

ARCHITECTURE structural OF priority_resolver IS

SIGNAL p : STD LOGIC VECTOR (3 DOWNTO 0) ;p _ _ ( ) ;SIGNAL q : STD_LOGIC_VECTOR (1 DOWNTO 0) ;SIGNAL ena : STD_LOGIC ;

FOR ALL 2t 1 USE ENTITY k 2t 1(d t fl )FOR ALL: mux2to1 USE ENTITY work.mux2to1(dataflow);FOR u3: priority USE ENTITY work.priority(dataflow);FOR u4: dec2to4 USE ENTITY work.dec2to4(dataflow);

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 142: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Structural VHDL

Major instructions

component instantiation (port map)

j

p (p p) component instantiation with generic

(generic map, port map)(g p, p p) generate scheme for component instantiations

(for-generate)( g )

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 143: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

16-to-1 Multiplexer

s 1

s 0

w 0

w 3

w 4 s 3

s 2

w 7

f

w 8

w 11

w 12

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

w 15

Page 144: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

VHDL Code for 4-to-1 Multiplexer

LIBRARY ieee ;USE ieee.std logic 1164.all ;_ g _ ;

ENTITY mux4to1 ISPORT ( w0, w1, w2, w3 : IN STD_LOGIC ;(

s : IN STD_LOGIC_VECTOR(1 DOWNTO 0) ;f : OUT STD_LOGIC ) ;

END mux4to1 ;

ARCHITECTURE Dataflow OF mux4to1 ISBEGIN

WITH SELECTWITH s SELECTf <= w0 WHEN "00",

w1 WHEN "01",2 WHEN "10"w2 WHEN "10",

w3 WHEN OTHERS ;END Dataflow ;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 145: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Straightforward Code for 16-to-1 MUXg

LIBRARY ieee ;USE ieee std logic 1164 all ;USE ieee.std_logic_1164.all ;

ENTITY Example1 ISPORT ( w : IN STD_LOGIC_VECTOR(0 TO 15) ;

s : IN STD_LOGIC_VECTOR(3 DOWNTO 0) ;f : OUT STD LOGIC ) ;f : OUT STD_LOGIC ) ;

END Example1 ;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 146: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Straightforward Code for 16-to-1 MUX g

ARCHITECTURE Structure OF Example1 IS

COMPONENT mux4to1PORT ( w0, w1, w2, w3 : IN STD_LOGIC ;

s : IN STD LOGIC VECTOR(1 DOWNTO 0) ;_ _ ( ) ;f : OUT STD_LOGIC ) ;

END COMPONENT ;

SIGNAL m : STD_LOGIC_VECTOR(0 TO 3) ;

BEGINM 1 4t 1 PORT MAP ( (0) (1) (2) (3) (1 DOWNTO 0) (0) )Mux1: mux4to1 PORT MAP ( w(0), w(1), w(2), w(3), s(1 DOWNTO 0), m(0) ) ;Mux2: mux4to1 PORT MAP ( w(4), w(5), w(6), w(7), s(1 DOWNTO 0), m(1) ) ;Mux3: mux4to1 PORT MAP ( w(8), w(9), w(10), w(11), s(1 DOWNTO 0), m(2) ) ;Mux4: mux4to1 PORT MAP ( w(12) w(13) w(14) w(15) s(1 DOWNTO 0) m(3) ) ;Mux4: mux4to1 PORT MAP ( w(12), w(13), w(14), w(15), s(1 DOWNTO 0), m(3) ) ;Mux5: mux4to1 PORT MAP ( m(0), m(1), m(2), m(3), s(3 DOWNTO 2), f ) ;

END Structure ;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 147: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Modified Code for 16-to-1 MUX

ARCHITECTURE Structure OF Example1 IS

COMPONENT mux4to1PORT ( w0, w1, w2, w3 : IN STD_LOGIC ;

s : IN STD_LOGIC_VECTOR(1 DOWNTO 0) ;_ _ ( )f : OUT STD_LOGIC ) ;

END COMPONENT ;

SIGNAL m : STD_LOGIC_VECTOR(0 TO 3) ;

BEGING1: FOR i IN 0 TO 3 GENERATE

Muxes: mux4to1 PORT MAP (w(4*i), w(4*i+1), w(4*i+2), w(4*i+3), s(1 DOWNTO 0), m(i) ) ;

END GENERATE ;Mux5: mux4to1 PORT MAP ( m(0), m(1), m(2), m(3), s(3 DOWNTO 2), f ) ;

END Structure ;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 148: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

QuestionsQuestions

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 149: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Array Attributesy

A’left(N) left bound of index range of dimension N of A

A’right(N) right bound of index range of dimension N of A

A’low(N) lower bound of index range of dimension N of AA low(N) lower bound of index range of dimension N of A

A’high(N) upper bound of index range of dimension N of A

A’range(N) index range of dimension N of A

A’reverse range(N) reversed index range of dimension N of AA reverse_range(N) reversed index range of dimension N of A

A’length(N) length of index range of dimension N of A

A’ascending(N) true if index range of dimension N of A

is an ascending range, false otherwise

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

is an ascending range, false otherwise

Page 150: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Array Attributes: Exampley

type A is array (1 to 4, 31 downto 0);

A’left(1) = 1A left(1) = 1

A’right(2) = 0

A’low(1) = 1

A’high(2) = 31A high(2) = 31

A’range(1) = 1 to 4

A’length(2) = 32

A’ascending(2) = false

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

A ascending(2) false

Page 151: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Attributes of Scalar Typesy

T’left first (leftmost) value in TT’ i ht l t ( i ht t) l i TT’right last (rightmost) value in TT’low least value in TT’hi h t t l i TT’high greatest value in T

N t il bl i VHDL 87Not available in VHDL-87:T’ascending

t if T i di f ltrue if T is an ascending range, falseotherwise

T’image(x)a string representing the value of xT image(x)a string representing the value of xT’value(s) the value in T that is represented by s

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 152: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Attributes of Scalar Types: Examplesy

type index range is range 21 downto 11;type index_range is range 21 downto 11;

i d ’l ft 21index_range’left = 21index_range’right = 11index_range’low = 11index_range’high = 21_ g gindex_range’ascending = falseindex range’image(14) = “14”index_range image(14) 14index_range’value(“20”) = 20

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 153: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Attributes of Discrete Typesy

T’pos(x) position number of x in Tp ( ) pT’val(n) value in T at position nT’succ(x) value in T at position one greaterT succ(x) value in T at position one greater

than position of xT’ d( ) l i T t iti lT’pred(x) value in T at position one less

than position of xT’leftof(x) value in T at position one to the

left of xT’rightof(x) value in T at position one to the

right of x

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

g

Page 154: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Attributes of Discrete Types:Examplesy

type logic level is (unknown low undriven high);type logic_level is (unknown, low, undriven, high);

l i l l’ ( k ) 0logic_level’pos(unknown) = 0logic_level’val(3) = highlogic_level’succ(unknown) = lowlogic_level’pred(undriven) = lowg _ p ( )logic_level’leftof(unknown) errorlogic level’rightof(undriven) = highlogic_level rightof(undriven) high

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 155: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Attributes of Signalsg

signal_name'eventreturns true if there is a change in a value of the signal.returns true if there is a change in a value of the signal.

signal_name'activereturns true if a value was assigned to the signal (even if the new value is the same as the current signal value).the same as the current signal value).

signal_name‘transactionbit that returns true if a value was assigned to the signal (even if the new value is the same as the current signal value).value is the same as the current signal value).

signal_name'last_eventreturns the elapsed time since the last event that happened to the signal.

signal name'last active signal_name last_activereturns the elapsed time since the last time that the signal was active.

signal_name'last_valuereturns the last value that was assigned to the signalreturns the last value that was assigned to the signal.

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 156: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

QuestionsQuestions

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 157: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Testbenches

Testbench

Processes

GeneratingDesign Under

Test (DUT)Generating

Stimuli

Test (DUT)

Observed OutputsObse ed Outputs

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 158: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Testbench Definition

Testbench applies stimuli (drives the inputs) to the Design Under Test (DUT) and (optionally) verifies expected outputs.

The results can be viewed in a waveform window or written to a file.

Since Testbench is written in VHDL, it is not restricted to a single simulation tool (portability)restricted to a single simulation tool (portability).

The same Testbench can be easily adapted to test different implementations (i e differenttest different implementations (i.e. different architectures) of the same design.

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 159: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Testbench TemplateENTITY tb IS

--TB entity has no ports

END tb;

ARCHITECTURE arch_tb OF tb IS

--Local signals and constants

COMPONENT TestComp --All Design Under Test component declarations

PORT ( );

END COMPONENT;

-----------------------------------------------------

BEGIN

testSequence: PROCESS

-- Input stimuli

END PROCESS;

DUT:TestComp PORT MAP( -- Instantiations of DUTs

);

END arch tb;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

a c _tb;

Page 160: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Generating Selected Valuesg

SIGNAL test_vector : STD_LOGIC_VECTOR(2 downto 0);

BEGIN.......

testing: PROCESStesting: PROCESS BEGIN

test_vector <= "000";WAIT FOR 10 ns;test_vector <= "001";WAIT FOR 10 ns;test_vector <= "010";WAIT FOR 10WAIT FOR 10 ns;test_vector <= "011";WAIT FOR 10 ns;test vector <= "100";test_vector < 100 ;WAIT FOR 10 ns;

END PROCESS;

........

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

END behavioral;

Page 161: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Generating all Valuesg

SIGNAL test vector : STD LOGIC VECTOR(3 downto 0):="0000";SIGNAL test_vector : STD_LOGIC_VECTOR(3 downto 0):= 0000 ;

BEGIN.......

testing: PROCESSBEGINBEGIN

WAIT FOR 10 ns;test_vector <= test_vector + 1;

d TESTINGend process TESTING;

........END b h i lEND behavioral;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 162: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Generating all Valuesg

SIGNAL test_ab : STD_LOGIC_VECTOR(1 downto 0);SIGNAL test sel : STD LOGIC VECTOR(1 downto 0);SIGNAL test_sel : STD_LOGIC_VECTOR(1 downto 0);

BEGIN.......

double_loop: PROCESSBEGIN

test_ab <="00";_test_sel <="00";for I in 0 to 3 loop

for J in 0 to 3 loopwait for 10 ns;

test_ab <= test_ab + 1;end loop;test_sel <= test_sel + 1;

end loop;END PROCESS;

........END b h i l

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

END behavioral;

Page 163: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Generating Periodic Signalsg g

CONSTANT clk1_period : TIME := 20 ns;CONSTANT clk2_period : TIME := 200 ns;_pSIGNAL clk1 : STD_LOGIC;SIGNAL clk2 : STD_LOGIC := ‘0’;

BEGIN.......clk1_generator: PROCESS

clk1 <= ‘0’;WAIT FOR clk1_period/2;clk1 <= ‘1’;;WAIT FOR clk1_period/2;

END PROCESS;

clk2 <= not clk2 after clk2_period/2;.......

END behavioral;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

END behavioral;

Page 164: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Generating 1 Time Signalsg gCONSTANT reset1_width : TIME := 100 ns;

CONSTANT reset2_width : TIME := 150 ns;SIGNAL reset1 : STD_LOGIC;SIGNAL reset2 : STD_LOGIC := ‘1’;

BEGINBEGIN.......reset1_generator: PROCESS

reset1 <= ‘1’;WAIT FOR reset_width;reset1 <= ‘0’;WAIT;

END PROCESSEND PROCESS;reset2_generator: PROCESS

WAIT FOR reset_width;reset2 <= ‘0’;reset2 < 0 ;WAIT;

END PROCESS;.......

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

END behavioral;

Page 165: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

QuestionsQuestions

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 166: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Structure of a Digital Systemg y

Data Inputs Control InputsData Inputs Control Inputs

Control

Execution Unit

ControlUnit

Signals

Unit(Datapath)

Unit(Control)

Data Outputs Control Outputs

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 167: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Datapath

Provides All Necessary Resources and I t t A Th t P f S ifi dInterconnects Among Them to Perform Specified Task

Examples of ResourcesAdders Multipliers Registers Memories etco Adders, Multipliers, Registers, Memories, etc.

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 168: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Control

Controls Data Movements in an Operational Circuit b S it hi M lti l d E bli Di bliby Switching Multiplexers and Enabling or Disabling Resources

Follows Some ‘Program’ or Schedule

Often Implemented as Finite State Machine or collection of Finite State Machinescollection of Finite State Machines

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 169: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Moore FSM

Output Is a Function of a Present State Only

Next StateInputsfunction

Present StateNext State

Present StateR i t

Present StateNext State

clockt Registerreset

Outputfunction

Outputs

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

function

Page 170: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Mealy FSMy

Output Is a Function of a Present State and InputsInputs

Next StateInputsfunction

Present StateNext State Present StateNext State

Present StateR i t

clockt Registerreset

Outputfunction

Outputs

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

function

Page 171: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Moore FSM

transitioncondition 1

state 1 / state 2 /

condition 1

output 1 output 2transitioncondition 2

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 172: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Mealy FSMy

transition condition 1 /output 1

state 1 state 2

output 1

state 1 state 2

transition condition 2 /output 2

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 173: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

FSMs in VHDL

Finite State Machines Can Be Easily Described With te State ac es Ca e as y esc bed tProcesses

Synthesis Tools Understand FSM Description If Certain Rules Are Followedo State transitions should be described in a process sensitive to

clock and asynchronous reset signals onlyOutputs described as concurrent statements outside theo Outputs described as concurrent statements outside the process

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 174: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Moore FSM in VHDL

TYPE state IS (S0, S1, S2);SIGNAL M t t t tSIGNAL Moore_state: state;

U_Moore: PROCESS (clock, reset)BEGIN

IF(reset = ‘1’) THENMoore state <= S0;Moore_state S0;

ELSIF (clock = ‘1’ AND clock’event) THENCASE Moore_state IS

WHEN S0 =>WHEN S0 =>IF input = ‘1’ THEN

Moore_state <= S1; ELSE

Moore_state <= S0;END IF;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 175: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Moore FSM in VHDL

WHEN S1 =>IF input = ‘0’ THENIF input = 0 THEN

Moore_state <= S2; ELSE

Moore state <= S1;Moore_state < S1; END IF;

WHEN S2 =>IF input = ‘0’ THENp

Moore_state <= S0; ELSE

Moore_state <= S1; _END IF;

END CASE;END IF;

END PROCESS;

Output <= ‘1’ WHEN Moore_state = S2 ELSE ‘0’;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 176: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

State Diagramg

Moore FSM that Recognizes Sequence “10”

00

1

1S0 / 0 S1 / 0 S2 / 1

11

0reset

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 177: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Mealy FSM in VHDLy

TYPE state IS (S0, S1);SIGNAL M l t t t tSIGNAL Mealy_state: state;

U_Mealy: PROCESS(clock, reset)BEGIN

IF(reset = ‘1’) THENMealy state <= S0;Mealy_state S0;

ELSIF (clock = ‘1’ AND clock’event) THENCASE Mealy_state IS

WHEN S0 =>WHEN S0 =>IF input = ‘1’ THEN

Mealy_state <= S1; ELSE

Mealy_state <= S0;END IF;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 178: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Mealy FSM in VHDLy

WHEN S1 =>IF input = ‘0’ THENIF input = ‘0’ THEN

Mealy_state <= S0; ELSE

M l S1Mealy_state <= S1;END IF;

END CASE;END IF;

END PROCESS;

Output <= ‘1’ WHEN (Mealy_state = S1 AND input = ‘0’) ELSE ‘0’;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 179: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

State Diagramg

Mealy FSM that Recognizes Sequence “10”

0 / 0 1 / 0 1 / 0

S0 S1

0 / 1reset

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 180: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

QuestionsQuestions

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 181: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Basic Logic Gatesg

---------------------------------------- OR gate-- OR gate---- two descriptions provided--------------------------------------

library ieee;use ieee.std_logic_1164.all;

--------------------------------------

entity OR_ent isy _port( x: in std_logic;

y: in std_logic;F: out std_logic

););end OR_ent;

---------------------------------------

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 182: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Basic Logic Gatesgarchitecture OR_arch of OR_ent isbegin

process(x, y)begin

-- compare to truth tablepif ((x='0') and (y='0')) thenF <= '0';

elseF <= '1';F <= 1 ;

end if;end process;

end OR_arch;

architecture OR_beh of OR_ent is beginbegin

F <= x or y;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

end OR_beh;

Page 183: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Basic Logic Gatesg

---------------------------------------- XNOR gate-- XNOR gate ---- two descriptions provided--------------------------------------

library ieee;use ieee.std_logic_1164.all;

--------------------------------------

entity XNOR_ent isy _port( x: in std_logic;

y: in std_logic;F: out std_logic

););end XNOR_ent;---------------------------------------

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 184: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Basic Logic Gatesgarchitecture behv1 of XNOR_ent isbegin

process(x, y)begin

-- compare to truth tablepif (x/=y) thenF <= '0';

elseF <= '1';F <= 1 ;

end if;end process;

end behv1;

architecture behv2 of XNOR_ent is beginbegin

F <= x xnor y;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

end behv2;

Page 185: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Combinational Circuits-------------------------------------------------------------- Combinational Logic Design

by Weijun Zhang 04/2001-- by Weijun Zhang, 04/2001---- A simple example of VHDL Structure Modeling-- we might define two components in two separate files,g p p ,-- in main file, we use port map statement to instantiate -- the mapping relationship between each components -- and the entire circuit.------------------------------------------------------------

library ieee; -- component #1use ieee.std logic 1164.all;_ g _ ;

entity OR_GATE isport( X: in std_logic;

Y in std logicY: in std_logic;F2: out std_logic

);end OR GATE;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

end OR_GATE;

Page 186: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Combinational Circuits

architecture behv of OR_GATE isbeginbeginprocess(X,Y)begin

F2 <= X or Y; -- behavior des.;end process;end behv;

-------------------------------------------------------------

library ieee; -- component #2use ieee.std logic 1164.all;_ g _ ;

entity AND_GATE isport( A: in std_logic;

B in std logicB: in std_logic;F1: out std_logic

);end AND GATE;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

end AND_GATE;

Page 187: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Combinational Circuitsarchitecture behv of AND_GATE isbeginprocess(A B)process(A,B)begin

F1 <= A and B; -- behavior des.end process;p ;end behv;

--------------------------------------------------------------

library ieee; -- top level circuituse ieee.std_logic_1164.all;use work.all;;

entity comb_ckt isport( input1: in std_logic;

inp t2 in std logicinput2: in std_logic;input3: in std_logic;output: out std_logic

);

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

);end comb_ckt;

Page 188: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Combinational Circuits

architecture struct of comb_ckt is

component AND_GATE is -- as entity of AND_GATEport( A: in std_logic;

B: in std_logic;_ g ;F1: out std_logic

);end component;

component OR_GATE is -- as entity of OR_GATEport( X: in std_logic;

Y: in std logic;_ g ;F2: out std_logic

);end component;

signal wire: std_logic; -- signal just like wire

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 189: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Combinational Circuits

beginbegin

-- use sign "=>" to clarify the pin mapping

Gate1: AND_GATE port map (A=>input1, B=>input2, F1=>wire);Gate2: OR_GATE port map (X=>wire, Y=>input3, F2=>output);

end struct;end struct;

----------------------------------------------------------------

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 190: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Tri-state Driver

---------------------------------------------------------VHDL model for tri state driver-- VHDL model for tri state driver

-- by Weijun Zhang, 05/2001---- this friver often used to control system outputsy p---------------------------------------------------------

library ieee;use ieee std logic 1164 all;use ieee.std_logic_1164.all;

entity tristate_dr isport( d in: in std logic vector(7 downto 0);p ( _ _ g _ ( );

en: in std_logic;d_out: out std_logic_vector(7 downto 0)

);end tristate drend tristate_dr;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 191: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Tri-state Driver

architecture behavior of tristate dr isarchitecture behavior of tristate_dr isbegin

process(d_in, en)p ( _ , )begin

if en='1' thend_out <= d_in;

elseelse-- array can be created simply by using vectord_out <= "ZZZZZZZZ";

end if;;end process;

end behavior;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 192: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Multiplexor--------------------------------------------------- VHDL code for 4:1 multiplexor

by Weijun Zhang 04/2001-- by Weijun Zhang, 04/2001---- Multiplexor is a device to select different-- inputs to outputs. we use 3 bits vector to p p-- describe its I/O ports -------------------------------------------------library ieee;use ieee std logic 1164 all;use ieee.std_logic_1164.all;-------------------------------------------------

entity Mux isyport( I3: in std_logic_vector(2 downto 0);

I2: in std_logic_vector(2 downto 0);I1: in std_logic_vector(2 downto 0);I0 in std logic ector(2 do nto 0)I0: in std_logic_vector(2 downto 0);S: in std_logic_vector(1 downto 0);O: out std_logic_vector(2 downto 0)

);

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

);end Mux;

Page 193: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Multiplexor

-------------------------------------------------

architecture behv1 of Mux isbegin

process(I3,I2,I1,I0,S)p ( , , , , )begin

-- use case statementcase S iscase S iswhen "00" => O <= I0;when "01" => O <= I1;when "10" => O <= I2;;when "11" => O <= I3;when others => O <= "ZZZ";

end case;

end process;end behv1;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 194: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Multiplexor

architecture behv2 of Mux isbegin

-- use when.. else statementO <= I0 when S="00" else

I1 when S="01" elseI2 when S="10" elseI2 when S= 10 elseI3 when S="11" else"ZZZ";

end behv2;--------------------------------------------------

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 195: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Decoder--------------------------------------------------- 2:4 Decoder

by Weijun Zhang 04/2001-- by Weijun Zhang, 04/2001---- decoder is a kind of inverse process-- of multiplexorp-------------------------------------------------

library ieee;use ieee std logic 1164 all;use ieee.std_logic_1164.all;

-------------------------------------------------

entity DECODER isport( I: in std_logic_vector(1 downto 0);

O: out std_logic_vector(3 downto 0)));end DECODER;

-------------------------------------------------

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 196: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Decoderarchitecture behv of DECODER isbegin

-- process statement

process (I)p ( )begin

-- use case statement

case I iswhen "00" => O <= "0001";when "01" => O <= "0010";;when "10" => O <= "0100";when "11" => O <= "1000";when others => O <= "XXXX";

end caseend case;

end process;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

end behv;

Page 197: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Decoder

architecture when else of DECODER isarchitecture when_else of DECODER isbegin

-- use when..else statement

O <= "0001" when I = "00" else"0010" when I = "01" else"0100" when I = "10" else0100 when I = 10 else"1000" when I = "11" else"XXXX";

end when_else;

--------------------------------------------------

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 198: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Adder---------------------------------------------------------- VHDL code for n-bit adder

by Weujun Zhang 04/2001-- by Weujun Zhang, 04/2001-- function of adder: A plus B to get n-bit sum and 1 bit carry-- we may use generic statement to set the parameter n of the adder.--------------------------------------------------------library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee std logic unsigned all;use ieee.std_logic_unsigned.all;--------------------------------------------------------entity ADDER is

generic(n: natural :=2);port( A: in std_logic_vector(n-1 downto 0);

B: in std_logic_vector(n-1 downto 0);carr o t std logiccarry: out std_logic;sum:out std_logic_vector(n-1 downto 0)

);

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

end ADDER;

Page 199: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Adder--------------------------------------------------------

architecture behv of ADDER isarchitecture behv of ADDER is

-- define a temparary signal to store the result

signal result: std_logic_vector(n downto 0);

begin

-- the 3rd bit should be carry

result <= ('0' & A)+('0' & B);( ) ( );sum <= result(n-1 downto 0);carry <= result(n);

end behend behv;

--------------------------------------------------------

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 200: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Comparator----------------------------------------------------- n-bit Comparator

by Weijun Zhang 04/2001-- by Weijun Zhang, 04/2001 ---- this simple comparator has two n-bit inputs & -- three 1-bit outputsp---------------------------------------------------library ieee;use ieee.std_logic_1164.all;---------------------------------------------------

entity Comparator is

generic(n: natural :=2);port( A: in std_logic_vector(n-1 downto 0);

B: in std_logic_vector(n-1 downto 0);less o t std logicless: out std_logic;equal: out std_logic;greater: out std_logic

);

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

);end Comparator;

Page 201: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Comparator---------------------------------------------------architecture behv of Comparator isbeginbegin

process(A,B)begin

if (A<B) then ( )less <= '1';equal <= '0';greater <= '0';

elsif (A=B) thenelsif (A=B) then less <= '0';equal <= '1';greater <= '0';g ;

else less <= '0';equal <= '0';greater <= '1'greater <= '1';

end if;end process;

end behv;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

end behv;---------------------------------------------------

Page 202: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

ALU----------------------------------------------------- Simple ALU Module

by Weijun Zhang 04/2001-- by Weijun Zhang, 04/2001---- ALU stands for arithmatic logic unit.-- It perform multiple operations according to p p p g-- the control bits.-- we use 2's complement subraction in this example-- two 2-bit inputs & carry-bit ignored---------------------------------------------------

library ieee;use ieee.std logic 1164.all;_ g _ ;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;

---------------------------------------------------

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 203: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

ALU

entity ALU is

port( A: in std_logic_vector(1 downto 0);p ( _ g _ ( );B: in std_logic_vector(1 downto 0);Sel: in std_logic_vector(1 downto 0);Res: out std_logic_vector(1 downto 0)

););

end ALU;

---------------------------------------------------

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 204: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

ALUarchitecture behv of ALU isbegin

process(A B Sel)process(A,B,Sel)begin-- use case statement to achieve -- different operations of ALUpcase Sel is

when "00" =>Res <= A + B;

when "01" =>when 01 =>Res <= A + (not B) + 1;

when "10" =>Res <= A and B;;

when "11" =>Res <= A or B;

when others =>Res <= "XX"Res <= "XX";

end case;end process;

end behv;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

end behv;----------------------------------------------------

Page 205: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Multiplier---------------------------------------------------------- Example of doing multiplication showing

(1) how to use variable with in process-- (1) how to use variable with in process-- (2) how to use for loop statement-- (3) algorithm of multiplication---- by Weijun Zhang, 05/2001--------------------------------------------------------

library ieee;library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std logic unsigned.all;_ g _ g ;

-- two 4-bit inputs and one 8-bit outputsentity multiplier isport( n m1 n m2 in std logic ector(1 do nto 0)port( num1, num2: in std_logic_vector(1 downto 0);

product: out std_logic_vector(3 downto 0));end multiplier;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

end multiplier;

Page 206: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Multiplierarchitecture behv of multiplier isbeginprocess(num1 num2)process(num1, num2)variable num1_reg: std_logic_vector(2 downto 0);variable product_reg: std_logic_vector(5 downto 0);

begingnum1_reg := '0' & num1;product_reg := "0000" & num2;-- use variables doing computation

algorithm is to repeat shifting/adding-- algorithm is to repeat shifting/addingfor i in 1 to 3 loopif product_reg(0)='1' then

product reg(5 downto 3) := product reg(5 downto 3) p _ g( ) p _ g( )+ num1_reg(2 downto 0);

end if;product_reg(5 downto 0) := '0' & product_reg(5 downto 1);

end loopend loop;-- assign the result of computation back to output signalproduct <= product_reg(3 downto 0);

end process;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

end process;end behv;

Page 207: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

QuestionsQuestions

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 208: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Simple Latch---------------------------------------------- Simple D Latch

by Weijun Zhang 04/2001-- by Weijun Zhang, 04/2001---- latch is simply controlled by enable bit-- but has nothing to do with clock sigalg g-- notice this difference from flip-flops--------------------------------------------

library ieee ;library ieee ;use ieee.std_logic_1164.all;

--------------------------------------------

entity D_latch isport( data_in: in std_logic;

enable in std logicenable: in std_logic;data_out: out std_logic

);end D latch;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

end D_latch;--------------------------------------------

Page 209: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Simple Latch

architecture behv of D latch isarchitecture behv of D_latch isbegin

-- compare this to D flipflopp p p

process(data_in, enable)begin

if (enable='1') thenif (enable= 1 ) then-- no clock signal here

data_out <= data_in; end if;;

end process;

end behv;

--------------------------------------------

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 210: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

D Flip-flop----------------------------------------------- D Flip-Flop

by Weijun Zhang 04/2001-- by Weijun Zhang, 04/2001---- Flip-flop is the basic component in -- sequential logic designq g g-- we assign input signal to the output -- at the clock rising edge ---------------------------------------------library ieee ;library ieee ;use ieee.std_logic_1164.all;use work.all;---------------------------------------------

entity dff isport( data_in: in std_logic;

clock in std logicclock: in std_logic;data_out: out std_logic

);end dff;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

end dff;

Page 211: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

D Flip-flop

----------------------------------------------

architecture behv of dff isbegin

process(data_in, clock)begin

clock rising edge-- clock rising edge

if (clock='1' and clock'event) thendata out <= data in;_ _ ;

end if;

end process;

end behv;

----------------------------------------------

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 212: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

JK Flip-flop------------------------------------------------ JK Flip-Flop with reset

by Weijun Zhang 04/2001-- by Weijun Zhang, 04/2001---- the description of JK Flip-Flop is based -- on functional truth table-- concurrent statement and signal assignment-- are using in this example ----------------------------------------------library ieee;library ieee;use ieee.std_logic_1164.all;----------------------------------------------

entity JK_FF isport ( clock: in std_logic;

J, K: in std_logic;reset in std logicreset: in std_logic;Q, Qbar: out std_logic

);end JK FF;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

end JK_FF;

Page 213: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

JK Flip-flop

-----------------------------------------------

architecture behv of JK_FF is

-- define the useful signals here

signal state: std_logic;signal input: std logic vector(1 downto 0);signal input: std_logic_vector(1 downto 0);

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 214: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

JK Flip-flopbegin

-- combine inputs into vectorinput <= J & K;input <= J & K;p: process(clock, reset) isbeginif (reset='1') then( )

state <= '0';elsif (rising_edge(clock)) then

-- compare to the truth tablecase (input) iscase (input) is

when "11" =>state <= not state;

when "10" =>state <= '1';

when "01" =>state <= '0';

hen others =>when others =>null;

end case;end if;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

end if;end process;

Page 215: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

JK Flip-flop

-- concurrent statementsQ <= state;Qbar <= not state;;

end behv;

-------------------------------------------------

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 216: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Registerg----------------------------------------------------- n-bit Register

by Weijun Zhang 04/2001-- by Weijun Zhang, 04/2001---------------------------------------------------

library ieee ;y ;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;

---------------------------------------------------

entity reg is

generic(n: natural :=2);port( I: in std_logic_vector(n-1 downto 0);

clock: in std_logic;load in std logicload: in std_logic;clear: in std_logic;Q: out std_logic_vector(n-1 downto 0)

);

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

);end reg;

Page 217: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Registerg----------------------------------------------------

architecture behv of reg isarchitecture behv of reg issignal Q_tmp: std_logic_vector(n-1 downto 0);

beginprocess(I, clock, load, clear)p ( , , , )beginif clear = '0' then

-- use 'range in signal assigmentQ tmp <= (Q tmp'range => '0');Q_tmp <= (Q_tmp range => 0 );

elsif (clock='1' and clock'event) thenif load = '1' then

Q tmp <= I;Q_ p ;end if;

end if;end process;

conc rrent statement-- concurrent statementQ <= Q_tmp;

end behv;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

---------------------------------------------------

Page 218: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Shift Registerg----------------------------------------------------- 3-bit Shift-Register/Shifter

by Weijun Zhang 04/2001-- by Weijun Zhang, 04/2001---- reset is ignored---------------------------------------------------

library ieee ;use ieee.std_logic_1164.all;

---------------------------------------------------

entity shift reg isy _ gport( I: in std_logic;

clock: in std_logic;shift: in std_logic;Q o t std logicQ: out std_logic

);end shift_reg;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

---------------------------------------------------

Page 219: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Shift Registergarchitecture behv of shift_reg is

-- initialize the declared signalsignal S: std logic vector(2 downto 0):="111";signal S: std_logic_vector(2 downto 0):= 111 ;

begin

process(I, clock, shift, S)begin-- everything happens upon the clock changingif clock'event and clock='1' thenif clock event and clock= 1 then

if shift = '1' thenS <= I & S(2 downto 1);

end if;;end if;

end process;

conc rrent assignment-- concurrent assignmentQ <= S(0);

end behv;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

end behv;----------------------------------------------------

Page 220: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Counter------------------------------------------------------ VHDL code for n-bit counter

by Weijun Zhang 04/2001-- by Weijun Zhang, 04/2001---- this is the behavior description of n-bit counter-- another way can be used is FSM model. y----------------------------------------------------library ieee ;use ieee.std_logic_1164.all;use ieee std logic unsigned all;use ieee.std_logic_unsigned.all;----------------------------------------------------entity counter is

generic(n: natural :=2);port( clock: in std_logic;

clear: in std_logic;co nt in std logiccount: in std_logic;Q: out std_logic_vector(n-1 downto 0)

);end counter;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

end counter;----------------------------------------------------

Page 221: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Counterarchitecture behv of counter is

signal Pre_Q: std_logic_vector(n-1 downto 0);

begin-- behavior describe the counterprocess(clock, count, clear)p ( , , )beginif clear = '1' then

Pre_Q <= Pre_Q - Pre_Q;elsif (clock='1' and clock'event) thenelsif (clock= 1 and clock event) then

if count = '1' thenPre_Q <= Pre_Q + 1;

end if;;end if;

end process;

conc rrent assignment statement-- concurrent assignment statementQ <= Pre_Q;

end behv;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

end behv;-----------------------------------------------------

Page 222: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

FSM------------------------------------------------------- VHDL FSM (Finite State Machine) modeling

by Weijun Zhang 04/2001-- by Weijun Zhang, 04/2001---- FSM model consists of two concurrent processes-- state_reg and comb_logic_ g _ g-- we use case statement to describe the state -- transistion. All the inputs and signals are-- put into the process sensitive list. -----------------------------------------------------library ieee ;use ieee.std_logic_1164.all;-----------------------------------------------------entity seq_design isport( a: in std_logic;

clock: in std_logic;reset in std logicreset: in std_logic;x: out std_logic

);end seq design;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

end seq_design;-----------------------------------------------------

Page 223: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

FSMarchitecture FSM of seq_design is

define the states of FSM model-- define the states of FSM model

type state_type is (S0, S1, S2, S3);signal next_state, current_state: state_type;g _ , _ _ yp ;

begin

cocurrent process#1: state registers-- cocurrent process#1: state registersstate_reg: process(clock, reset)begin

if (reset='1') thencurrent_state <= S0;

elsif (clock'event and clock='1') thenc rrent state <= ne t statecurrent_state <= next_state;

end if;

end process;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

end process;

Page 224: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

FSM-- cocurrent process#2: combinational logiccomb_logic: process(current_state, a)beginbegin-- use case statement to show the -- state transistion

case current_state is

when S0 => x <= '0';if a='0' thenif a= 0 then

next_state <= S0;elsif a ='1' then

next state <= S1;_ ;end if;

when S1 => x <= '0';if a='0' thenif a='0' then

next_state <= S1;elsif a='1' then

next state <= S2;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

next_state S2;end if;

Page 225: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

FSMwhen S2 => x <= '0';

if a='0' thennext state <= S2;next_state <= S2;

elsif a='1' thennext_state <= S3;

end if;;

when S3 => x <= '1';if a='0' then

next state <= S3;next_state <= S3;elsif a='1' then

next_state <= S0;end if;;

when others =>x <= '0';ne t state <= S0next_state <= S0;

end case;end process;

end FSM;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

end FSM;-----------------------------------------------------

Page 226: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

RAM---------------------------------------------------------------- a simple 4*4 RAM module

by Weijun Zhang-- by Weijun Zhang--------------------------------------------------------------library ieee;use ieee.std_logic_1164.all;_ g _ ;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;--------------------------------------------------------------entity SRAM isentity SRAM isgeneric(width: integer:=4; depth: integer:=4; addr: integer:=2);port( Clock: in std_logic;

Enable: in std logic;_ g ;Read: in std_logic;Write: in std_logic;Read_Addr: in std_logic_vector(addr-1 downto 0);Write Addr in std logic ector(addr 1 do nto 0)Write_Addr: in std_logic_vector(addr-1 downto 0); Data_in: in std_logic_vector(width-1 downto 0);Data_out: out std_logic_vector(width-1 downto 0)

);

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

);end SRAM;

Page 227: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

RAMarchitecture behav of SRAM is-- use array to define the bunch of internal temparary signalstype ram type is array (0 to depth 1) oftype ram_type is array (0 to depth-1) of

std_logic_vector(width-1 downto 0);signal tmp_ram: ram_type;beging

-- Read Functional Sectionprocess(Clock, Read)beginif (Clock'event and Clock='1') thenif (Clock event and Clock= 1 ) then

if Enable='1' thenif Read='1' then

-- buildin function conv integer change the type_ g g yp-- from std_logic_vector to integerData_out <= tmp_ram(conv_integer(Read_Addr));

elseData o t <= (Data o t'range => 'Z')Data_out <= (Data_out'range => 'Z');

end if;end if;

end if;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

end if;end process;

Page 228: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

RAM

Write Functional Section-- Write Functional Sectionprocess(Clock, Write)beginif (Clock'event and Clock='1') then( )

if Enable='1' thenif Write='1' then

tmp_ram(conv_integer(Write_Addr)) <= Data_in;end if;end if;

end if;end if;

end process;p ;

end behav;----------------------------------------------------------------

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 229: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

ROM---------------------------------------------------------------- 32*8 ROM module

by Weijun Zhang 04/2001-- by Weijun Zhang, 04/2001---- ROM model has predefined content for read only purpose--------------------------------------------------------------library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee std logic unsigned all;use ieee.std_logic_unsigned.all;

entity ROM isport( Clock : in std logic;p ( _ g ;

Reset : in std_logic;Enable : in std_logic;Read: in std_logic;Address in std logic ector(4 do nto 0)Address : in std_logic_vector(4 downto 0);Data_out: out std_logic_vector(7 downto 0)

);end ROM;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

end ROM;--------------------------------------------------------------

Page 230: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

ROMarchitecture Behav of ROM is

type ROM_Array is array (0 to 31) of std logic vector(7 downto 0);of std_logic_vector(7 downto 0);

constant Content: ROM_Array := (0 => "00000001", -- Suppose ROM has 1 => "00000010", -- prestored value, p2 => "00000011", -- like this table3 => "00000100", --4 => "00000101", --5 => "00000110"5 => 00000110 , --6 => "00000111", --7 => "00001000", --8 => "00001001", --,9 => "00001010", --10 => "00001011", --11 => "00001100", --12 => "00001101"12 => "00001101", --13 => "00001110", --

14 => "00001111", --OTHERS => "11111111“ --

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

OTHERS 11111111);

Page 231: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

ROM

beginprocess(Clock Reset Read Address)process(Clock, Reset, Read, Address)begin

if( Reset = '1' ) thenData_out <= "ZZZZZZZZ";_ ;

elsif( Clock'event and Clock = '1' ) thenif Enable = '1' then

if( Read = '1' ) thenData out <= Content(conv integer(Address));Data_out <= Content(conv_integer(Address));

elseData_out <= "ZZZZZZZZ";

end if;;end if;

end if;end process;

end Behaend Behav;

--------------------------------------------------------------

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 232: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

GCD Calculator - Behavioral------------------------------------------------------- Behvaior Design of GCD calculator

by Weijun Zhang 05/2001-- by Weijun Zhang, 05/2001-----------------------------------------------------library ieee;use ieee.std_logic_1164.all;_ g _ ;use ieee.std_logic_arith.all;use work.all;-----------------------------------------------------entity gcd1 isentity gcd1 isport( Data_X: in unsigned(3 downto 0);

Data_Y: in unsigned(3 downto 0);Data out: out unsigned(3 downto 0)_ g ( )

);end gcd1;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 233: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

GCD Calculator - Behavioralarchitecture behv of gcd1 isbegin

process(Data X Data Y)process(Data_X, Data_Y)variable tmp_X, tmp_Y: unsigned(3 downto 0);

begintmp_X := Data_X;p_ _ ;tmp_Y := Data_Y;for i in 0 to 15 loop

if (tmp_X/=tmp_Y) thenif (tmp X < tmp Y) thenif (tmp_X < tmp_Y) then

tmp_Y := tmp_Y - tmp_X;else

tmp X := tmp X - tmp Y;p_ p_ p_ ;end if;

elseData_out <= tmp_X;

end ifend if;end loop;

end process;end behv;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

end behv;-----------------------------------------------------

Page 234: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

GCD Calculator - FSMD---------------------------------------------------------------- GCD design using FSMD

Weijun Zhang 04/2001-- Weijun Zhang, 04/2001-- GCD algorithm behavior modeling (GCD.vhd)-- the calculator has two 4-bit inputs and one output-- NOTE: idle state required to obtain the correct synthesis resultsq y--------------------------------------------------------------library ieee;use ieee.std_logic_1164.all;use ieee std logic arith all;use ieee.std_logic_arith.all;use work.all;--------------------------------------------------------------entity gcd isy gport( clk: in std_logic;

rst: in std_logic;go_i: in std_logic;

i in nsigned(3 do nto 0)x_i: in unsigned(3 downto 0);y_i: in unsigned(3 downto 0);d_o: out unsigned(3 downto 0)

);

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

);end gcd;

Page 235: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

GCD Calculator - FSMDarchitecture FSMD of gcd isbegin

process(rst clk)process(rst, clk)-- define states using variable type S_Type is (ST0, ST1, ST2);variable State: S_Type := ST0 ;_ yp ;variable Data_X, Data_Y: unsigned(3 downto 0);begin

if (rst='1') then -- initializationd o <= "0000";d_o <= 0000 ;State := ST0;

elsif (clk'event and clk='1') thencase State is

when ST0 => -- startingif (go_i='1') then

Data_X := x_i;Data Y = iData_Y := y_i;State := ST1;

elseState := ST0;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

State : ST0;end if;

Page 236: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

GCD Calculator - FSMDwhen ST1 => -- idle state

State := ST2;when ST2 => computationwhen ST2 => -- computation

if (Data_X/=Data_Y) thenif (Data_X<Data_Y) then

Data_Y := Data_Y - Data_X;_ _ _ ;else

Data_X := Data_X - Data_Y;end if;State := ST1;State := ST1;

elsed_o <=Data_X; -- done

State := ST0;;end if;

when others => -- go back d_o <= "ZZZZ";State = ST0State := ST0;

end case;end if;

end process;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

end process;end FSMD;

Page 237: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

GCD Calculator – FSM+D------------------------------------------------------------------------ GCD CALCULATOR

Weijun Zhang 04/2001-- Weijun Zhang, 04/2001---- we can put all the components in one document(gcd2.vhd)-- or put them in separate files p p-- this is the example of RT level modeling (FSM + DataPath)-- the code is synthesized by Synopsys design compiler----------------------------------------------------------------------

Component: MULTIPLEXOR-- Component: MULTIPLEXOR --------------------------------------------library IEEE;use IEEE.std_logic_1164.all;use IEEE.std logic arith.all;_ g _ ;use IEEE.std_logic_unsigned.all;

entity mux is port( rst sLine in std logicport( rst, sLine: in std_logic;

load, result: in std_logic_vector( 3 downto 0 );output: out std_logic_vector( 3 downto 0 )

);

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

);end mux;

Page 238: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

GCD Calculator – FSM+D

architecture mux arc of mux isarchitecture mux_arc of mux isbegin

process( rst, sLine, load, result )begingif( rst = '1' ) then

output <= "0000"; -- do nothingelsif sLine = '0' then

output <= load; load inputsoutput <= load; -- load inputselse

output <= result; -- load resultsend if;;

end process;end mux_arc;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 239: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

GCD Calculator – FSM+D

-- Component: COMPARATOR ---------------------------------------------

library IEEE;use IEEE.std_logic_1164.all;use IEEE.std_logic_arith.all;_ g _ ;use IEEE.std_logic_unsigned.all;

entity comparator isport( rst: in std logic;port( rst: in std_logic;

x, y: in std_logic_vector( 3 downto 0 );output: out std_logic_vector( 1 downto 0 )

););end comparator;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 240: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

GCD Calculator – FSM+D

architecture comparator arc of comparator isarchitecture comparator_arc of comparator isbegin

process( x, y, rst )begingif( rst = '1' ) then

output <= "00"; -- do nothingelsif( x > y ) then

output <= "10"; if x greateroutput <= 10 ; -- if x greaterelsif( x < y ) then

output <= "01"; -- if y greaterelse

output <= "11"; -- if equivalance. end if;

end process;end comparator arcend comparator_arc;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 241: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

GCD Calculator – FSM+D

-- Component: SUBTRACTOR ----------------------------------------------

library IEEE;use IEEE.std_logic_1164.all;use IEEE.std_logic_arith.all;_ g _ ;use IEEE.std_logic_unsigned.all;

entity subtractor isport( rst: in std logic;port( rst: in std_logic;

cmd: in std_logic_vector( 1 downto 0 );x, y: in std_logic_vector( 3 downto 0 );xout, yout: out std logic vector( 3 downto 0 ), y _ g _ ( )

);end subtractor;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 242: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

GCD Calculator – FSM+D

architecture subtractor_arc of subtractor isbeginbegin

process( rst, cmd, x, y )beginif( rst = '1' or cmd = "00" ) then -- not active.( )

xout <= "0000";yout <= "0000";

elsif( cmd = "10" ) then -- x is greaterxout <= ( x y );xout <= ( x - y );yout <= y;

elsif( cmd = "01" ) then -- y is greaterxout <= x;;yout <= ( y - x );

else xout <= x; -- x and y are equal

o t <=yout <= y; end if;

end process;end subtractor arc;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

end subtractor_arc;

Page 243: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

GCD Calculator – FSM+D

-- Component: REGISTER ---------------------------------------------------

library IEEE;use IEEE.std_logic_1164.all;use IEEE.std_logic_arith.all;_ g _ ;use IEEE.std_logic_unsigned.all;

entity regis isport( rst clk load: in std logic;port( rst, clk, load: in std_logic;

input: in std_logic_vector( 3 downto 0 );output: out std_logic_vector( 3 downto 0 )

););end regis;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 244: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

GCD Calculator – FSM+D

architecture regis arc of regis isarchitecture regis_arc of regis isbegin

process( rst, clk, load, input )begingif( rst = '1' ) then

output <= "0000";elsif( clk'event and clk = '1') then

if( load = '1' ) thenif( load = 1 ) thenoutput <= input;

end if;end if;;

end process;end regis_arc;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 245: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

GCD Calculator – FSM+D

component: FSM controller-- component: FSM controller --------------------------------------------

library IEEE;use IEEE.std_logic_1164.all;_ g _ ;use IEEE.std_logic_arith.all;use IEEE.std_logic_unsigned.all;

entity fsm isentity fsm isport( rst, clk, proceed: in std_logic;

comparison: in std_logic_vector( 1 downto 0 );enable, xsel, ysel, xld, yld: out std logic, , y , , y _ g

);end fsm;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 246: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

GCD Calculator – FSM+D

architecture fsm_arc of fsm is

type states is ( init, s0, s1, s2, s3, s4, s5 );yp ( , , , , , , );signal nState, cState: states;

beginprocess( rst clk )process( rst, clk )beginif( rst = '1' ) then

cState <= init;;elsif( clk'event and clk = '1' ) then

cState <= nState;end if;

end processend process;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 247: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

GCD Calculator – FSM+Dprocess( proceed, comparison, cState )begincase cState iscase cState is when init => if( proceed = '0' ) then

nState <= init;else

nState <= s0;end if;

when s0 => enable <= '0';xsel <= '0';xsel <= 0 ;ysel <= '0';xld <= '0';yld <= '0';y ;nState <= s1;

when s1 => enable <= '0';xsel <= '0';

sel <= '0'ysel <= '0';xld <= '1';yld <= '1';nState <= s2;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

nState s2;

Page 248: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

GCD Calculator – FSM+Dwhen s2 => xld <= '0';

yld <= '0';if( comparison = "10" ) thenif( comparison = 10 ) then

nState <= s3;elsif( comparison = "01" ) then

nState <= s4; ;elsif( comparison = "11" ) then

nState <= s5; end if;

when s3 => enable <= '0';when s3 => enable <= 0 ;xsel <= '1';ysel <= '0';xld <= '1';;yld <= '0';nState <= s2;

when s4 => enable <= '0';sel <= '0'xsel <= '0';

ysel <= '1';xld <= '0';yld <= '1';

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

yld 1 ;nState <= s2;

Page 249: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

GCD Calculator – FSM+D

when s5 => enable <= '1';when s5 => enable <= 1 ;xsel <= '1';ysel <= '1';xld <= '1';;yld <= '1';nState <= s0;

when others => nState <= s0;when others => nState <= s0;

end case;

end process;

end fsm_arc;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 250: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

GCD Calculator – FSM+D

------------------------------------------------------------------------ GCD Calculator: top level design using structural modeling-- FSM + Datapath (mux, registers, subtracter and comparator)----------------------------------------------------------------------

library IEEE;use IEEE.std_logic_1164.all;use IEEE std logic arith all;use IEEE.std_logic_arith.all;use IEEE.std_logic_unsigned.all;use work.all;

entity gcd isport( rst, clk, go_i: in std_logic;

x_i, y_i: in std_logic_vector( 3 downto 0 );d o o t std logic ector( 3 do nto 0 )d_o: out std_logic_vector( 3 downto 0 )

);end gcd;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 251: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

GCD Calculator – FSM+Darchitecture gcd_arc of gcd iscomponent fsm is

port( rst clk proceed: in std logic;port( rst, clk, proceed: in std_logic;comparison: in std_logic_vector( 1 downto 0 );enable, xsel, ysel, xld, yld: out std_logic

););end component;

component mux is port( rst sLine: in std logic;port( rst, sLine: in std_logic;

load, result: in std_logic_vector( 3 downto 0 );output: out std_logic_vector( 3 downto 0 )

););end component;

component comparator isport( rst in std logicport( rst: in std_logic;

x, y: in std_logic_vector( 3 downto 0 );output: out std_logic_vector( 1 downto 0 )

);

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

);end component;

Page 252: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

GCD Calculator – FSM+D

component subtractor isport( rst: in std logic;port( rst: in std_logic;

cmd: in std_logic_vector( 1 downto 0 );x, y: in std_logic_vector( 3 downto 0 );xout, yout: out std_logic_vector( 3 downto 0 ), y _ g _ ( )

);end component;

component regis iscomponent regis isport( rst, clk, load: in std_logic;

input: in std_logic_vector( 3 downto 0 );output: out std logic vector( 3 downto 0 )p _ g _ ( )

);end component;

signal ld ld sel sel enable std logicsignal xld, yld, xsel, ysel, enable: std_logic;signal comparison: std_logic_vector( 1 downto 0 );signal result: std_logic_vector( 3 downto 0 );

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

signal xsub, ysub, xmux, ymux, xreg, yreg: std_logic_vector( 3 downto 0 );

Page 253: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

GCD Calculator – FSM+D

begin

-- doing structure modeling here

-- FSM controllerTOFSM: fsm port map( rst, clk, go_i, comparison,

enable, xsel, ysel, xld, yld );

Datapath-- DatapathX_MUX: mux port map( rst, xsel, x_i, xsub, xmux );Y_MUX: mux port map( rst, ysel, y_i, ysub, ymux );X REG: regis port map( rst, clk, xld, xmux, xreg ); _ g p p( , , , , g );Y_REG: regis port map( rst, clk, yld, ymux, yreg ); U_COMP: comparator port map( rst, xreg, yreg, comparison );X_SUB: subtractor port map( rst, comparison, xreg, yreg, xsub, ysub );OUT REG regis port map( rst clk enable s b res lt )OUT_REG: regis port map( rst, clk, enable, xsub, result );

d_o <= result;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

end gcd_arc;

Page 254: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

FIR Filter----------------------------------------------------------------- FIR Digital Filter Design (DSP example)

VHDL Data Flow modeling-- VHDL Data-Flow modeling-- KEYWORD: generate, array, range, constant and subtype---------------------------------------------------------------library IEEE; -- declare the libraryy ; yuse IEEE.std_logic_1164.all;use IEEE.std_logic_arith.all;---------------------------------------------------------------entity FIR filter isentity FIR_filter isport( rst: in std_logic;

clk: in std_logic;coef ld: in std logic;_ _ g ;start: in std_logic;o_enable: in std_logic;bypass: in std_logic;Xn in in std logic ector(3 do nto 0)Xn_in: in std_logic_vector(3 downto 0);Yn_in: in std_logic_vector(15 downto 0);Xn_out: out std_logic_vector(3 downto 0);Yn out: out std logic vector(15 downto 0)

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Yn_out: out std_logic_vector(15 downto 0)); end FIR_filter;

Page 255: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

FIR Filterarchitecture BEH of FIR_filter is

constant K: integer := 4; -- circuit has four stages

-- use type and subtype to define the complex signalssubtype bit4 is std_logic_vector(3 downto 0);subtype bit8 is std_logic_vector(7 downto 0);yp _ g _ ( );subtype bit16 is std_logic_vector(15 downto 0);

type klx4 is array (K downto 0) of bit4;type kx8 is array (K 1 downto 0) of bit8;type kx8 is array (K-1 downto 0) of bit8;type klx8 is array (K downto 0) of bit8;type kx16 is array (K-1 downto 0) of bit16;type klx16 is array (K downto 0) of bit16;yp y ( ) ;

-- define signal in type of arrays signal REG1, REG2, COEF : klx4;signal MULT8 k 8signal MULT8 : kx8;signal MULT16 : kx16;signal SUM : klx16;signal Xn tmp : bit4;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

signal Xn_tmp : bit4;signal Yn_tmp : bit16;

Page 256: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

FIR Filter

begin

-- initialize the first stage of FIR circuit

REG2(K) <= Xn_in when (start='1')( ) _ ( )else (REG2(K)'range => '0');

REG1(K) <= (REG1(K)'range => '0');SUM(K) <= Yn_in;COEF(K) <= Xn in;COEF(K) <= Xn_in;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 257: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

FIR Filter-- start the computation, use generate to obtain the multiple stagesgen8: for j in K-1 downto 0 generate

stages: process (rst clk)stages: process (rst, clk)begin

if (rst='0') thenREG1(j) <= (REG1(j)'range => '0');(j) ( (j) g );REG2(j) <= (REG2(j)'range => '0');COEF(j) <= (COEF(j)'range => '0');MULT16(j) <= (MULT16(j)'range => '0');SUM(j) <= (SUM(j)'range => '0');SUM(j) <= (SUM(j) range => 0 );

elsif (clk'event and clk ='1') thenREG1(j) <= REG2(j+1); REG2(j) <= REG1(j);if (coef ld = '1') then COEF(j) <= COEF(j+1); end if;( _ ) (j) (j ); ;MULT8(j) <= signed(REG1(j))*signed(COEF(j));MULT16(j)(7 downto 0) <= MULT8(j);if (MULT8(j)(7)='0') then MULT16(j)(15 downto 8) <= "00000000";else MULT16(j)(15 do nto 8) <= "11111111"else MULT16(j)(15 downto 8) <= "11111111";end if;SUM(j) <= signed(MULT16(j))+signed(SUM(j+1));

end if;

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

end if;end process; end generate;

Page 258: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

FIR Filter

-- control the outputs by concurrent statements

Xn_tmp <= Xn_in when bypass = '1' elseREG2(0) when coef_ld = '0' elseCOEF(0);( );

Yn_tmp <= Yn_in when bypass = '1' elseSUM(0);

Xn_out <= Xn_tmp when o_enable = '0' else(Xn_out'range => 'Z');

Yn_out <= Yn_tmp when o_enable = '0' else(Yn_out'range => 'Z');

end BEHend BEH;

------------------------------------------------------------------

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 259: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application

Thank you for your attentionThank you for your attention

QuestionsQuestions

Microprocessors & Digital Systems Laboratory © 2009 National Technical University of Athens

Page 260: Moore’s Law in Microprocessors · VHDL Standards P1076.3 Standard VHDL Synthesis Packages (vhdlsynth) P1076 4P1076.4 St d d VITAL ASIC (A li ti S ifiStandard VITAL ASIC (Application