Combinational-Circuit Building Blocks Data Flow Modeling of Combinational Logic - PowerPoint PPT Presentation

1 / 70
About This Presentation
Title:

Combinational-Circuit Building Blocks Data Flow Modeling of Combinational Logic

Description:

ECE 448 Lecture 3 Combinational-Circuit Building Blocks Data Flow Modeling of Combinational Logic Required reading VHDL Design Styles Synthesizable VHDL Dataflow VHDL ... – PowerPoint PPT presentation

Number of Views:165
Avg rating:3.0/5.0
Slides: 71
Provided by: Kama98
Category:

less

Transcript and Presenter's Notes

Title: Combinational-Circuit Building Blocks Data Flow Modeling of Combinational Logic


1
Combinational-Circuit Building BlocksData Flow
Modeling of Combinational Logic
ECE 448 Lecture 3
2
Required reading
  • S. Brown and Z. Vranesic, Fundamentals of
    Digital Logic with VHDL Design
  • Chapter 6, Combinational-Circuit Building
  • Blocks (sections 6.6.5-6.6.7
    optional)
  • Chapter 5.5, Design of Arithmetic Circuits
  • Using CAD Tools

3
VHDL Design Styles
4
VHDL Design Styles
VHDL Design Styles
  • Testbenches

behavioral(sequential)
structural
Components and interconnects
Concurrent statements
Sequential statements
  • Registers
  • State machines

Subset most suitable for synthesis
5
Synthesizable VHDL
  • Dataflow VHDL
  • Design Style

VHDL code synthesizable
Dataflow VHDL Design Style
VHDL code synthesizable
6
Data-Flow VHDL
Concurrent Statements
  • concurrent signal assignment
    (?)
  • conditional concurrent signal assignment

  • (when-else)
  • selected concurrent signal assignment

  • (with-select-when)
  • generate scheme for equations

  • (for-generate)

7
Modeling Wires and Buses
8
Signals
  • SIGNAL a STD_LOGIC
  • SIGNAL b STD_LOGIC_VECTOR(7 DOWNTO 0)

a
wire
1
b
bus
8
9
Merging wires and buses
a
4
10
d
b
5
c
SIGNAL a STD_LOGIC_VECTOR(3 DOWNTO 0) SIGNAL b
STD_LOGIC_VECTOR(4 DOWNTO 0) SIGNAL c
STD_LOGIC SIGNAL d STD_LOGIC_VECTOR(9 DOWNTO
0) d lt a b c
10
Splitting buses
a
4
10
d
b
5
c
SIGNAL a STD_LOGIC_VECTOR(3 DOWNTO 0) SIGNAL b
STD_LOGIC_VECTOR(4 DOWNTO 0) SIGNAL c
STD_LOGIC SIGNAL d STD_LOGIC_VECTOR(9 DOWNTO
0) a lt d(9 downto 6) b lt d(5 downto 1) c lt
d(0)
11
Combinational-Circuit Building Blocks
12
Fixed Shifters Rotators
13
Fixed Shift in VHDL
SIGNAL A STD_LOGIC_VECTOR(3 DOWNTO
0) SIGNAL AshiftR STD_LOGIC_VECTOR(3 DOWNTO 0)
A(3)
A(2)
A
Agtgt1
AshiftR
0
A(3)
A(2)
A(1)
AshiftR lt
14
Fixed Rotation in VHDL
SIGNAL A STD_LOGIC_VECTOR(3 DOWNTO
0) SIGNAL ArotL STD_LOGIC_VECTOR(3 DOWNTO 0)
A(3)
A(2)
A(1)
A(0)
A
Altltlt1
ArotL
A(2)
A(1)
A(0)
A(3)
ArotL lt
15
Gates
16
Basic Gates AND, OR, NOT
17
Basic Gates NAND, NOR
18
DeMorgans Theorem and other symbols for NAND,
NOR
19
Basic Gates XOR
20
Basic Gates XNOR
x
x
f
x
x
Ã…

1
2
1
2
0
0
1
0
1
0
x
1
.
1
0
0
f
x
x
Ã…

x
x

x
1
2
1
2
2
1
1
1
(b) Graphical symbol
(a) Truth table
x
1
x
2
f
x
x
Ã…

1
2
(c) Sum-of-products implementation
21
Data-flow VHDL Example
x
y
s
cin
cout
22
Data-flow VHDL Example (1)
LIBRARY ieee USE ieee.std_logic_1164.all
ENTITY fulladd IS PORT ( x IN
STD_LOGIC y
IN STD_LOGIC
cin IN STD_LOGIC s OUT
STD_LOGIC cout
OUT STD_LOGIC ) END fulladd
23
Data-flow VHDL Example (2)
ARCHITECTURE dataflow OF fulladd IS BEGIN s
lt x XOR y XOR cin cout lt (x AND y) OR
(cin AND x) OR (cin AND y) END dataflow
24
Logic Operators
  • Logic operators
  • Logic operators precedence

and or nand nor xor not xnor
only in VHDL-93
Highest
not and or nand nor xor
xnor
Lowest
25
No Implied Precedence
  • Wanted y ab cd
  • Incorrect
  • y lt a and b or c and d
  • equivalent to
  • y lt ((a and b) or c) and d
  • equivalent to
  • y (ab c)d
  • Correct
  • y lt (a and b) or (c and d)

26
Multiplexers
27
2-to-1 Multiplexer
f
s
w
0
0
w
1
1
(b) Truth table
(a) Graphical symbol
28
VHDL code for a 2-to-1 Multiplexer
LIBRARY ieee USE ieee.std_logic_1164.all
ENTITY mux2to1 IS PORT ( w0, w1, s
IN STD_LOGIC f OUT STD_LOGIC ) END
mux2to1 ARCHITECTURE dataflow OF mux2to1
IS BEGIN f lt w0 WHEN s '0' ELSE w1 END
dataflow
29
Cascade of two multiplexers
w
0
3
0
w
1
y
w
2
1
1
s2
s1
30
VHDL code for a cascade of two multiplexers
LIBRARY ieee USE ieee.std_logic_1164.all
ENTITY mux_cascade IS PORT ( w1, w2, w3 IN
STD_LOGIC s1, s2 IN STD_LOGIC
f OUT STD_LOGIC ) END mux_cascade
ARCHITECTURE dataflow OF mux2to1 IS BEGIN f
lt w1 WHEN s1 1' ELSE w2 WHEN
s2 1 ELSE w3 END dataflow
31
Operators
  • Relational operators
  • Logic and relational operators precedence

/ lt lt gt gt
not / lt lt gt
gt and or nand nor xor xnor
Highest
Lowest
32
Priority of logic and relational operators
  • compare a bc
  • Incorrect
  • when a b and c else
  • equivalent to
  • when (a b) and c else
  • Correct
  • when a (b and c) else

33
VHDL operators
34
4-to-1 Multiplexer
s
0
s
f
s
s
1
1
0
w
w
00
0
0
0
0
w
01
w
1
0
1
f
1
w
10
w
2
1
0
2
w
11
3
w
1
1
3
(b) Truth table
(a) Graphic symbol
35
VHDL code for a 4-to-1 Multiplexer
LIBRARY ieee USE ieee.std_logic_1164.all
ENTITY mux4to1 IS PORT ( w0, w1, w2, w3 IN
STD_LOGIC s IN STD_LOGIC_VECTOR(1 DOWNTO
0) f OUT STD_LOGIC ) END mux4to1
ARCHITECTURE dataflow OF mux4to1
IS BEGIN WITH s SELECT f lt w0 WHEN
"00", w1 WHEN "01", w2 WHEN "10", w3
WHEN OTHERS END dataflow
36
Decoders
37
2-to-4 Decoder
y
w
w
y
y
y
En
0
1
0
1
2
3
w
y
0
0
0
0
1
1
0
0
0
w
y
1
1
0
1
1
0
1
0
0
y
2
1
0
1
0
0
1
0
y
En
3
1
1
1
0
0
0
1
x
x
0
0
0
0
0
(a) Truth table
(b) Graphical symbol
38
VHDL code for a 2-to-4 Decoder
LIBRARY ieee USE ieee.std_logic_1164.all
ENTITY dec2to4 IS PORT ( w IN
STD_LOGIC_VECTOR(1 DOWNTO 0) En IN
STD_LOGIC y OUT STD_LOGIC_VECTOR(0 TO 3)
) END dec2to4 ARCHITECTURE dataflow OF
dec2to4 IS SIGNAL Enw STD_LOGIC_VECTOR(2
DOWNTO 0) BEGIN Enw lt En w WITH Enw
SELECT y lt "1000" WHEN "100", "0100" WHEN
"101", "0010" WHEN "110", "0001" WHEN
"111", "0000" WHEN OTHERS END dataflow
39
Adders
40
16-bit Unsigned Adder
16
16
X
Y
Cin
Cout
S
16
41
Arithmetic Operators in VHDL (1)
  • To use basic arithmetic operations involving
  • std_logic_vectors you need to include the
  • following library packages
  • LIBRARY ieee
  • USE ieee.std_logic_1164.all
  • USE ieee.std_logic_unsigned.all
  • or
  • USE ieee.std_logic_signed.all

42
Arithmetic Operators in VHDL (2)
  • You can use standard , -, operators
  • to perform addition and subtraction
  • signal A STD_LOGIC_VECTOR(3 downto 0)
  • signal B STD_LOGIC_VECTOR(3 downto 0)
  • signal C STD_LOGIC_VECTOR(3 downto 0)
  • C lt A B

43
VHDL code for a 16-bit Unsigned Adder
LIBRARY ieee USE ieee.std_logic_1164.all USE
ieee.std_logic_unsigned.all ENTITY adder16
IS PORT ( Cin IN STD_LOGIC X, Y IN
STD_LOGIC_VECTOR(15 DOWNTO 0) S OUT
STD_LOGIC_VECTOR(15 DOWNTO 0) Cout OUT
STD_LOGIC ) END adder16 ARCHITECTURE
dataflow OF adder16 IS SIGNAL Sum
STD_LOGIC_VECTOR(16 DOWNTO 0) BEGIN Sum lt
('0' X) Y Cin S lt Sum(15 DOWNTO 0)
Cout lt Sum(16) END dataflow
44
Comparators
45
4-bit Number Comparator
4
A
AeqB
AgtB
4
B
AltB
46
VHDL code for a 4-bit Unsigned Number Comparator
LIBRARY ieee USE ieee.std_logic_1164.all USE
ieee.std_logic_unsigned.all ENTITY compare
IS PORT ( A, B IN STD_LOGIC_VECTOR(3 DOWNTO
0) AeqB, AgtB, AltB OUT STD_LOGIC ) END
compare ARCHITECTURE dataflow OF compare
IS BEGIN AeqB lt '1' WHEN A B ELSE '0'
AgtB lt '1' WHEN A gt B ELSE '0' AltB lt '1'
WHEN A lt B ELSE '0' END dataflow
47
VHDL code for a 4-bit Signed Number Comparator
LIBRARY ieee USE ieee.std_logic_1164.all USE
ieee.std_logic_signed.all ENTITY compare
IS PORT ( A, B IN STD_LOGIC_VECTOR(3 DOWNTO
0) AeqB, AgtB, AltB OUT STD_LOGIC ) END
compare ARCHITECTURE dataflow OF compare
IS BEGIN AeqB lt '1' WHEN A B ELSE '0'
AgtB lt '1' WHEN A gt B ELSE '0' AltB lt
'1' WHEN A lt B ELSE '0' END dataflow
48
Buffers
49
Tri-state Buffer
e
x
f
e
0
(a) A tri-state buffer
x
f
e
1
f
e
x
x
f
0
0
Z
0
1
Z
(b) Equivalent circuit
1
0
0
1
1
1
(c) Truth table
50
Four types of Tri-state Buffers
51
Tri-state Buffer example (1)
  • LIBRARY ieee
  • USE ieee.std_logic_1164.all
  • ENTITY tri_state IS
  • PORT ( ena IN STD_LOGIC
  • input IN STD_LOGIC
  • output OUT STD_LOGIC
  • )
  • END tri_state

52
Tri-state Buffer example (2)
  • ARCHITECTURE dataflow OF tri_state IS
  • BEGIN
  • output lt input WHEN (ena 1) ELSE Z
  • END dataflow

53
Encoders
54
Priority Encoder
w
0
y
0
w
1
y
1
w
2
z
w
3
55
VHDL code for a Priority Encoder
LIBRARY ieee USE ieee.std_logic_1164.all
ENTITY priority IS PORT ( w IN
STD_LOGIC_VECTOR(3 DOWNTO 0) y OUT
STD_LOGIC_VECTOR(1 DOWNTO 0) z OUT
STD_LOGIC ) END priority ARCHITECTURE
dataflow OF priority IS BEGIN y lt "11" WHEN
w(3) '1' ELSE "10" WHEN w(2) '1'
ELSE "01" WHEN w(1) '1' ELSE "00" z lt
'0' WHEN w "0000" ELSE '1' END dataflow
56
Describing Combinational Logic Using Dataflow
Design Style
57
MLU Example
58
MLU Block Diagram
59
MLU Entity Declaration
  • LIBRARY ieee
  • USE ieee.std_logic_1164.all
  • ENTITY mlu IS
  • PORT(
  • NEG_A IN STD_LOGIC
  • NEG_B IN STD_LOGIC
  • NEG_Y IN STD_LOGIC
  • A IN STD_LOGIC
  • B IN STD_LOGIC
  • L1 IN STD_LOGIC
  • L0 IN STD_LOGIC
  • Y OUT STD_LOGIC
  • )
  • END mlu

60
MLU Architecture Declarative Section
  • ARCHITECTURE mlu_dataflow OF mlu IS
  • SIGNAL A1 STD_LOGIC
  • SIGNAL B1 STD_LOGIC
  • SIGNAL Y1 STD_LOGIC
  • SIGNAL MUX_0 STD_LOGIC
  • SIGNAL MUX_1 STD_LOGIC
  • SIGNAL MUX_2 STD_LOGIC
  • SIGNAL MUX_3 STD_LOGIC
  • SIGNAL L STD_LOGIC_VECTOR(1 DOWNTO 0)

61
MLU - Architecture Body
  • BEGIN
  • A1lt NOT A WHEN (NEG_A'1') ELSE
  • A
  • B1lt NOT B WHEN (NEG_B'1') ELSE
  • B
  • Y lt NOT Y1 WHEN (NEG_Y'1') ELSE
  • Y1
  • MUX_0 lt A1 AND B1
  • MUX_1 lt A1 OR B1
  • MUX_2 lt A1 XOR B1
  • MUX_3 lt A1 XNOR B1
  • L lt L1 L0
  • with (L) select
  • Y1 lt MUX_0 WHEN "00",
  • MUX_1 WHEN "01",
  • MUX_2 WHEN "10",

62
Logic Implied Most Often by Conditional and
Selected Concurrent Signal Assignments
63
Data-flow VHDL
Major instructions
Concurrent statements
  • concurrent signal assignment (?)
  • conditional concurrent signal assignment

  • (when-else)
  • selected concurrent signal assignment

  • (with-select-when)
  • generate scheme for equations

  • (for-generate)

64
Conditional concurrent signal assignment
When - Else
target_signal lt value1 when condition1 else
value2 when condition2 else
. . . valueN-1 when
conditionN-1 else valueN
65
Most often implied structure
When - Else
target_signal lt value1 when condition1 else
value2 when condition2 else
. . . valueN-1 when
conditionN-1 else valueN
0 1
.
0 1
0 1
66
Data-flow VHDL
Major instructions
Concurrent statements
  • concurrent signal assignment (?)
  • conditional concurrent signal assignment

  • (when-else)
  • selected concurrent signal assignment

  • (with-select-when)
  • generate scheme for equations

  • (for-generate)

67
Selected concurrent signal assignment
With Select-When
with choice_expression select target_signal lt
expression1 when choices_1,
expression2 when choices_2,
. . . expressionN when
choices_N
68
Most Often Implied Structure
With Select-When
with choice_expression select target_signal lt
expression1 when choices_1,
expression2 when choices_2,
. . . expressionN when
choices_N
choices_1
expression1
expression2
choices_2
target_signal
expressionN
choices_N
choice expression
69
Allowed formats of choices_k
WHEN value WHEN value_1 value_2 .... value
N WHEN OTHERS
70
Allowed formats of choice_k - example
WITH sel SELECT y lt a WHEN "000", c
WHEN "001" "111", d WHEN OTHERS
Write a Comment
User Comments (0)
About PowerShow.com