concurrent vs sequential

21
9/9/2006 DSD,USIT,GGSIPU 1 Concurrent vs Sequential • Combinational vs Sequential logic – Combinational logic is that in which the output of the circuit depends solely on the current input – Sequential logic is defined as that in which the output does depend on previous inputs.

Upload: jalila

Post on 05-Jan-2016

62 views

Category:

Documents


2 download

DESCRIPTION

Concurrent vs Sequential. Combinational vs Sequential logic Combinational logic is that in which the output of the circuit depends solely on the current input Sequential logic is defined as that in which the output does depend on previous inputs. Concurrent statement. Operators - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Concurrent vs Sequential

9/9/2006 DSD,USIT,GGSIPU 1

Concurrent vs Sequential

• Combinational vs Sequential logic– Combinational logic is that in which the output

of the circuit depends solely on the current input

– Sequential logic is defined as that in which the output does depend on previous inputs.

Page 2: Concurrent vs Sequential

9/9/2006 DSD,USIT,GGSIPU 2

Concurrent statement

• Operators

• The WHEN statement– (When/Else or With/select/when)– The GENERATE statement– The BLOCK statement

Page 3: Concurrent vs Sequential

9/9/2006 DSD,USIT,GGSIPU 3

Operators

• Most basic way of creating concurrent code.

• Operators can be used to implement any combinational circuit.

• Operators– AND, OR, +, - , * , sll, sra, etc

Page 4: Concurrent vs Sequential

9/9/2006 DSD,USIT,GGSIPU 4

Operators

Operator Type

Operators Data types

Logical NOT,AND,NAND, NOR, OR, XOR,XNOR

Bit, Bit_vector

Std_logic,std_logic_vector

Std_ulogic_vector, std_ulogic

Arithmetic +, -, *, /, ** Integer,signed, unsigned

Comparison =,/=, <, >, <=,>= All above

Shift Sll,srl,sla,sra,rol,ror Bit_vector

Concatenation &, (,,,) Same as above

Page 5: Concurrent vs Sequential

9/9/2006 DSD,USIT,GGSIPU 5

When (Simple and selected)

• Fundamental concurrent statement

• Syntax assignment WHEN condition ELSE

assignment WHEN condition ELSE

……….;

Page 6: Concurrent vs Sequential

9/9/2006 DSD,USIT,GGSIPU 6

Important Aspect of WHEN

• WHEN value -- Single value

• WHEN value1 to value2 – Range, for enumerated data types

• WHEN value1|value2|………- value1 or value2

Page 7: Concurrent vs Sequential

9/9/2006 DSD,USIT,GGSIPU 7

Circuit of 2:4 decoder

Page 8: Concurrent vs Sequential

9/9/2006 DSD,USIT,GGSIPU 8

3:8 Decoder• entity decodedr38 is• Port ( a : in std_logic_vector(2 downto 0);• b : out std_logic_vector(7 downto 0);• en : in std_logic);• end decodedr38;

• architecture Behavioral of decodedr38 is• signal temp : std_logic_vector(7 downto 0);• begin• temp <= "00000001" when a="000" else• "00000010" when a="001" else• "00000100" when a="010" else• "00001000" when a="011" else• "00010000" when a="100" else• "00100000" when a="101" else• "01000000" when a="110" else• "10000000";

• b <= temp when en='1' else• (others => '0');• end Behavioral;

Page 9: Concurrent vs Sequential

9/9/2006 DSD,USIT,GGSIPU 9

5:32 Decoder5x32 decoder

2:4

3:8

3:8

3:8

3:8

Page 10: Concurrent vs Sequential

9/9/2006 DSD,USIT,GGSIPU 10

5:32 decoder• entity decoder532 is• Port ( x : in std_logic_vector(4 downto 0);• y : out std_logic_vector(31 downto 0));• end decoder532;

• architecture Behavioral of decoder532 is• component decoder24 is• Port ( din : in std_logic_vector(1 downto 0); -- decoder input• dout : out std_logic_vector(3 downto 0)• );-- decoder output• end component decoder24;• component decodedr38 is• Port ( a : in std_logic_vector(2 downto 0);• b : out std_logic_vector(7 downto 0);• en : in std_logic);• end component decodedr38;• signal temp : std_logic_vector(3 downto 0);

Page 11: Concurrent vs Sequential

9/9/2006 DSD,USIT,GGSIPU 11

5:32 decoder (cont..)

• begin

• u1: decoder24 port map(din(1)=>x(4),din(0)=>x(3),dout(3)=>temp(3),dout(2)=>temp(2),dout(1)=>temp(1),dout(0)=>temp(0));

• u2: decodedr38 port map(en=>temp(0),a(2)=>x(2),a(1)=>x(1),a(0)=>x(0),b(7)=>y(7),b(6)=>y(6),b(5)=>y(5),b(4)=>y(4),b(3)=>y(3),b(2)=>y(2),b(1)=>y(1),b(0)=>y(0));

• u3: decodedr38 port map(en=>temp(1),a(2)=>x(2),a(1)=>x(1),a(0)=>x(0),b(7)=>y(15),b(6)=>y(14),b(5)=>y(13),b(4)=>y(12),b(3)=>y(11),b(2)=>y(10),b(1)=>y(9),b(0)=>y(8));

• u4: decodedr38 port map(en=>temp(2),a(2)=>x(2),a(1)=>x(1),a(0)=>x(0),b(7)=>y(23),b(6)=>y(22),b(5)=>y(21),b(4)=>y(20),b(3)=>y(19),b(2)=>y(18),b(1)=>y(17),b(0)=>y(16));

• u5: decodedr38 port map(en=>temp(3),a(2)=>x(2),a(1)=>x(1),a(0)=>x(0),b(7)=>y(31),b(6)=>y(30),b(5)=>y(29),b(4)=>y(28),b(3)=>y(27),b(2)=>y(26),b(1)=>y(25),b(0)=>y(24));

• end Behavioral;

Page 12: Concurrent vs Sequential

9/9/2006 DSD,USIT,GGSIPU 12

Conditional Signal Assignment statement

• The conditional signal assignment statement selects different values for the target signal based on the specified, possibly different, conditions. A typical syntax –

target-signal <= [waveform-elements when condition else

[waveform-elements when condition else..Waveform-elements when condition];

Page 13: Concurrent vs Sequential

9/9/2006 DSD,USIT,GGSIPU 13

Example 4: 1 Mux using when statement

library ieee;use ieee.std_logic_1164.all;

entity mux4_1_when isport (a: in std_logic_vector(3 downto 0);s: in std_logic_vector(1 downto 0);y: out std_logic);end mux4_1_when;

architecture mux_behave of mux4_1_when isbeginy <= a(0) when s = "00" else a(1) when s = "01" else a(2) when s = "10" else a(3);end mux_behave;

Page 14: Concurrent vs Sequential

9/9/2006 DSD,USIT,GGSIPU 14

Symbol of 2:1 Mux

Page 15: Concurrent vs Sequential

9/9/2006 DSD,USIT,GGSIPU 15

Selected signal Assignment statement

• The selected signal assignment statement selects different values for a target signal based on the value of a select expression.

• A typical syntax –With expression select

target-signal <= waveform-element when choices,

waveform-element when choices,..

waveform-element when choices;

Page 16: Concurrent vs Sequential

9/9/2006 DSD,USIT,GGSIPU 16

Example 4:1 mux using with-select

library ieee;use ieee.std_logic_1164.all;

entity mux4_1_with isport (a: in std_logic_vector(3 downto 0);s: in std_logic_vector(1 downto 0);y: out std_logic);end mux4_1_with;

architecture mux_behave of mux4_1_with isbeginwith s selecty <= a(0) when "00", a(1) when "01", a(2) when "10", a(3) when others;end mux_behave;

Page 18: Concurrent vs Sequential

9/9/2006 DSD,USIT,GGSIPU 18

Circuit of Encoder

Page 19: Concurrent vs Sequential

9/9/2006 DSD,USIT,GGSIPU 19

Truth table of encoder

A3` A2 A1 A0 F1 F0

0 0 0 1 0 0

0 0 1 0 0 1

0 1 0 0 1 0

1 0 0 0 1 1

Page 20: Concurrent vs Sequential

9/9/2006 DSD,USIT,GGSIPU 20

7-segment display

Page 21: Concurrent vs Sequential

9/9/2006 DSD,USIT,GGSIPU 21

  Input Output

No. X3 X2 X1 X0 G F E D C B A

0 0 0 0 0 0 1 1 1 1 1 1

1 0 0 0 1 0 0 0 0 1 1 0

2 0 0 1 0 1 0 1 1 0 1 1

3 0 0 1 1 1 0 0 1 1 1 1

4 0 1 0 0 1 1 0 0 1 1 0

5 0 1 0 1 1 1 0 1 1 0 1

6 0 1 1 0 1 1 1 1 1 0 0

7 0 1 1 1 0 0 0 0 1 1 1

8 1 0 0 0 1 1 1 1 1 1 1

9 1 0 0 1 1 1 0 0 1 1 1

Truth table of 7-segment display decoder