+ All Categories
Home > Documents > Combinational-Circuit Building Blocks Data Flow Modeling of Combinational Logic

Combinational-Circuit Building Blocks Data Flow Modeling of Combinational Logic

Date post: 07-Jan-2016
Category:
Upload: jayden
View: 29 times
Download: 2 times
Share this document with a friend
Description:
ECE 448 Lecture 3. Combinational-Circuit Building Blocks Data Flow Modeling of Combinational Logic. R eading. Required. P. Chu, FPGA Prototyping by VHDL Examples Chapter 3, RT-level combinational circuit. Recommended. - PowerPoint PPT Presentation
Popular Tags:
81
George Mason University ECE 448 – FPGA and ASIC Design with VHDL Combinational-Circuit Building Blocks Data Flow Modeling of Combinational Logic ECE 448 Lecture 3
Transcript
Page 1: Combinational-Circuit Building Blocks Data Flow Modeling of  Combinational Logic

George Mason UniversityECE 448 – FPGA and ASIC Design with VHDL

Combinational-Circuit Building Blocks

Data Flow Modeling of Combinational Logic

ECE 448Lecture 3

Page 2: Combinational-Circuit Building Blocks Data Flow Modeling of  Combinational Logic

2ECE 448 – FPGA and ASIC Design with VHDL

Reading

• S. Brown and Z. Vranesic, Fundamentals of Digital Logic with VHDL Design

Chapter 6, Combinational-Circuit Building Blocks

Chapter 5.5, Design of Arithmetic Circuits Using

CAD Tools

• P. Chu, FPGA Prototyping by VHDL Examples

Chapter 3, RT-level combinational circuit

Required

Recommended

Page 3: Combinational-Circuit Building Blocks Data Flow Modeling of  Combinational Logic

3ECE 448 – FPGA and ASIC Design with VHDL

VHDL Design Styles

Page 4: Combinational-Circuit Building Blocks Data Flow Modeling of  Combinational Logic

4ECE 448 – FPGA and ASIC Design with VHDL

VHDL Design Styles

Components andinterconnects

structural

VHDL Design Styles

dataflow

Concurrent statements

behavioral(sequential)

• Registers• State machines• Instruction decoders

Sequential statements

Subset most suitable for synthesis

• Testbenches

Page 5: Combinational-Circuit Building Blocks Data Flow Modeling of  Combinational Logic

5ECE 448 – FPGA and ASIC Design with VHDL

Synthesizable VHDL

Dataflow VHDL

Design Style

VHDL code

synthesizable

VHDL code

synthesizable

Dataflow VHDL

Design Style

Page 6: Combinational-Circuit Building Blocks Data Flow Modeling of  Combinational Logic

6ECE 448 – FPGA and ASIC Design with VHDL

Data-Flow VHDL

• concurrent signal assignment ()

• conditional concurrent signal assignment (when-else)

• selected concurrent signal assignment (with-select-when)

• generate scheme for equations (for-generate)

Concurrent Statements

Page 7: Combinational-Circuit Building Blocks Data Flow Modeling of  Combinational Logic

7ECE 448 – FPGA and ASIC Design with VHDL

Modeling Wires and Buses

Page 8: Combinational-Circuit Building Blocks Data Flow Modeling of  Combinational Logic

8ECE 448 – FPGA and ASIC Design with VHDL

Signals

SIGNAL a : STD_LOGIC;

SIGNAL b : STD_LOGIC_VECTOR(7 DOWNTO 0);

wire

a

bus

b

1

8

Page 9: Combinational-Circuit Building Blocks Data Flow Modeling of  Combinational Logic

9ECE 448 – FPGA and ASIC Design with VHDL

Merging wires and buses

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 <= a & b & c;

4

5

10

a

b

c

d

Page 10: Combinational-Circuit Building Blocks Data Flow Modeling of  Combinational Logic

10ECE 448 – FPGA and ASIC Design with VHDL

Splitting buses

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 <= d(9 downto 6);b <= d(5 downto 1);c <= d(0);

4

5

10

a

b

c

d

Page 11: Combinational-Circuit Building Blocks Data Flow Modeling of  Combinational Logic

11ECE 448 – FPGA and ASIC Design with VHDL

Combinational-Circuit

Building Blocks

Page 12: Combinational-Circuit Building Blocks Data Flow Modeling of  Combinational Logic

12ECE 448 – FPGA and ASIC Design with VHDL

Fixed Shifters & Rotators

Page 13: Combinational-Circuit Building Blocks Data Flow Modeling of  Combinational Logic

13ECE 448 – FPGA and ASIC Design with VHDL

Fixed Shift in VHDL

A(3) A(2) A(1) A(0)

‘0’ A(3) A(2) A(1)

A>>1

SIGNAL A : STD_LOGIC_VECTOR(3 DOWNTO 0);

SIGNAL AshiftR: STD_LOGIC_VECTOR(3 DOWNTO 0);

AshiftR <=

AshiftR

A

Page 14: Combinational-Circuit Building Blocks Data Flow Modeling of  Combinational Logic

14ECE 448 – FPGA and ASIC Design with VHDL

Fixed Rotation in VHDL

A(3) A(2) A(1) A(0)

A(2) A(1) A(0) A(3)

A<<<1

SIGNAL A : STD_LOGIC_VECTOR(3 DOWNTO 0);

SIGNAL ArotL: STD_LOGIC_VECTOR(3 DOWNTO 0);

ArotL <=

ArotL

A

Page 15: Combinational-Circuit Building Blocks Data Flow Modeling of  Combinational Logic

15ECE 448 – FPGA and ASIC Design with VHDL

Gates

Page 16: Combinational-Circuit Building Blocks Data Flow Modeling of  Combinational Logic

16ECE 448 – FPGA and ASIC Design with VHDL

x 1 x 2

x n

x 1 x 2 x n + + + x 1 x 2

x 1 x 2 +

x 1 x 2

x n

x 1 x 2

x 1 x 2 x 1 x 2 x n

(a) AND gates

(b) OR gates

x x

(c) NOT gate

Basic Gates – AND, OR, NOT

Page 17: Combinational-Circuit Building Blocks Data Flow Modeling of  Combinational Logic

17ECE 448 – FPGA and ASIC Design with VHDL

x 1 x 2

x n

x 1 x 2 x n + + + x 1 x 2

x 1 x 2 +

x 1 x 2

x n

x 1 x 2

x 1 x 2 x 1 x 2 x n

(a) NAND gates

(b) NOR gates

Basic Gates – NAND, NOR

Page 18: Combinational-Circuit Building Blocks Data Flow Modeling of  Combinational Logic

18ECE 448 – FPGA and ASIC Design with VHDL

x

x 1

x 2

x 1

x 2

x 1

x 2

x 1

x 2

x 1

x 2

x 1

x 2

x 1 x 2 1 x 2 + = (a)

x 1 x 2 + x 1 x 2 = (b)

DeMorgan’s Theorem and other symbols for NAND, NOR

Page 19: Combinational-Circuit Building Blocks Data Flow Modeling of  Combinational Logic

19ECE 448 – FPGA and ASIC Design with VHDL

Basic Gates – XOR

(b) Graphical symbol(a) Truth table

0 0 1 1

0 1 0 1

0 1 1 0

x 1 x 2

x 1

x 2

f x 1 x 2 =

f x 1 x 2 =

(c) Sum-of-products implementation

f x 1 x 2 =

x 1

x 2

Page 20: Combinational-Circuit Building Blocks Data Flow Modeling of  Combinational Logic

20ECE 448 – FPGA and ASIC Design with VHDL

Basic Gates – XNOR

(b) Graphical symbol(a) Truth table

0 0 1 1

0 1 0 1

1 0 0 1

x 1 x 2

x 1

x 2

f x 1 x 2 =

f x 1 x 2 =

(c) Sum-of-products implementation

f x 1 x 2 =

x 1

x 2

x 1 x 2 = .

Page 21: Combinational-Circuit Building Blocks Data Flow Modeling of  Combinational Logic

21ECE 448 – FPGA and ASIC Design with VHDL

Data-flow VHDL: Example

x

y

cin

s

cout

Page 22: Combinational-Circuit Building Blocks Data Flow Modeling of  Combinational Logic

22ECE 448 – FPGA and ASIC Design with VHDL

Data-flow VHDL: Example (1)

LIBRARY ieee ;USE ieee.std_logic_1164.all ;

ENTITY fulladd ISPORT ( x : IN STD_LOGIC ;

y : IN STD_LOGIC ; cin : IN STD_LOGIC ;

s : OUT STD_LOGIC ; cout : OUT STD_LOGIC ) ;END fulladd ;

Page 23: Combinational-Circuit Building Blocks Data Flow Modeling of  Combinational Logic

23ECE 448 – FPGA and ASIC Design with VHDL

Data-flow VHDL: Example (2)

ARCHITECTURE dataflow OF fulladd ISBEGIN

s <= x XOR y XOR cin ;cout <= (x AND y) OR (cin AND x) OR (cin AND y) ;

END dataflow ;

Page 24: Combinational-Circuit Building Blocks Data Flow Modeling of  Combinational Logic

24ECE 448 – FPGA and ASIC Design with VHDL

Logic Operators

• Logic operators

• Logic operators precedence

and or nand nor xor not xnor

notand or nand nor xor xnor

Highest

Lowest

only in VHDL-93

Page 25: Combinational-Circuit Building Blocks Data Flow Modeling of  Combinational Logic

25ECE 448 – FPGA and ASIC Design with VHDL

Wanted: y = ab + cdIncorrecty <= a and b or c and d ; equivalent toy <= ((a and b) or c) and d ;equivalent toy = (ab + c)d

Correcty <= (a and b) or (c and d) ;

No Implied Precedence

Page 26: Combinational-Circuit Building Blocks Data Flow Modeling of  Combinational Logic

26ECE 448 – FPGA and ASIC Design with VHDL

Multiplexers

Page 27: Combinational-Circuit Building Blocks Data Flow Modeling of  Combinational Logic

27ECE 448 – FPGA and ASIC Design with VHDL

2-to-1 Multiplexer

(a) Graphical symbol (b) Truth table

0

1

fs

w0

w1

f

s

w0

w1

0

1

Page 28: Combinational-Circuit Building Blocks Data Flow Modeling of  Combinational Logic

28ECE 448 – FPGA and ASIC Design with VHDL

VHDL code for a 2-to-1 Multiplexer

LIBRARY ieee ;USE ieee.std_logic_1164.all ;

ENTITY mux2to1 ISPORT ( w0, w1, s : IN STD_LOGIC ;

f : OUT STD_LOGIC ) ;END mux2to1 ;

ARCHITECTURE dataflow OF mux2to1 ISBEGIN

f <= w0 WHEN s = '0' ELSE w1 ;END dataflow ;

Page 29: Combinational-Circuit Building Blocks Data Flow Modeling of  Combinational Logic

29ECE 448 – FPGA and ASIC Design with VHDL

Cascade of two multiplexers

s1

w3

w1

0

1

s2

w2

0

1 y

Page 30: Combinational-Circuit Building Blocks Data Flow Modeling of  Combinational Logic

30ECE 448 – FPGA and ASIC Design with VHDL

VHDL code for a cascade of two multiplexers

LIBRARY ieee ;USE ieee.std_logic_1164.all ;

ENTITY mux_cascade ISPORT ( w1, w2, w3: IN STD_LOGIC ;

s1, s2 : IN STD_LOGIC ;f : OUT STD_LOGIC ) ;

END mux_cascade ;

ARCHITECTURE dataflow OF mux2to1 ISBEGIN

f <= w1 WHEN s1 = ‘1' ELSE w2 WHEN s2 = ‘1’ ELSE w3 ;END dataflow ;

Page 31: Combinational-Circuit Building Blocks Data Flow Modeling of  Combinational Logic

31ECE 448 – FPGA and ASIC Design with VHDL

Operators

• Relational operators

• Logic and relational operators precedence

= /= < <= > >=

not= /= < <= > >=and or nand nor xor xnor

Highest

Lowest

Page 32: Combinational-Circuit Building Blocks Data Flow Modeling of  Combinational Logic

32ECE 448 – FPGA and ASIC Design with VHDL

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 …

Priority of logic and relational operators

Page 33: Combinational-Circuit Building Blocks Data Flow Modeling of  Combinational Logic

33ECE 448 – FPGA and ASIC Design with VHDL

VHDL operators

Page 34: Combinational-Circuit Building Blocks Data Flow Modeling of  Combinational Logic

34ECE 448 – FPGA and ASIC Design with VHDL

f

s 1

w 0

w 1

00

01

(b) Truth table

w 0

w 1

s 0

w 2

w 3

10

11

0

0

1

1

1

0

1

f s 1

0

s 0

w 2

w 3

(a) Graphic symbol

4-to-1 Multiplexer

Page 35: Combinational-Circuit Building Blocks Data Flow Modeling of  Combinational Logic

35ECE 448 – FPGA and ASIC Design with VHDL

VHDL code for a 4-to-1 Multiplexer

LIBRARY ieee ;USE ieee.std_logic_1164.all ;

ENTITY mux4to1 ISPORT ( 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 ISBEGIN

WITH s SELECTf <= w0 WHEN "00",

w1 WHEN "01",w2 WHEN "10",w3 WHEN OTHERS ;

END dataflow ;

Page 36: Combinational-Circuit Building Blocks Data Flow Modeling of  Combinational Logic

36ECE 448 – FPGA and ASIC Design with VHDL

Decoders

Page 37: Combinational-Circuit Building Blocks Data Flow Modeling of  Combinational Logic

37ECE 448 – FPGA and ASIC Design with VHDL

2-to-4 Decoder

0

0

1

1

1

0

1

y 3

w 1

0

w 0

x x

1

1

0

1

1

En

0

0

1

0

0

y 2

0

1

0

0

0

y 1

1

0

0

0

0

y 0

0

0

0

1

0

w 1

En

y 3

w 0

y 2

y 1

y 0

(a) Truth table (b) Graphical symbol

Page 38: Combinational-Circuit Building Blocks Data Flow Modeling of  Combinational Logic

38ECE 448 – FPGA and ASIC Design with VHDL

VHDL code for a 2-to-4 Decoder

LIBRARY ieee ;USE ieee.std_logic_1164.all ;

ENTITY dec2to4 ISPORT ( w : IN STD_LOGIC_VECTOR(1 DOWNTO 0) ;

En : IN STD_LOGIC ;y : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ) ;

END dec2to4 ;

ARCHITECTURE dataflow OF dec2to4 ISSIGNAL Enw : STD_LOGIC_VECTOR(2 DOWNTO 0) ;

BEGINEnw <= En & w ;WITH Enw SELECT

y <= “0001" WHEN "100","0010" WHEN "101","0100" WHEN "110",“1000" WHEN "111","0000" WHEN OTHERS ;

END dataflow ;

Page 39: Combinational-Circuit Building Blocks Data Flow Modeling of  Combinational Logic

39ECE 448 – FPGA and ASIC Design with VHDL

Adders

Page 40: Combinational-Circuit Building Blocks Data Flow Modeling of  Combinational Logic

40ECE 448 – FPGA and ASIC Design with VHDL

16-bit Unsigned Adder

16 16

X Y

16

CinCoutS

Page 41: Combinational-Circuit Building Blocks Data Flow Modeling of  Combinational Logic

41ECE 448 – FPGA and ASIC Design with VHDL

Operations on Unsigned Numbers

For operations on unsigned numbers

USE ieee.numeric_std.alland signals of the typeUNSIGNEDand conversion functions: std_logic_vector(), unsigned()

OR

USE ieee.std_logic_unsigned.alland signals of the typeSTD_LOGIC_VECTOR

(recommended)

(permitted)

Page 42: Combinational-Circuit Building Blocks Data Flow Modeling of  Combinational Logic

42ECE 448 – FPGA and ASIC Design with VHDL

VHDL code for a 16-bit Unsigned Adder

LIBRARY ieee ;USE ieee.std_logic_1164.all ;USE ieee.std_logic_unsigned.all ;

ENTITY adder16 ISPORT ( Cin : IN STD_LOGIC ;

X : IN STD_LOGIC_VECTOR(15 DOWNTO 0) ;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) ;

BEGINSum <= ('0' & X) + Y + Cin ;S <= Sum(15 DOWNTO 0) ;Cout <= Sum(16) ;

END dataflow ;

Page 43: Combinational-Circuit Building Blocks Data Flow Modeling of  Combinational Logic

43ECE 448 – FPGA and ASIC Design with VHDL

Addition of Unsigned Numbers (1)

LIBRARY ieee ;USE ieee.std_logic_1164.all ;USE ieee.numeric_std.all ;

ENTITY adder16 ISPORT ( Cin : IN STD_LOGIC ;

X : IN STD_LOGIC_VECTOR(15 DOWNTO 0) ;Y : IN STD_LOGIC_VECTOR(15 DOWNTO 0) ;S : OUT STD_LOGIC_VECTOR(15 DOWNTO 0) ;Cout : OUT STD_LOGIC ) ;

END adder16 ;

Page 44: Combinational-Circuit Building Blocks Data Flow Modeling of  Combinational Logic

44ECE 448 – FPGA and ASIC Design with VHDL

Addition of Unsigned Numbers (2)

ARCHITECTURE dataflow OF adder16 IS

SIGNAL Xu : UNSIGNED(16 DOWNTO 0);

SIGNAL Yu : UNSIGNED(15 DOWNTO 0);

SIGNAL Su : UNSIGNED(16 DOWNTO 0) ;

SIGNAL Cinu : UNSIGNED(1 DOWNTO 0);

BEGIN

Xu <= unsigned(‘0’ & X);

Yu <= unsigned(Y);

Cinu <= unsigned(‘0’ & Cin);

Su <= Xu + Yu + Cinu ;

S <= std_logic_vector(Su(15 DOWNTO 0)) ;

Cout <= Su(16) ;

END dataflow;

Page 45: Combinational-Circuit Building Blocks Data Flow Modeling of  Combinational Logic

45ECE 448 – FPGA and ASIC Design with VHDL

Operations on Signed Numbers

For operations on signed numbers

USE ieee.numeric_std.all,signals of the type SIGNED,and conversion functions: std_logic_vector(), signed()

OR

USE ieee.std_logic_signed.alland signals of the type STD_LOGIC_VECTOR

(recommended)

(permitted)

Page 46: Combinational-Circuit Building Blocks Data Flow Modeling of  Combinational Logic

46ECE 448 – FPGA and ASIC Design with VHDL

Signed and Unsigned Types

Behave exactly like

STD_LOGIC_VECTOR

plus, they determine whether a given vector

should be treated as a signed or unsigned number.

Require

USE ieee.numeric_std.all;

Page 47: Combinational-Circuit Building Blocks Data Flow Modeling of  Combinational Logic

47ECE 448 – FPGA and ASIC Design with VHDL

Multipliers

Page 48: Combinational-Circuit Building Blocks Data Flow Modeling of  Combinational Logic

48ECE 448 – FPGA and ASIC Design with VHDL

Unsigned vs. Signed Multiplication

1111

1111x

11100001

15

15x

225

1111

1111x

00000001

-1

-1x

1

Unsigned Signed

Page 49: Combinational-Circuit Building Blocks Data Flow Modeling of  Combinational Logic

49ECE 448 – FPGA and ASIC Design with VHDL

8x8-bit Unsigned Multiplier

8 8

a b

16

c

Page 50: Combinational-Circuit Building Blocks Data Flow Modeling of  Combinational Logic

50ECE 448 – FPGA and ASIC Design with VHDL

Multiplication of unsigned numbers

LIBRARY ieee;USE ieee.std_logic_1164.all; USE ieee.std_logic_unsigned.all ;

entity multiply is port(

a : in STD_LOGIC_VECTOR(7 downto 0); b : in STD_LOGIC_VECTOR(7 downto 0); c : out STD_LOGIC_VECTOR(15 downto 0)

);end multiply;

architecture dataflow of multiply is

c <= a * b;

end dataflow;

Page 51: Combinational-Circuit Building Blocks Data Flow Modeling of  Combinational Logic

51ECE 448 – FPGA and ASIC Design with VHDL

8x8-bit Signed Multiplier

8 8

a b

16

c

Page 52: Combinational-Circuit Building Blocks Data Flow Modeling of  Combinational Logic

52ECE 448 – FPGA and ASIC Design with VHDL

Multiplication of signed numbers

LIBRARY ieee;USE ieee.std_logic_1164.all; USE ieee.std_logic_signed.all ;

entity multiply is port(

a : in STD_LOGIC_VECTOR(7 downto 0); b : in STD_LOGIC_VECTOR(7 downto 0); c : out STD_LOGIC_VECTOR(15 downto 0)

);end multiply;

architecture dataflow of multiply is

c <= a * b;

end dataflow;

Page 53: Combinational-Circuit Building Blocks Data Flow Modeling of  Combinational Logic

53ECE 448 – FPGA and ASIC Design with VHDL

8x8-bit Unsigned and Signed Multiplier

8 8

a b

16

cu

16

cs

Page 54: Combinational-Circuit Building Blocks Data Flow Modeling of  Combinational Logic

54ECE 448 – FPGA and ASIC Design with VHDL

Multiplication of signed and unsigned numbers

LIBRARY ieee;USE ieee.std_logic_1164.all; USE ieee.numeric_std.all ;

entity multiply is port(

a : in STD_LOGIC_VECTOR(7 downto 0); b : in STD_LOGIC_VECTOR(7 downto 0); cu : out STD_LOGIC_VECTOR(15 downto 0); cs : out STD_LOGIC_VECTOR(15 downto 0)

);end multiply;

architecture dataflow of multiply isbegin

-- signed multiplicationcs <= STD_LOGIC_VECTOR(SIGNED(a)*SIGNED(b));

-- unsigned multiplicationcu <= STD_LOGIC_VECTOR(UNSIGNED(a)*UNSIGNED(b))

end dataflow;

Page 55: Combinational-Circuit Building Blocks Data Flow Modeling of  Combinational Logic

55ECE 448 – FPGA and ASIC Design with VHDL

Comparators

Page 56: Combinational-Circuit Building Blocks Data Flow Modeling of  Combinational Logic

56ECE 448 – FPGA and ASIC Design with VHDL

4-bit Number Comparator

4

4

A

B

AeqB

AgtB

AltB

Page 57: Combinational-Circuit Building Blocks Data Flow Modeling of  Combinational Logic

57ECE 448 – FPGA and ASIC Design with VHDL

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 ISPORT ( A, B : IN STD_LOGIC_VECTOR(3 DOWNTO 0) ;

AeqB, AgtB, AltB : OUT STD_LOGIC ) ;END compare ;

ARCHITECTURE dataflow OF compare ISBEGIN

AeqB <= '1' WHEN A = B ELSE '0' ;AgtB <= '1' WHEN A > B ELSE '0' ;AltB <= '1' WHEN A < B ELSE '0' ;

END dataflow ;

Page 58: Combinational-Circuit Building Blocks Data Flow Modeling of  Combinational Logic

58ECE 448 – FPGA and ASIC Design with VHDL

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 ISPORT ( A, B : IN STD_LOGIC_VECTOR(3 DOWNTO 0) ;

AeqB, AgtB, AltB : OUT STD_LOGIC ) ;END compare ;

ARCHITECTURE dataflow OF compare ISBEGIN

AeqB <= '1' WHEN A = B ELSE '0' ;AgtB <= '1' WHEN A > B ELSE '0' ;AltB <= '1' WHEN A < B ELSE '0' ;

END dataflow ;

Page 59: Combinational-Circuit Building Blocks Data Flow Modeling of  Combinational Logic

59ECE 448 – FPGA and ASIC Design with VHDL

Buffers

Page 60: Combinational-Circuit Building Blocks Data Flow Modeling of  Combinational Logic

60ECE 448 – FPGA and ASIC Design with VHDL

(b) Equivalent circuit

(c) Truth table

x f

e

(a) A tri-state buffer

0 0 1 1

0 1 0 1

Z Z 0 1

f e x

x f

e = 0

e = 1x f

Tri-state Buffer

Page 61: Combinational-Circuit Building Blocks Data Flow Modeling of  Combinational Logic

61ECE 448 – FPGA and ASIC Design with VHDL

x f

e

(b)

x f

e

(a)

x f

e

(c)

x f

e

(d)

Four types of Tri-state Buffers

Page 62: Combinational-Circuit Building Blocks Data Flow Modeling of  Combinational Logic

62ECE 448 – FPGA and ASIC Design with VHDL

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;

Page 63: Combinational-Circuit Building Blocks Data Flow Modeling of  Combinational Logic

63ECE 448 – FPGA and ASIC Design with VHDL

Tri-state Buffer – example (2)

ARCHITECTURE dataflow OF tri_state IS

BEGIN

output <= input WHEN (ena = ‘1’) ELSE ‘Z’;

END dataflow;

Page 64: Combinational-Circuit Building Blocks Data Flow Modeling of  Combinational Logic

64ECE 448 – FPGA and ASIC Design with VHDL

Encoders

Page 65: Combinational-Circuit Building Blocks Data Flow Modeling of  Combinational Logic

65ECE 448 – FPGA and ASIC Design with VHDL

Priority Encoder

w 0

w 3

y 0

y 1

d001

010

w0 y1

d

y0

1 1

01

1

11

z

1xx

0

x

w1

01x

0

x

w2

001

0

x

w3

000

0

1

z

w 1

w 2

Page 66: Combinational-Circuit Building Blocks Data Flow Modeling of  Combinational Logic

66ECE 448 – FPGA and ASIC Design with VHDL

VHDL code for a Priority Encoder

LIBRARY ieee ;USE ieee.std_logic_1164.all ;

ENTITY priority ISPORT ( 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 ISBEGIN

y <= "11" WHEN w(3) = '1' ELSE "10" WHEN w(2) = '1' ELSE"01" WHEN w(1) = '1' ELSE"00" ;

z <= '0' WHEN w = "0000" ELSE '1' ;END dataflow ;

Page 67: Combinational-Circuit Building Blocks Data Flow Modeling of  Combinational Logic

67ECE 448 – FPGA and ASIC Design with VHDL

Describing

Combinational Logic

Using

Dataflow Design Style

Page 68: Combinational-Circuit Building Blocks Data Flow Modeling of  Combinational Logic

68ECE 448 – FPGA and ASIC Design with VHDL

MLU Example

Page 69: Combinational-Circuit Building Blocks Data Flow Modeling of  Combinational Logic

MLU Block Diagram

B

A

NEG_A

NEG_B

IN0

IN1

IN2

IN3

OUTPUT

SEL1SEL0

MUX_4_1

L0L1

NEG_Y

Y

Y1

A1

B1

MUX_0

MUX_1

MUX_2

MUX_3

0

1

0

1

0

1

Page 70: Combinational-Circuit Building Blocks Data Flow Modeling of  Combinational Logic

70ECE 448 – FPGA and ASIC Design with VHDL

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;

Page 71: Combinational-Circuit Building Blocks Data Flow Modeling of  Combinational Logic

71ECE 448 – FPGA and ASIC Design with VHDL

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);

Page 72: Combinational-Circuit Building Blocks Data Flow Modeling of  Combinational Logic

72ECE 448 – FPGA and ASIC Design with VHDL

MLU - Architecture BodyBEGIN

A1<= NOT A WHEN (NEG_A='1') ELSEA;

B1<= NOT B WHEN (NEG_B='1') ELSE B;

Y <= NOT Y1 WHEN (NEG_Y='1') ELSEY1;

MUX_0 <= A1 AND B1;MUX_1 <= A1 OR B1;MUX_2 <= A1 XOR B1;MUX_3 <= A1 XNOR B1;

L <= L1 & L0;

with (L) select Y1 <= MUX_0 WHEN "00",

MUX_1 WHEN "01", MUX_2 WHEN "10",

MUX_3 WHEN OTHERS;

END mlu_dataflow;

Page 73: Combinational-Circuit Building Blocks Data Flow Modeling of  Combinational Logic

73ECE 448 – FPGA and ASIC Design with VHDL

Logic Implied Most Often by

Conditional and Selected

Concurrent Signal

Assignments

Page 74: Combinational-Circuit Building Blocks Data Flow Modeling of  Combinational Logic

74ECE 448 – FPGA and ASIC Design with VHDL

Data-flow VHDL

• concurrent signal assignment ()• conditional concurrent signal assignment (when-else)• selected concurrent signal assignment (with-select-when)• generate scheme for equations (for-generate)

Major instructions

Concurrent statements

Page 75: Combinational-Circuit Building Blocks Data Flow Modeling of  Combinational Logic

75ECE 448 – FPGA and ASIC Design with VHDL

Conditional concurrent signal assignment

target_signal <= value1 when condition1 else value2 when condition2 else . . . valueN-1 when conditionN-1 else valueN;

When - Else

Page 76: Combinational-Circuit Building Blocks Data Flow Modeling of  Combinational Logic

76ECE 448 – FPGA and ASIC Design with VHDL

Most often implied structure

target_signal <= value1 when condition1 else value2 when condition2 else . . . valueN-1 when conditionN-1 else valueN;

When - Else

.…Value N

Value N-1

Condition N-1

Condition 2

Condition 1

Value 2

Value 1

Target Signal

…0

1

0

1

0

1

Page 77: Combinational-Circuit Building Blocks Data Flow Modeling of  Combinational Logic

77ECE 448 – FPGA and ASIC Design with VHDL

Data-flow VHDL

• concurrent signal assignment ()• conditional concurrent signal assignment (when-else)• selected concurrent signal assignment (with-select-when)• generate scheme for equations (for-generate)

Major instructions

Concurrent statements

Page 78: Combinational-Circuit Building Blocks Data Flow Modeling of  Combinational Logic

78ECE 448 – FPGA and ASIC Design with VHDL

Selected concurrent signal assignment

with choice_expression select target_signal <= expression1 when choices_1, expression2 when choices_2, . . . expressionN when choices_N;

With –Select-When

Page 79: Combinational-Circuit Building Blocks Data Flow Modeling of  Combinational Logic

79ECE 448 – FPGA and ASIC Design with VHDL

Most Often Implied Structure

with choice_expression select target_signal <= expression1 when choices_1, expression2 when choices_2, . . . expressionN when choices_N;

With –Select-When

choices_1

choices_2

choices_N

expression1

target_signal

choice expression

expression2

expressionN

Page 80: Combinational-Circuit Building Blocks Data Flow Modeling of  Combinational Logic

80ECE 448 – FPGA and ASIC Design with VHDL

Allowed formats of choices_k

WHEN value

WHEN value_1 | value_2 | .... | value N

WHEN OTHERS

Page 81: Combinational-Circuit Building Blocks Data Flow Modeling of  Combinational Logic

81ECE 448 – FPGA and ASIC Design with VHDL

Allowed formats of choice_k - example

WITH sel SELECT

y <= a WHEN "000",

c WHEN "001" | "111",

d WHEN OTHERS;


Recommended