Embedded Memory User Guide: Agilex™ 5 FPGAs and SoCs

ID 813901
Date 4/15/2025
Public
Document Table of Contents

4.3. Shift Register (RAM-based) FPGA IP

The Shift Register (RAM-based) FPGA IP contains features not found in a conventional shift register. Traditional shift registers implemented with standard flipflops use many logic cells for large shift registers. The Shift Register (RAM-based) FPGA IP is implemented in the device memory blocks, saving logic cells and routing resources. In a complicated design such as a digital signal processing (DSP) application that requires local data storage, it is more efficient to implement an Shift Register (RAM-based) FPGA IP as the shift register.

The Shift Register (RAM-based) FPGA IP is a parameterized shift register with taps. The taps provide data outputs from the shift register at certain points in the shift register chain. You can add additional logic that uses the output from these taps for further applications. The output tap feature of the IP is useful for applications such as the Linear Feedback Shift Register (LFSR) and Finite Impulse Response (FIR) filters.

General Description

Use the IP Catalog (Tools > IP Catalog) and parameter editor to easily configure the IP. The Shift Register (RAM-based) FPGA IP is implemented in the embedded memory block with simple dual-port RAM. You can select the RAM block type according to the capacity you require. The capacity that is represented by the width and the depth of the memory block depends on the TAP_DISTANCE, NUMBER_OF_TAPS, and WIDTH parameters of the Shift Register (RAM-based) FPGA IP.

For the features and capacities of the typical memory block, refer to the chapter of your device handbook that contains information about TriMatrix embedded memory blocks.

The Shift Register (RAM-based) FPGA IP supports single-bit and multiple-bit data shifting at one clock cycle, depending on the width of the shiftin and shiftout ports. For example, if the shiftin and shiftout ports are single-bit data, only one bit is shifted per clock cycle. If the shiftin and shiftout ports are multiple-bit data, such as one-word data (8-bit), the whole word is shifted per clock cycle.

The IP also supports output taps at certain points in the shift register chain, but the tap points must be evenly spaced. You set the space between taps in the parameter editor.

Figure (a) in Tapping Data at Certain Points of the Shift Register Chain shows a traditional 12-word-depth shift register. Figure (b) shows how the data in the shift register chain are being tapped at even spaces (1st, 4th, 7th, and 10th) at the output taps of the Shift Register (RAM-based) FPGA IP.

Figure 43. Tapping Data at Certain Points of the Shift Register Chain
Note:
  1. The Shift Register (RAM-based) FPGA IP depicted here has TAP_DISTANCE = 3 and NUMBER_OF_TAPS = 4.
  2. The tapped data is output to taps[31..0]. Note that taps[31..0] is a 32-bit output because it taps four words at one time. The first word from the MSB of the taps (taps[31..24]) represents the first data and is followed by the 4th data, 7th data, and 10th data.
  3. The shiftout[7..0] word is equivalent to taps[31..24].