

However, we shall see later in this article that the Lattice device can pack wider shift registers into block RAM. The Lattice iCE40 FPGA, which I used in this example, doesn’t have an alternative option for packing 1-bit shift register, so it’s implemented entirely in 128 FFs. Intel uses a technology that they call ALTSHIFT_TAPS for implementing RAM-based shift registers. In the Intel FPGA, adaptive logic modules (ALMs) and one block RAM (BRAM) is used instead of flip-flops. Lookup tables (LUTs) used in such a way are counted as “LUTRAM” in the Vivado resource usage report. Instead of using expensive FFs, the synthesis tools have used special built-in features of the logic blocks.
Synplify pro component name how to#
Read about how to create a ring buffer FIFO in block RAM to learn about such a solution that’s not a shift register. This article will only consider the shift register, even though there exist data structures that use fewer resources for larger FIFOs. To understand the basics of the shift register, I recommend viewing the VHDL tutorial about the std_logic_vector.

Every time a new element enters the queue, it shifts the existing ones one place further away from the input. You can dramatically reduce the number of consumed resources by choosing the right shift register implementation for your needs and FPGA architecture.Ī shift register implements a FIFO of fixed length. There are many ways to create a shift register in VHDL, though not all of them are equal.
