Spdas2 vlsibput

Post on 06-May-2015

1653 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

Transcript

What’s VHDL? Basic What’s VHDL? Basic ConceptConcept VHDL

Very Hard Difficult Language

Very High Speed Integrated Circuit Hardware

Description Language

Front end/Back end Design

Why VHDL? (Using an HDL)Can be used to

Describing,

Modeling, and

Designing digital systems

For the goals of

Requirement specification

Documentation

Testing using simulation

Verification

Synthesizing digital circuits

VHDL DevelopmentVHDL Development

US DoD initiated in 80’sVery High Speed ASIC Description

LanguageInitial objective was modeling only and

thus only a simulator was envisagedSubsequently tools for VHDL synthesis

were developed

History of VHDL

•Launched in 1980 by Defense Advanced

Research Projects Agency (DARPA)

•July 1983Intermetrics, IBM and Texas

Instruments were awarded a contract to

develop VHDL

•August 1985 release of final version of the

language under government contract, VHDL

Version 7.2

December 1987IEEE Standard 1076-1987

1988VHDL became an American National Standards Institute (ANSI ) standard

In 1990 Cadence opened the language to the public

For RTL design VITAL added– VITAL(VHDL Initiative Towards ASIC

Library)– IEEE revised VHDL & VITAL in 1993

SeptemberFinal review of standard in 2001

VHDL vs. VerilogVHDL vs. Verilog

Complex grammar– Complicated

compiler– Large memory for

simulation– Hard to learn

A lot of data types High level data types,

– Pointers– Alias

Easy language– Simple & fast

compiler– Efficient memory

usage and faster– Easy to learn for

beginner A few data types Hardware related

– Wires– Registers

VHDL vs. VerilogVHDL vs. Verilog

User defined types Strong type checking

– (ie it checks the typing more rigorously)

User defined Library & package

Open Language

All primitive types Some castings are

allowed

No user defined packages

Cadence’s language at first

Verilog modeled after C, VHDL is modeled after Ada

Verilog is case sensitive while VHDL is not

VHDL is more flexible

Verilog used extensively in the US while VHDL is used internationally

Data TypesData Types bit values: '0', '1' boolean values: TRUE, FALSE integer values: -(231) to +(231 - 1)

std_logic values: 'U','X','1','0','Z','W','H','L','-' U' = uninitialized'X' = unknown'W' = weak 'X‘'Z' = floating'H'/'L' = weak '1'/'0‘'-' = don't care

Std_logic_vector (n downto 0); Std_logic_vector (0 upto n);

Additional standardized packages

provide definitions

of data types and expressions of

timing data

– IEEE 1164 (data types)

– IEEE 1076.3 (numeric)

– IEEE 1076.4 (timing)

Hardware description languages describe a system– Systems can be described from many different points of view• Behavior: what does it do?• Structure: what is it composed of?• Functional properties: how do I interface to it?• Physical properties: how fast is it?

Usage (Using an HDL)

Descriptions can used for– Simulation• Verification, performance evaluation– Synthesis• First step in hardware design

SynthesisSynthesis

Synthesis:

Conversion of behavioral level description to

structural level netlist

Structural level netlist

– Implementation of behavioral description

– Describes interconnection of gates

Synthesis tool we shall use:

Leonardo Spectrum/ISE inbuilt synthesizer

SimulationSimulation Simulation is modeling the output

response of a circuit to given input stimuli

For our example circuit:– Given the values of A, B and S– Determine the values of X and

Y

Many types of simulators used– Event driven simulator is used

popularly– Simulation tool we shall use:

ModelSim/inbuilt simulator ISE

my_ckt

A

B

S

X

Y

Module/UnitModule/Unit

Logic module

A

B

C

Out put

In puts

FullAdder

Defining Modules in VHDLDefining Modules in VHDL

1.Define block by giving name

2.Specify i/p ,o/p lines (ports).

VHDL language elementsVHDL language elements

VHDL is composed of language VHDL is composed of language building building blocks blocks that consist of more than that consist of more than 75 75 reserved reserved words words and about 200 and about 200 descriptive wordsdescriptive words or or

wordword combinationscombinations

Reserved VHDL keywordsReserved VHDL keywordsVARIABLE

WAITWHENWHILEWITH

XNORXOR

RETURN

SELECTSEVERITYSIGNALSHAREDSLASLLSRASRLSUBTYPE

THENTOTRANSPORTTYPE

UNAFFECTEDUNITSUNTILUSE

OFONOPENOROTHERSOUT

PACKAGEPORTPOSTPONEDPROCEDUREPROCESSPURE

RANGERECORDREGISTERREMREPORTROLROR

ININERTIALINOUTIS

LABELLIBRARYLINKAGELITERALLOOP

MAPMOD NANDNEWNEXTNORNOTNULL

DISCONNECTDOWNTO

ELSEELSIFENDENTITYEXIT

FILEFORFUNCTION

GENERATEGENERICGROUPGUARDED

IFIMPURE

ABSACCESSAFTERALIASALLANDARCHITECTUREARRAYASSERTATTRIBUTE

BEGINBLOCKBODYBUFFERBUS

CASECOMPONENTCONFIGURATION CONSTANT

Levels of AbstractionLevels of AbstractionDigital system can be represented at different

levels of abstraction

– Behavioral—relationship between input and output signals, usually boolean expressions

– Structural—description of the collection of gates and connections, more like a schematic

– Physical (Layout)

VHDL Programming

Dataflow

Behavioral

Structural

Mixed Structural and Behavioral

VHDL structureVHDL structure

Library– Definitions, constants

Entity– Interface

Architecture– Implementation, function

LibrariesLibraries

Library ieee;

Use ieee.std_logic_1164.all;Use ieee.std_logic_arith.all;Use ieee.std_logic_signed.all;Use ieee.std_logic_unsigned.all;

EntityEntity

Define inputs and outputs Example:

Entity test is

Port( A,B,C,D: in std_logic;

E: out std_logic);

End test;

Inputs and Outputs

Chip

A

B

C

D

E

EntityEntity

Describes the interface of a module

entity Reg4 isport ( d0, d1, d2, d3, en, clk : in

std_logic;q0, q1, q2, q3 : out std_logic);

end Reg4;

entity name port names port mode (direction)

port type

Basic Identifiers– Can Only Use

alphabetic letters ( A-Z, a-z ), orDecimal digits ( 0-9 ), orUnderline character ( _ )

– Must Start With Alphabetic Letter – May NOT end with underline ( MyVal_ )– May NOT contain sequential underlines (My__Val)

Not case sensitive, but recommended to use always the same way.

It is also recommended to use capitals for language components– Examples– B3,b3,ram1,ram_1,ram_1_c, MyVal.The followings are not used_Basic_gateRam_2_Ram__2

The mode of the portThe mode of the port<mode> = in, out, inout, buffer, linkage

in: Component only read the signal

out: Component only write to the signal

inout: Component read or write to the signal (bidirectional signals)

buffer: Component write and read back the signal (no bidirectional signals, the signal is going out from the component)

linkage: Used only in the documentation

Concurrent operation Concurrent operation

Q=a+ b .c

<=a or (b and c)

=/ a or b and c=(a+ b) .cH= a + b . c’ + d

(not (a or (b and not c) or d))g<=(x or y) and (z or not (w and v))

ArchitectureArchitecture

Define functionality of the chip

X <= A AND B;Y <= C AND D;E <= X OR Y;

ChipA

B

C

D

E

X

Y

Dataflow ModelDataflow ModelThe flow of data through the entity is

modeled primarily using concurrent signal assignment statements. (uses statements that defines the actual flow of data.....)

The structure of the entity is not explicitly specified but it can be implicitly deduced.

Architecture MYARCH of MYENT is begin SUM <= A xor B after 8ns end MYARCH;

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity half_adder is Port ( a : in STD_LOGIC; b : in STD_LOGIC; carry : out STD_LOGIC; sum : out STD_LOGIC);end half_adder;

architecture Behavioral of half_adder is

beginsum<= a xor b;carry<= a and b;

end Behavioral;

XOR

&

a

bsum

carry

Logical operators defined in Logical operators defined in VHDL VHDL

NOTANDNANDORNORXORXNOR

Delay in Signal AssignmentDelay in Signal Assignment

There are two types of delay that can be applied when assigning a time/value pair into the driver of a signal– Inertial Delay– Transport Delay

Inertial DelayInertial DelayInertial delay models the delays often found

in switching circuits. An input value must remain stable for a specified time (pulse rejection limit) before the value is allowed to propagate to the output.

This is the delay due to the fact that electronic gates require a short amount of time to respond to the movement of energy within the circuit.

The value appears at the output after the specified inertial-delay.

Transport DelayTransport Delay This delay models pure propagation delay; ie, any

change in the input (no matter how small) is transported to the output after the specified delay time period

To use a transport delay model, the keyword transport transport must be used in a signal assignment statement

Ideal delay modeling can be obtained by using this delay model, where spikes would be propagated through instead of being ignored

Output<=transport (x) after 10ps;

Example: 1-bit Full Adder Example: 1-bit Full Adder (with delay)(with delay)

entity FullAdder is

port (X, Y, Cin: in bit; -- Inputs

Cout, Sum: out bit); -- Outputs

end FullAdder;

X

YCin

Sum

CoutFull Adder

Example: 1-bit Full Adder Example: 1-bit Full Adder (contd.)(contd.)

Architecture Equations of FullAdder is

begin -- Concurrent Assignment

Sum <= X xor Y xor Cin after 10 ns;

Cout <= (X and Y) or (X and Cin) or (Y and Cin) after 15 ns;

end Equations;

Example of Communicating Processes - the full adder.

In1

In2

s1

c_in

sum

c_out

HA HA

ORs2

s3

This example shows a model of a full adder constructed from2 half-adders and a 2 input OR gate.

The behavior of the 3 components is described using processesthat communicate through signals.

When there is an event on either of the input signals, process HA1executes (see code in next slide), which creates events on internalsignals s1 and s2.

library IEEE;use IEEE.std_logic_1164.all;entity full_adder isport(in1, in2, c_in: in std_ulogic; sum, c_out: out std_ulogic);end full_adder;

architecture dataflow of full_adder issignal s1, s2, s3 : std_ulogic;constant gate_delay: Time:=5 ns;beginL1: s1<=(in1 xor in2) after gate_delay;L2: s2<=(c_in and s1) after gate_delay;L3: s3<=(in1 and in2) after gate_delay;L4: sum<=(s1 xor c_in) after gate_delay;L5: c_out<=(s2 or s3) after gate_delay;end dataflow;

Architecture Body

ArchitectureDeclarative Statement

Structural ModelStructural Model Digital circuits consist of components and

interconnection between them A component can in turn be composed of sub-

components and their interconnections A component interacts with other components

through pins Component is modeled as entity Component pins are modeled as ports Interconnections between components are

modeled as signals

VHDL Structural ElementsVHDL Structural Elements

Entity: InterfaceArchitecture: Implementation, behavior,

functionProcess: Concurrency, event controlledConfiguration: Model chaining, structure,

hierarchyPackage: Modular design, standard

solution, data types, constantsLibrary: Compilation, object code

--Structural Descriptionentity AOI_Network is

port(A,B.C,D:in std_logic;

E:out std_logic);

end AOI_Network

architecture structural of AOI_Network is

component AND2

port(x,y:in std_logic;

z:out std_logic);

end component;

ChipA

B

C

D

EX

Y

component or2

port(x,y:in std_logic;

z:out std_logic);

end component;

signal X,Y:std_logic;

Begin

G1:AND2 port map (A,B,X);

G2:AND2 port map (C,D,Y);

G3:OR2 port map (X,Y,E);

End structural;

Before this the module should be previously defined

use library….

entity AND2 is

port (u,v:in std_logic;

q:out std_logic);

end AND2;

architecture of AND2 is

begin

q<=u and v;

end AND2;

Similarly for OR2, module should be defined.

Example: 4-bit AdderExample: 4-bit Adder

entity Adder4 is

port (A, B: in bit_vector(3 downto 0);

Ci: in bit; -- Inputs

S: out bit_vector(3 downto 0);

Co: out bit); -- Outputs

end Adder4;

Example: 4-bit Adder (contd.)Example: 4-bit Adder (contd.)

Architecture Structure of Adder4 is

Component FullAdder

port (X, Y, Cin: in bit; Cout, Sum: out bit);

signal C: bit_vector (3 downto 1);

begin -- Instantiations

FA0: FullAdder port map (A(0), B(0), Ci, C(1), S(0));

FA1: FullAdder port map (A(1), B(1), C(1), C(2), S(1));

FA2: FullAdder port map (A(2), B(2), C(2), C(3), S(2));

FA3: FullAdder port map (A(3), B(3), C(3), Co, S(3));

end Structure;

The concept of component can be understood using the concept of a design library, which is a collection of different modules, each defined by entity and architecture statement.

Once cells are used in library we can use copies by component command

This is called instancing the cell, and component itself is called an instance of the original.

Modeling the Behavior wayModeling the Behavior way Architecture body

– describes an implementation of an entity– may be several per entity

Behavioral architecture– describes the algorithm performed by the module– contains

process statements, each containing– sequential statements, including

• signal assignment statements and• wait statements

Full Adder – using ProcessesFull Adder – using Processes

library ieee;use ieee.std_logic_1164.all;entity FULL_ADDER is

port (A, B, Cin : in std_logic;Sum, Cout : out std_logic);

end FULL_ADDER;

    

      

architecture BEHAV_FA of FULL_ADDER issignal int1, int2, int3: std_logic;begin

-- Process P1 that defines the first half adderP1: process (A, B)

beginint1<= A xor

B;int2<= A and

B;end process;

-- Process P2 that defines the second half adder and the OR -- gateP2: process (int1, int2, Cin)

beginSum <= int1 xor Cin;

int3 <= int1 and Cin;

Cout <= int2 or int3;

end process;end BEHAV_FA;

MultiplexersMultiplexers

A B

4-to-1MUX

I0

I1

I2

I3

Z

ABI3

AB’I2

A’BI1

A’B’I0

Z

Data inputs versus control

inputs

Use of muxes in

control and data path

A B Z 0 0 I0 0 1 I1 1 0 I2 1 1 I3

+

Concurrent Conditional Concurrent Conditional Assignment: 4 to 1 MultiplexerAssignment: 4 to 1 Multiplexer

y <= x0 when sel = 0

else x1 when sel = 1

else x2 when sel = 2

else x3 when sel = 3

x0x1x2x3

sel

y

CASE Statement: CASE Statement: 4 to 1 Multiplexer4 to 1 Multiplexer

Case sel is

when 0 => y <= x0

when 1 => y <= x1

when 2 => y <= x2

when 3 => y <= x3

end case

x0x1x2x3

y

2-to-4-decoder with enable,2-to-4-decoder with enable,DeMUXDeMUX

Example: DFF (contd.)Example: DFF (contd.)Architecture Beh of DFF is

begin process (CLK)

begin if (CLK = ‘1’ then

Q <= D after 10 ns;

QN <= not D after 10 ns;

endif;

endprocess;

end Beh;

Internal Structure of a Internal Structure of a PLAPLA

Inputs

A

A’

B

B’

C

C’

AND ARRAY

OR ARRAY

F0 F1 F2 F3

Outputs

A’B’

AC’

B

BC’

AC

THANK YOU ALL

top related