sequential statements osman hasan coen 313. coen 313: sequential statements 2 outline vhdl process ...

16
Sequential Statements Osman Hasan COEN 313

Upload: chester-white

Post on 01-Jan-2016

243 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Sequential Statements Osman Hasan COEN 313. COEN 313: Sequential Statements 2 Outline  VHDL process  Sequential signal assignment statement  Variable

Sequential Statements

Osman Hasan

COEN 313

Page 2: Sequential Statements Osman Hasan COEN 313. COEN 313: Sequential Statements 2 Outline  VHDL process  Sequential signal assignment statement  Variable

COEN 313: Sequential Statements

2

Outline

VHDL process Sequential signal assignment statement Variable assignment statement

If statement

Page 3: Sequential Statements Osman Hasan COEN 313. COEN 313: Sequential Statements 2 Outline  VHDL process  Sequential signal assignment statement  Variable

COEN 313: Sequential Statements

3

VHDL Process Group of Instructions that are executed sequentially

Syntaxprocess declarations;begin sequential statement; sequential statement; . . .end process;

The whole process is a concurrent statement

Page 4: Sequential Statements Osman Hasan COEN 313. COEN 313: Sequential Statements 2 Outline  VHDL process  Sequential signal assignment statement  Variable

COEN 313: Sequential Statements

4

VHDL Process - Types With Sensitivity list

Process (sensitivity list) declarations;begin sequential statement; sequential statement; . . .end process;

A process is activated when a signal in the sensitivity list changes its value

Example: 3 input AND gatesignal a,b,c,y: std_logic;

process(a,b,c)begin y <= a and b and c;end process;

What happens if a is removed from the sensitivity list?

Page 5: Sequential Statements Osman Hasan COEN 313. COEN 313: Sequential Statements 2 Outline  VHDL process  Sequential signal assignment statement  Variable

COEN 313: Sequential Statements

5

VHDL Process - Types With Wait statement

Process declarations;begin sequential statement; sequential statement;

wait on signals . . .end process;

No sensitivity list Process continues the execution until a wait

statement is reached and then suspended

Example: 3 input AND gateprocessbegin y <= a and b and c; wait on a, b, c; end process;

Page 6: Sequential Statements Osman Hasan COEN 313. COEN 313: Sequential Statements 2 Outline  VHDL process  Sequential signal assignment statement  Variable

COEN 313: Sequential Statements

6

Points to Remember

A process may or may not be mapped to physical hardware

For a combinational circuit, all inputs should be included in the sensitivity list

Process with sensitivity list is preferred for synthesis

Page 7: Sequential Statements Osman Hasan COEN 313. COEN 313: Sequential Statements 2 Outline  VHDL process  Sequential signal assignment statement  Variable

COEN 313: Sequential Statements

7

Sequential signal assignment statement Identical to the simple concurrent signal

assignment Syntax : signal_name <= value_expression; Inside a process, a signal can be assigned multiple

times, but only the last assignment takes effect

Example: process(a,b,c,d)begin -- yentry := y y <= a or c; -- yexit := a or c; y <= a and b; -- yexit := a and b; y <= c and d; -- yexit := c and d;end process; -- y <= yexit

Example: process(a,b,c,d)begin y <= c and d;end process;

Page 8: Sequential Statements Osman Hasan COEN 313. COEN 313: Sequential Statements 2 Outline  VHDL process  Sequential signal assignment statement  Variable

COEN 313: Sequential Statements

8

Variable assignment statement Like variables in C/C++ Syntax : variable_name := value_expression; Assignment takes effect immediately

What happens if := is replaced with <=

Example: process(a,b,c) variable tmp: std_logic;begin tmp := '0'; tmp := tmp or a; tmp := tmp or b; y <= tmp;end process;

Page 9: Sequential Statements Osman Hasan COEN 313. COEN 313: Sequential Statements 2 Outline  VHDL process  Sequential signal assignment statement  Variable

COEN 313: Sequential Statements

9

Quiz 1LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY sig_ass IS END ENTITY;

ARCHITECTURE beh OF sig_ass IS SIGNAL sum1,sum2 : INTEGER := 0;

BEGIN p0: PROCESS BEGIN WAIT FOR 10 ns; sum1 <= sum1 + 1; sum2 <= sum1 + 1; END PROCESS; END beh;

Time sum sum20

10

10 + 1 Δ

20 + 1 Δ

30 + 1 Δ

20

30

0 0

0 0

1 1

1 1

2 2

3 3

2 2

Page 10: Sequential Statements Osman Hasan COEN 313. COEN 313: Sequential Statements 2 Outline  VHDL process  Sequential signal assignment statement  Variable

COEN 313: Sequential Statements

10

Quiz 2 ENTITY and_or IS PORT ( a,b,c,d : IN STD_LOGIC; output : OUT STD_ULOGIC);END ENTITY;

ARCHITECTURE beh OF and_or IS SIGNAL x,y : STD_LOGIC;

BEGINmy_process : PROCESS (a,b,c,d) BEGIN x <= a OR b; y <= c OR d; output <= x AND y; END PROCESS;END beh;

•Signals are updated at the end of a process.

•If a process is reading the value of signal, it will read the old (non-updated) value!

•How to Solve this Bug!

Page 11: Sequential Statements Osman Hasan COEN 313. COEN 313: Sequential Statements 2 Outline  VHDL process  Sequential signal assignment statement  Variable

COEN 313: Sequential Statements

11

Outline

VHDL process Sequential signal assignment statement Variable assignment statement

If statement

Page 12: Sequential Statements Osman Hasan COEN 313. COEN 313: Sequential Statements 2 Outline  VHDL process  Sequential signal assignment statement  Variable

COEN 313: Sequential Statements

12

If Statement Sequential Conditional Statement in VHDL Syntax

if boolean_expr_1 then sequential_statements;elsif boolean_expr_2 then sequential_statements;elsif boolean_expr_3 then sequential_statements;. . .else sequential_statements;end if;

Page 13: Sequential Statements Osman Hasan COEN 313. COEN 313: Sequential Statements 2 Outline  VHDL process  Sequential signal assignment statement  Variable

COEN 313: Sequential Statements

13

Example: 4x1 Mux

Page 14: Sequential Statements Osman Hasan COEN 313. COEN 313: Sequential Statements 2 Outline  VHDL process  Sequential signal assignment statement  Variable

COEN 313: Sequential Statements

14

Example: 2x4 Binary Decoder

Page 15: Sequential Statements Osman Hasan COEN 313. COEN 313: Sequential Statements 2 Outline  VHDL process  Sequential signal assignment statement  Variable

COEN 313: Sequential Statements

15

Example: 4-to-4 Priority Encoder

•4-to-2 priority encoder

Page 16: Sequential Statements Osman Hasan COEN 313. COEN 313: Sequential Statements 2 Outline  VHDL process  Sequential signal assignment statement  Variable

COEN 313: Sequential Statements

16

Last Quiz LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;

ARCHITECTURE beh OF mystery ISBEGIN p0: PROCESS (data_in1, select_in) BEGIN IF select_in = '0' THEN output <= data_in1; ELSE output <= data_in2; END IF; END PROCESS; END beh;