Top Banner
BASIC OPERATORS AND ARCHITECTURE BODY <Just a Brief Introduction> <Detailed One – In the coming Classes> 1
41

class2 vhdl

Feb 15, 2016

Download

Documents

Pradyumna Bhat

vhdl plays important role in asic industry
powerpoint presentation gives brief introduction to vhdl
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: class2 vhdl

BASIC OPERATORS AND ARCHITECTURE BODY<Just a Brief Introduction><Detailed One – In the coming Classes>

1

Page 2: class2 vhdl

We know:• Operators and• Different architecture design methods

• 1) Structural• 2) Data flow• 3) Behavioral

• Use of signals and variables

2

Page 3: class2 vhdl

RECALL

VHDL OPERATORSAnd their usage

3

Page 4: class2 vhdl

Typical Operators

exercise 3: VHDL(v.5c) 4

Page 5: class2 vhdl

Logical / relation operators• And, or, nand, nor, xor, xnor, not -- have their usual

meanings. • But nand is not associative :

• A nand B nand C is illegal. • Draw the truth table to show • (A nand B) nand C ≠ A nand (B nand C)

• Relation operators• = equal ; /= not equal • < <= > >= smaller, bigger , equal etc.

5

Page 6: class2 vhdl

• Logical shift and rotate• Sll (shift left logical, fill blank with 0); • srl (shift right logical, fill blank with 0)• rol(rotate left logical ); ror(rotate right logical) circular operation.• E.g. “10010101” rol 3 is “10101100”

• Arithmetic shift • sla (shift left arithmetic) fill blank with 0,same as sll (shift

left logical)• sra (shift right arithmetic), fill blank with sign bit (MSB)

6

Page 7: class2 vhdl

Some basic operators• ‘+’ arithmetic add, for integer, float.• ‘-’ arithmetic subtract, for integer, float.• ‘&’ concatenation: ‘0’ & ‘1’ is “01”, Notice the use of “&”.

7

Page 8: class2 vhdl

Some basic operators• ‘*’ multiplication • ‘/’ division• ‘mod’ =modulus=

• E.g. A mod B= A-(B*N) -- N is an integer• ‘abs’ = absolute value• ‘**’ = exponentiation

8

Page 9: class2 vhdl

RECALL ARCHITECTURE BODYDesign methods

9

Page 10: class2 vhdl

3 types of design description

exercise 3: VHDL(v.5c) 10

•1. Structural•(parallel)

•Use port map

•2. Data Flow•(parallel)

•Use concurrent •statements

•3. Behavioral•(serial)

•Use process

•Design•description

Page 11: class2 vhdl

(1) Structural design description method

11

•1. Structural•(parallel)

•Use port map

•2. Data Flow•(parallel)

•Use concurrent •statements

•3. Behavioral•(serial)

•Use process

•Design•description

Page 12: class2 vhdl

Structural :Like a circuit but describe it by text.

12

Component A

Component B Component C

Related by port map in architecture

Page 13: class2 vhdl

Structural :Like a circuit but describe it by text.• Step1: Create entities• Step2: create components from entities• Step3: create “port map” to relate the components

13

Page 14: class2 vhdl

Step1 of Structural DescriptionCreate the and2 chip :an entity and2• 1 entity and2 is port (a,b : in std_logic;• 2 c : out std_logic);• 3 end and2;• 4 architecture and2_arch of and2• 5 begin• 6 c <=a and b;• 7 end and2_arch;

14

a

b cAND

Page 15: class2 vhdl

Step 2 : Create component “and2” based on “entity and2”

• 10 component and2• 11 port (a,b: in std_logic; c out std_logic); • 12-- note the sequence of a,b,c• 13 end component;• 14 -- now use it in “port map” instructions

• Note: Use the same method to create a component “OR2”.

15

Component “and2”a = inputc= output

b = input

In the component: and2First argument is an inputSecond argument is an inputThird argument is an output

Page 16: class2 vhdl

Step 3 : connect components using port map

• --assume ‘and2’ , ‘or2’ are user defined components

• 21 architecture struct_abc of abcx is• 22 begin• 23 label_u0:or2 port map (a, b, x);• 24 label_u1:and2 port map (c,x,y);• 25 end struct_abc;• 26 --label_u0 ,label_u1 are line labels.

16

a

cx yb

What will happen if these 2 lines (23,24) are interchanged ?

In the component: and2First argument is an inputSecond argument is an inputThird argument is an output

Page 17: class2 vhdl

Core of the structural design• 21 architecture struct_abc of abcx is• 22 begin• 23 label_u1:and2 port map (c,x,y);• 24 label_u0:or2 port map (a, b, x);• 25 end struct_abc;

17

•Label_u0,label_u1 are line labels•“port map” are reserved words

a

c

xyb

lines can be interchanged

Page 18: class2 vhdl

• entity test_andor2 is – Another detailed example• port ( in1: in STD_LOGIC; in2: in STD_LOGIC;• in3: in STD_LOGIC; out1: out STD_LOGIC• ); end test_andor2;• architecture test_andor2_arch of test_andor2 is• component and2• port (a,b:in std_logic; c: out std_logic); • end component ;• component or2• port (a,b:in std_logic; c: out std_logic); • end component ;• signal con1_signal: std_logic;• begin• label1: and2 port map (in1, in2, con1_signal);• label2: or2 port map (con1_signal, in3, out1);• end test_andor2_arch;

18

in1

in3out1in2

Con1_signal

Page 19: class2 vhdl

• Draw the schematic diagram of the half-adder • based on architecture struct_abc entity half_adder is

-- another example• port ( a: in bit; b: in bit;• sum: out bit; carry: out bit );• end half_adder;• architecture half_adder_arch of half_adder is• component xor2 port(x,y: in bit; z: out bit);• end component;• component and2 port( l,m: in bit; n: out bit);• end component;• begin• label1: xor2 port map (a,b,sum);• label2: and2 port map (a,b, carry);• end half_adder_arch;

19

Page 20: class2 vhdl

(3) Dataflow method {Using concurrent statements}

20

•1. Structural•(parallel)

•Use port map

•2. Data Flow•(parallel)

•Use concurrent •statements

•3. Behavioral•(serial)

•Use process

•Design•description

Page 21: class2 vhdl

Data flow: concurrent execution(no need to use “port map”)• 1 entity eqb_comp4 is• 2 port (a, b: in std_logic_vector(3 downto 0);• 3 equals,bigger: out std_logic);• 4 end eqb_comp4;• 5 architecture dataflow4 of eqb_comp4 is• 6 begin• 7 equals <= '1' when (a = b) else '0 ';--concurrent• 8 bigger <=‘1’ when (a > b) else ‘0’;--concurrent• 10 end dataflow4;

21

Page 22: class2 vhdl

(3) Behavioral design description method {Using Process( ) }

22

•1. Structural•(parallel)

•Use port map

•2. Data Flow•(parallel)

•Use concurrent •statements

•3. Behavioral•(serial)

•Use process

•Design•description

Page 23: class2 vhdl

Behavioral design is sequentialthe keyword is ‘process’• Sequential, inside a process• Just like a sequential program• the main character is

• ‘process(sensitivity list)’

23

Page 24: class2 vhdl

• 1 entity eqcomp4 is port(• 2 a, b: in std_logic_vector(3 downto 0);• 3 equals: out std_logic);• 4 end eqcomp4;• 5 architecture behavioral of eqcomp4 is• 6 begin• 7 comp: process (a, b)• 8 begin• 9 if a = b then• 10 equals <= '1';• 11 else• 12 equals <= '0';• 13 end if;• 14 end process;• 15 end behavioral;

24

Behavioral design:It is sequential,the keyword is ‘process’

sequential executionlike a sequential software program

Page 25: class2 vhdl

Concurrent VS sequential• Every statement inside the architecture body is executed

concurrently, except statements enclosed by a process.• Process

• Statements within a process are executed sequentially. Result is known when the whole process is complete.

• You may treat a process as one concurrent statement in the architecture body.

• Process(sensitivity list): when one or more signals in the sensitivity list change state, the process executes once.

25

Page 26: class2 vhdl

DESIGN CONSTRUCTIONSConcurrent and sequential

26

Page 27: class2 vhdl

Design constructions• Concurrent: statements that can be stand-alone

• When-else• With-select-when

• Sequential: statements that can only live inside processes• Case-when • for–in-to-loop• If-then-else

27

sequential -- with processes

Concurrent sequential -- NO process

Page 28: class2 vhdl

Design constructions Concurrent statements

Design constructions

Concurrentstand-alone

•(No process)

Sequentialstatements live in

processes( )

when else with select when Case-when for-in-to-loop if-then-else

exercise 3: VHDL(v.5c) 28

Page 29: class2 vhdl

Concurrent: statements that can stand-alone•(concurrent 1) when-else•(concurrent 2) with-select-when

29

Page 30: class2 vhdl

When-else : example ‘and-gate’• 1 entity when_ex is• 2 port (in1, in2 : in std_logic;• 3 out1 : out std_logic);• 4 end when_ex;• 5• 6 architecture when_ex_a of when_ex is• 7 begin• 8 out1 <= '1' when in1 = '1' and in2 = '1' else '0';• 9 end when_ex_a;

30

And-gatein1in2

out

Page 31: class2 vhdl

With-select-when : example ‘and-gate’ again• 1 entity with_ex is• 2 port (in1, in2 : in std_logic;• 3 out1 : out std_logic);• 4 end with_ex;

• 5 architecture with_ex_a of with_ex is• 6 begin• 7 with in1 select• 8 out1 <= in2 when '1',--means when in1=‘1’• 9 '0' when others;--other cases• 10 end with_ex_a;

31

And-gatein1in2

out

Page 32: class2 vhdl

Design constructions Sequential statements

Design constructions

Concurrentstand-alone

•(No process)

Sequentialstatements live in

processes( )

when else with select when Case-when for-in-to-loop if-then-else

exercise 3: VHDL(v.5c) 32

Page 33: class2 vhdl

Process( sensitivity list of signals) for sequential execution

• 1 architecture for_ex_arch of for_ex is• 2 begin• 3 process (in1, in2) -- execute once when the signals • 4 --in the sensitivity list (I.e. in1 or in2) change state• 5 begin• 6 out1 <= in1 and in2;• 7 :• 8 end process;• 9 out2 < = out1 and in3; -- concurrent statement• 10 end for_ex_arch;

33

**the process (3-8) and line 9 are concurrent

In1In2in3

out1out2

Page 34: class2 vhdl

Sequential: statements that can only live inside processes

• (Sequential 1) Case-when • (Sequential 2) for-in-to-loop• (Sequential 3) if-then-else

34

sequential – within a process

Page 35: class2 vhdl

Things to remember for Case-when:• Remember:• “=>” means “implies” not “bigger”• all cases must be present, use others to complete all

cases• ans:

35

b(0)b(1)

out1

out2

Ex-nor

Page 36: class2 vhdl

For-in-to-loop (example invert 4 inputs)• 1 architecture for_ex_arch of for_ex is• 2 begin• 3 process (in1)• 4 begin• 5 label_for0 : for i in 0 to 3 loop• 6 out1 (i) <= not in1(i);• 7 end loop;• 8 end process;• 9 end for_ex_arch;

36

in(3:0)

out(3:0)

Page 37: class2 vhdl

If-then-else:example ‘and’

• 1 architecture if_ex_a of if_ex is• 2begin• 3 process (in1, in2)• 4 begin• 5 if in1 = '1' and in2 = '1' then• 6 out1 <= '1';• 7 else• 8 out1 <= '0';• 9 end if;• 10 end process;• 11 end if_ex_a;

37

And-gatein1 outin2

sequential - 3if--then-else

Page 38: class2 vhdl

Use of signals and variables• Signals (global)• Variable (live inside processes only)• We will learn more about this in Finite state machines

design

exercise 3: VHDL(v.5c) 38

Page 39: class2 vhdl

Signal assignment <=Global, concurrent execution• <= signal assignment. Do not confused with the relation

operator <= equal or smaller • A1<= B1 or C1 • A1 signal must be declared outside a process, • It is a signal representing an internal wire or an

in/out/buffer signal in port.

39

B1C1

A1

Page 40: class2 vhdl

Variable assignment :=Local, sequential execution• Variables can only be declared and used in the sequential

part (inside process) of VHDL• local to a process. • := variable assignment. • A2 := B2 and C2 • similar to signal assignment but A2 must be a variable.

40

Page 41: class2 vhdl

Quick revision• You should know

• Operators and usage• Architecture design methods

• 1) Structural (port map)• 2) Data flow (concurrent statements)• 3) Behavioral (process)

• Use of signals and variables• Signals assignment use ‘<=‘, Can be used in concurrent and sequential

statements• Variable assignment use ‘:=‘. Can only be used in sequential statements

-- inside process() only

41