Intel® Quartus® Prime Software
Intel® Quartus® Prime Design Software, Design Entry, Synthesis, Simulation, Verification, Timing Analysis, System Design (Platform Designer, formerly Qsys)
17261 Discussions

How are shift registers implemented.

Altera_Forum
Honored Contributor II
1,636 Views

The Altera documents recommend using shift registers for convolution image processing tasks like in this example: https://www.altera.com/support/support-resources/design-examples/design-software/opencl/sobel-filter.html 

 

What surprised me a bit is how little the logic utilization, and usage of any other resource in the quartus report, increases with the size of the shift register. I've used shift registers that hold around 6000 values. As long as I only access a few of them, the resource usage increases very little. The thing is, it still needs to hold all the values even if I only use the last one, as at some point any given value will be shifted into the last position. 

 

I'm wondering how these shift registers are implemented in the hardware so that it can hold 6000 values with ease. Is there some special primitive for FIFOs in the FPGA. If yes, why is the quartus report not showing it?
0 Kudos
2 Replies
Altera_Forum
Honored Contributor II
504 Views

Perhaps it's using RAM-based shift register: 

https://www.altera.com/literature/ug/ug_shift_register_ram_based.pdf
0 Kudos
Altera_Forum
Honored Contributor II
504 Views

Thanks, that could be it. I'm still surprised at the low block ram usage though.

0 Kudos
Reply