Axcelerator FIFO

Features

Family Support

Axcelerator

Description

Axcelerator provides dedicated blocks of FIFO. They are actually hardwired using the RAM blocks plus some control logic. Each FIFO block has a read port and a write port. Both ports are configurable (to the same size) to any size from 4Kx1 to 128x36; thereby, allowing built-in bus width conversion (see SRAM Port Aspect Ratio table below). Each port is fully synchronous. The FIFO block offers programmable Almost Empty and Almost Full flags as well as Empty and Full flags. The FIFO block may be reset to the empty state.

SRAM Port Aspect Ratio

Width

Depth

ADDR Bus

Data Bus

1

4096

ADDR[11:0]

DATA[0]

2

2048

ADDR[10:0]

DATA[1:0]

4

1024

ADDR[9:0]

DATA[3:0]

9

512

ADDR[8:0]

DATA[8:0]

18

256

ADDR[7:0]

DATA[17:0]

36

128

ADDR[6:0]

DATA[35:0]

Cascading Blocks

Blocks can be cascaded to create larger sizes, up to the capacity of one whole column of RAM blocks. SmartGen performs all the necessary cascading for achieving the desired configuration.

The maximum WIDTH (word length) value is 65,536. The maximum DEPTH (number of words) value is 576.

The write enable (WE) and read enable (RE) signals are active high or low request signals for writing and reading, respectively; you may choose not to use them.

The RCLK and WCLK pins have independent polarity selection.

Port Description

Name

Size

Type

Req/Opt

Function

Data

Width

Input

Req.

Data Port

WE

1

Input

Opt.

Write Enable

WClock

1

Input

Req.

Write Clock

Q

Width

Output

Req.

Q Port

RE

1

Input

Opt.

Read Enable

RClock

1

Input

Req.

Read Clock

Full

1

Output

Req.

Full Flag

Empty

1

Output

Req.

Empty Flag

Afval

1-8

Input

Opt.

Almost Full, Dynamically programmable

Aeval

1-8

Input

Opt.

Almost Empty, Dynamically programmable

AFull

1-8

Output

Opt.

Almost Full Flag

AEmpty

1-8

Output

Opt.

Almost Empty Flag

Parameter Description

Parameter

Value

Function

WIDTH

Width

Word length of Data, Q

DEPTH

Depth

FIFO Depth

WE_POLARITY

1 0 2

Write Enable Polarity

RE_POLARITY

1 0 2

Read Enable Polarity

WCLK_EDGE

RISE FALL

Write Clock Edge

RCLK_EDGE

RISE FALL

Read Clock Edge

AEVAL

Almost Empty Value

Almost Empty Flag

AFVAL

Almost Full Value

Almost Full Flag

DEVICE

75 150 300 600 1000
(May change)

Target Device, to determine blocks available for cascading

Implementation Parameters

Parameter

Value

Description

LPMTYPE

LPM_FIFO

Generic Dual-Port FIFO Category

LPM_HINT

STATIC

Static AF/AE Flags

DYNAMIC

Dynamic AF/AE Flags

NOFLAGS

No AF/AE Flags

Parameter Rules

Device

Parameter rules

Axcelerator

WWIDTH

AEVAL/AFVAL UNITS

000

28-W

001

010

011

100

101

11x

FIFO Flag Usage

In the Axcelerator FIFO, the AFVAL and AEVAL signals are each eight bits. The step size of the signal varies based on the aspect ratio to which the FIFO blocks are configured.

For example, if the FIFO is configured in the 128X36 aspect ratio, the step size is eight. That means, if a 00000011 is programmed on the AEVAL, the almost empty flag asserts after 3*8 = 24 words are written. The step sizes can be calculated from the above table for other configurations.

SmartGen automatically adjusts the AF and AE thresholds specified by changing them to the nearest step size. A message is also printed in the log file.

Since eight is the least step size for AFVAL and AEVAL, static flag configuration is not supported for widths below eight.

When SmartGen is used to configure the FIFO to a depth that is less than the total available depth, FULL flag will not assert at the depth specified in SmartGen. For example, if FIFO is configured to a 250X18, then SmartGen provides a total depth of 256, which is the closest size. FULL flag will assert at 256. SmartGen prints a message in the log file indicating what configuration it is providing, taking all these details into consideration.

When FIFOs are cascaded deep, the data gets written to multiple FIFO blocks. The FIFO Error flags (AFULL_ERR, AEMPTY_ERR, FULL_ERR, EMPTY_ERR) indicate if one or more of the FIFOs are in a different state than expected. You can ignore them if you wish. These ports get generated only if you are cascading FIFOs wide.