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

class2 vhdl

Embed Size (px)

DESCRIPTION

vhdl plays important role in asic industrypowerpoint presentation gives brief introduction to vhdl

Citation preview

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