Truth Table/Functionality

The lpm_clshift Intel® FPGA IP acts like a barrel shifter. It contains entirely combinational logic.

Overflow occurs when the shifted result exceeds the precision of the result bus. For "LOGICAL" values, overflow occurs when any 1 has been shifted out. For "ARITHMETIC" values, overflow occurs when a significant digit is shifted into or past the sign bit. Underflow occurs when the shifted result contains no significant digits.

Operation of the LOGICAL shifter is illustrated in the following example, in which LPM_WIDTH = 4:

Inputs

Output

direction

distance[1..0]

data[3..0]

overflow

result[3..0]

underflow

X

0

dcba

0

dcba

0

0

1

dcba

d

cba0

0

0

2

dcba

d # c

ba00

0

0

3

dcba

d # c # b

a000

0

1

1

dcba

0

0dcb

!d & !c & !b & a

1

2

dcba

0

00dc

!d & !c & (b # a)

1

3

dcba

0

000d

!d & (c # b # a)

Operation of the ARITHMETIC shifter is illustrated in the following example, in which LPM_WIDTH = 4:

Inputs

Output

direction

distance[1..0]

data[3..0]

overflow

result[3..0]

underflow

X

0

dcba

0

dcba

0

0

1

0cba

c

cba0

0

0

1

1cba

!c

cba0

0

0

2

0cba

c # b

ba00

0

0

2

1cba

c! # b!

ba00

0

0

3

0cba

c # b # a

a000

0

0

3

1cba

!c # !b # !a

a000

0

1

1

0cba

0

00cb

!c & !b & a

1

1

1cba

0

11cb

c & b & !a

1

2

0cba

0

000c

!c & (b # a)

1

2

1cba

0

111c

c & (!b # !a)

1

3

0cba

0

0000

(c # b # a)

1

3

1cba

0

1111

(!c # !b # !a)

Operation of the ROTATE shifter is illustrated in the following example, in which LPM_WIDTH = 4:

Inputs

Output

direction

distance[1..0]

data[3..0]

result[3..0]

X

0

dcba

dcba

0

1

dcba

cbad

0

2

dcba

badc

0

3

dcba

adcb

1

1

dcba

adcb

1

2

dcba

badc

1

3

dcba

cbad