--- Quote Start ---
Think about how the shift register is implemented in an M9K block.
No data is moved, the addresses of the memory locations change instead.
In it simplest form this means that you can only see two delayed values (there are 2 read ports).
More read ports can only be generated by chaining or replicating the shift register.
--- Quote End ---
That's perfect dsl but why this isn't being sinthesised as a m9k shift register? It's set to recognize shift registers in the Quartus II settings
if sync = '1' then
freq_vector((5*16)-1) <= freq_in;
for i in 0 to ((5*16)-2) loop
freq_vector(i) <= freq_vector(i+1);
end loop;
end if;