Professional Documents
Culture Documents
Concurrent Design
Concurrent Design
Concurrent Design
9/9/2006 DSD,USIT,GGSIPU 1
Concurrent statement
• Operators
• The WHEN statement
– (When/Else or With/select/when)
– The GENERATE statement
– The BLOCK statement
9/9/2006 DSD,USIT,GGSIPU 2
Operators
• Most basic way of creating concurrent code.
• Operators can be used to implement any
combinational circuit.
• Operators
– AND, OR, +, - , * , sll, sra, etc
9/9/2006 DSD,USIT,GGSIPU 3
Operators
Operator Operators Data types
Type
Logical NOT,AND,NAND, NOR, OR, Bit, Bit_vector
XOR,XNOR Std_logic,std_logic_vector
Std_ulogic_vector, std_ulogic
9/9/2006 DSD,USIT,GGSIPU 4
When (Simple and selected)
• Fundamental concurrent statement
• Syntax
assignment WHEN condition ELSE
assignment WHEN condition ELSE
……….;
9/9/2006 DSD,USIT,GGSIPU 5
Important Aspect of WHEN
• WHEN value -- Single value
• WHEN value1 to value2
– Range, for enumerated data types
• WHEN value1|value2|………
- value1 or value2
9/9/2006 DSD,USIT,GGSIPU 6
Circuit of 2:4 decoder
9/9/2006 DSD,USIT,GGSIPU 7
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;
9/9/2006 DSD,USIT,GGSIPU 8
5:32 Decoder
5x32 decoder
3:8
3:8
2:4
3:8
3:8
9/9/2006 DSD,USIT,GGSIPU 9
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;
9/9/2006 DSD,USIT,GGSIPU 10
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)=>te
mp(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;
9/9/2006 DSD,USIT,GGSIPU 11
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
entity mux4_1_when is
port (a: in std_logic_vector(3 downto 0);
s: in std_logic_vector(1 downto 0);
y: out std_logic
);
end mux4_1_when;
9/9/2006 DSD,USIT,GGSIPU 13
Symbol of 2:1 Mux
9/9/2006 DSD,USIT,GGSIPU 14
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;
9/9/2006 DSD,USIT,GGSIPU 15
Example 4:1 mux using with-
select
library ieee;
use ieee.std_logic_1164.all;
entity mux4_1_with is
port (a: in std_logic_vector(3 downto 0);
s: in std_logic_vector(1 downto 0);
y: out std_logic
);
end mux4_1_with;
9/9/2006 DSD,USIT,GGSIPU 16
Mux architecture
9/9/2006 DSD,USIT,GGSIPU 17
Circuit of Encoder
9/9/2006 DSD,USIT,GGSIPU 18
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
9/9/2006 DSD,USIT,GGSIPU 19
7-segment display
9/9/2006 DSD,USIT,GGSIPU 20
Truth table of 7-segment display decoder
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
9/9/2006 DSD,USIT,GGSIPU 21