ECE 448 Lecture 1 3

26
George Mason University ECE 448 – FPGA and ASIC Design with VHDL ECE 448 Lecture 13 Multipliers Timing Parameters

description

ECE 448 Lecture 1 3. Multipliers Timing Parameters. Required reading. S. Brown and Z. Vranesic , Fundamentals of Digital Logic with VHDL Design Chapter 10.2.3, Shift-and-Add Multiplier. Shift-and-Add Multiplier. An algorithm for multiplication. Decimal. Binary. 13. 1. 1. 0. 1. - PowerPoint PPT Presentation

Transcript of ECE 448 Lecture 1 3

Page 1: ECE  448 Lecture  1 3

George Mason UniversityECE 448 – FPGA and ASIC Design with VHDL

ECE 448Lecture 13

Multipliers

Timing Parameters

Page 2: ECE  448 Lecture  1 3

2ECE 448 – FPGA and ASIC Design with VHDL

Required reading

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

Chapter 10.2.3, Shift-and-Add Multiplier

Page 3: ECE  448 Lecture  1 3

3ECE 448 – FPGA and ASIC Design with VHDL

Shift-and-Add Multiplier

Page 4: ECE  448 Lecture  1 3

4ECE 448 – FPGA and ASIC Design with VHDL

An algorithm for multiplication

(a) Manual method

Multiplicand, A11

Product

Multiplier, B10

01

11

1 1 0 11011

00001011

01 001111

Binary

1311

1313

143

Decimal P = 0 ; for i = 0 to n 1 do

if b i = 1 thenP = P + A ;

end if; Left-shift A ;

end for;

(b) Pseudo-code

Page 5: ECE  448 Lecture  1 3

5ECE 448 – FPGA and ASIC Design with VHDL

Expected behavior of the multiplier

Page 6: ECE  448 Lecture  1 3

6ECE 448 – FPGA and ASIC Design with VHDL

Datapath for the multiplier

E

L E

L E

0 DataA LA

EA

A Clock

P

DataP

RegisterEP

Sum 0

z

B

b 0

DataB LB

EB

+

2n

n n

Shift-leftregister

Shift-right register

n

n

2n 2n

Psel 1 0

2n

2n

Page 7: ECE  448 Lecture  1 3

7ECE 448 – FPGA and ASIC Design with VHDL

ASM chart for the multiplier

Shift left A , Shift right B Done

P P A + B 0 = ?

P 0

s

Load A

b 0

Reset

S3

0

1

0

1

0 1

s

S1

S2

1

0

Load B

Page 8: ECE  448 Lecture  1 3

8ECE 448 – FPGA and ASIC Design with VHDL

ASM chart for the multiplier control circuit

EP z

b 0

Reset

S3

0

1

0

1 s

0

1

Done

Psel 0 = EP

s 0

1

S1

S2

Psel 1 = EA EB

Page 9: ECE  448 Lecture  1 3

9ECE 448 – FPGA and ASIC Design with VHDL

VHDL code of multiplier circuit (1)

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

ENTITY multiply ISGENERIC ( N : INTEGER := 8; NN : INTEGER := 16 ) ;PORT ( Clock : IN STD_LOGIC ;

Resetn : IN STD_LOGIC ; LA, LB, s : IN STD_LOGIC ; DataA : IN STD_LOGIC_VECTOR(N–1 DOWNTO 0) ; DataB : IN STD_LOGIC_VECTOR(N–1 DOWNTO 0) ; P : OUT STD_LOGIC_VECTOR(N–1 DOWNTO 0) ; Done : OUT STD_LOGIC ) ;

END multiply ;

Page 10: ECE  448 Lecture  1 3

10ECE 448 – FPGA and ASIC Design with VHDL

VHDL code of multiplier circuit (2)ARCHITECTURE Behavior OF multiply IS

TYPE State_type IS ( S1, S2, S3 ) ;SIGNAL y : State_type ;SIGNAL Psel, z, EA, EB, EP, Zero : STD_LOGIC ;SIGNAL PF, B, N_Zeros : STD_LOGIC_VECTOR(N–1 DOWNTO 0) ;SIGNAL A, Ain, DataP, Sum : STD_LOGIC_VECTOR(NN–1 DOWNTO 0) ;

BEGINFSM_transitions: PROCESS ( Resetn, Clock )BEGIN

IF Resetn = '0’ THENy <= S1 ;

ELSIF (Clock'EVENT AND Clock = '1') THENCASE y IS

WHEN S1 =>IF s = '0' THEN y <= S1 ; ELSE y <= S2 ; END IF ;

WHEN S2 =>IF z = '0' THEN y <= S2 ; ELSE y <= S3 ; END IF ;

WHEN S3 =>IF s = '1' THEN y <= S3 ; ELSE y <= S1 ; END IF ;

END CASE ;END IF ;

END PROCESS ;

Page 11: ECE  448 Lecture  1 3

11ECE 448 – FPGA and ASIC Design with VHDL

VHDL code of multiplier circuit (3)

FSM_outputs: PROCESS ( y, s, B(0) )BEGIN

EP <= '0' ; EA <= '0' ; EB <= '0' ; Done <= '0' ; Psel <= '0';CASE y IS

WHEN S1 =>EP <= '1‘ ;

WHEN S2 =>EA <= '1' ; EB <= '1' ; Psel <= '1‘ ;IF B(0) = '1' THEN

EP <= '1' ; ELSE

EP <= '0' ; END IF ;

WHEN S3 =>Done <= '1‘ ;

END CASE ;END PROCESS ;

Page 12: ECE  448 Lecture  1 3

12ECE 448 – FPGA and ASIC Design with VHDL

Datapath for the multiplier

E

L E

L E

0 DataA LA

EA

A Clock

P

DataP

RegisterEP

Sum 0

z

B

b 0

DataB LB

EB

+

2n

n n

Shift-leftregister

Shift-right register

n

n

2n 2n

Psel 1 0

2n

2n

Page 13: ECE  448 Lecture  1 3

13ECE 448 – FPGA and ASIC Design with VHDL

VHDL code of multiplier circuit (4)- - Define the datapath circuit

Zero <= '0' ;N_Zeros <= (OTHERS => '0' ) ;Ain <= N_Zeros & DataA ;

ShiftA: shiftlne GENERIC MAP ( N => NN )PORT MAP ( Ain, LA, EA, Zero, Clock, A ) ;

ShiftB: shiftrne GENERIC MAP ( N => N )PORT MAP ( DataB, LB, EB, Zero, Clock, B ) ;

z <= '1' WHEN B = N_Zeros ELSE '0' ;Sum <= A + PF ;

P <= PF;

- - Define the 2n 2-to-1 multiplexers for DataPGenMUX: FOR i IN 0 TO NN–1 GENERATE

Muxi: mux2to1 PORT MAP ( Zero, Sum(i), Psel, DataP(i) ) ;END GENERATE;

RegP: regne GENERIC MAP ( N => NN )PORT MAP ( DataP, Resetn, EP, Clock, PF ) ;

END Behavior ;

Page 14: ECE  448 Lecture  1 3

14ECE 448 – FPGA and ASIC Design with VHDL

Array Multiplier

Page 15: ECE  448 Lecture  1 3

15ECE 448 – FPGA and ASIC Design with VHDL

Notation

a Multiplicand ak-1ak-2 . . . a1 a0

x Multiplier xk-1xk-2 . . . x1 x0

p Product (a x) p2k-1p2k-2 . . . p2 p1 p0

Page 16: ECE  448 Lecture  1 3

16ECE 448 – FPGA and ASIC Design with VHDL

Unsigned Multiplication

a4 a3 a2 a1 a0

x4 x3 x2 x1 x0x

a4x0 a3x0 a2x0 a1x0 a0x0

a4x1 a3x1 a2x1 a1x1 a0x1

a4x2 a3x2 a2x2 a1x2 a0x2

a4x3 a3x3 a2x3 a1x3 a0x3

a4x4 a3x4 a2x4 a1x4 a0x4

p0p1p9 p2p3p4p5p6p7p8

+

ax0 20

ax1 21

ax2 22

ax3 23

ax4 24

Page 17: ECE  448 Lecture  1 3

17ECE 448 – FPGA and ASIC Design with VHDL

5 x 5 Array Multiplier

Page 18: ECE  448 Lecture  1 3

18ECE 448 – FPGA and ASIC Design with VHDL

Array Multiplier - Basic Cell

x

y

cin

cout s

FA

Page 19: ECE  448 Lecture  1 3

19ECE 448 – FPGA and ASIC Design with VHDL

Array Multiplier – Modified Basic Cell

si-1ci

ci+1 si

FA

xn

am

Page 20: ECE  448 Lecture  1 3

20ECE 448 – FPGA and ASIC Design with VHDL

5 x 5 Array Multiplier with modified cells

Page 21: ECE  448 Lecture  1 3

21ECE 448 – FPGA and ASIC Design with VHDL

Pipelined 5 x 5 Multiplier

Page 22: ECE  448 Lecture  1 3

22ECE 448 – FPGA and ASIC Design with VHDL

Array Multiplier – Modified Basic Cell

si-1ci

ci+1 si

FA

xn

am

Flip-flops

Page 23: ECE  448 Lecture  1 3

23ECE 448 – FPGA and ASIC Design with VHDL

Timing parameters

definition units

delay

clock period T

clock frequency

time from pointpoint

rising edge rising edgeof clock

1clock period

ns

ns

MHz

latency

throughput

time from inputoutput

#output bits/time unit

ns

Mbits/s

Page 24: ECE  448 Lecture  1 3

24ECE 448 – FPGA and ASIC Design with VHDL

Latency

D Q

clk

D Q

clk

CombinationalLogic

CombinationalLogic

CombinationalLogic

CombinationalLogic D Q

clk

top-level entity

• Latency is the time between input(n) and output(n)• i.e. time it takes from first input to first output, second input to second output, etc.• Latency is usually constant for a system (but not always)• Also called input-to-output latency

• Count the number of rising edges of the clock!• In this example, 2 rising edges from input to output latency is 2 cycles

• Latency is measured in clock cycles and then translated to units of time (nanoseconds)• In this example, say clock period is 10 ns, then latency is 20 ns

input output

clk

input input(0) input(1) input(2)

output (unknown) output(0) output(1)

8 bits 8 bits

100 MHz

Page 25: ECE  448 Lecture  1 3

25ECE 448 – FPGA and ASIC Design with VHDL

Throughput

D Q

clk

D Q

clk

CombinationalLogic

CombinationalLogic

CombinationalLogic

CombinationalLogic D Q

clk

top-level entity

• Throughput = (bits per output sample) / (time between consecutive output samples)• Bits per output sample:

• In this example, 8 bits per output sample• Time between consecutive output samples: clock cycles between output(n) to output(n+1)

• Can be measured in clock cycles, then translated to time• In this example, time between consecutive output samples = 1 clock cycle = 10 ns

• Throughput = (8 bits per output sample) / (10 ns) = 0.8 bits / ns = 800 Mbits/s

input output

clk

input input(0) input(1) input(2)

output (unknown) output(0) output(1)

8 bits 8 bits

1 cycle betweeenoutput samples

Page 26: ECE  448 Lecture  1 3

26ECE 448 – FPGA and ASIC Design with VHDL

Pipelining—Conceptual

• Purpose of pipelining is to reduce the critical path of the circuit by inserting an additional register (called a pipeline register)

• This splits the combinational logic in half• Now critical path delay is 5 ns, so maximum clock frequency is 200 MHz

• Double the clock frequency• Area is increased due to additional register• In general, pipelining increases throughput at the cost of increased

area/power and a minor increase in latency

D Q

clk

D Q

clk

CombinationalLogic A

CombinationalLogic A

tLOGICA = 5 ns

CombinationalLogic

CombinationalLogic

CombinationalLogic A

CombinationalLogic A

D Q

clk

register splits logic in half

tLOGICB = 5 ns