wat is aan dit stukje code verkeerd? (Verilog, quartus, cyclone II)

Introtje: ik ben bezig om een begin te maken voor het lezen van een CMOS camera (wat ik al werkend heb op een PIC24). Nu wil ik het dus een stapje verder doen en dit gaan doen d.m.v. een FPGA en de FPGA het inlezen + lookuptable + RLE werk te laten doen.

Hiervoor heb ik nodig: 3line buffers van ieder 8bytes x 640.
Geen probleem, heb ik werkend, quartus maakt er mooi een interface naar het interne ramblock.

Nu wilde ik even *een simpel logica ding toevoegen* want als ik statische data lever, dan optimized hij alles weg. Dus ik heb aan de rising edge van de clock een counter toegevoegd.

en deze gebruik ik als addr voor de linebuffers. So far so good.
Nu dacht ik van, hmm, (ik kom van het prgorammeren van C vandaan, vandaar dat ik dit probeerde) als ik nu eens elke linebuffer een ietwat andere addr geef, kijken wat er gebeurt.

Dus ik deed dit:

linebuffer lb0(/**/,counter+1,/**/);
linebuffer lb1(/**/,counter,/**/);
linebuffer lb2(/**/,counter-1,/**/);

Maar, nu geneert de compiler een stukje hardware van 8000LE's en gebruikt maar 1 RAM block voor linebuffer lb1.
als ik de +1 en -1 weghaal krijg ik dit niet. Heeft dit puur met mijn dommigheid te maken en dat ik gewoon eigelijk 2extra wires moet aanmaken welke standaard +1 en -1 t.o.v. counter zijn?
En zo ja, waarom en waarom maakt de compiler ding nog maar gebruik vsn 1ramblock ipv 3.?

Nog een vraagje, de ram-blocks zijn 8bits x 256.
Terwijl mijn data geheugen ding gedefinieerd is als:

reg	[7:0]	data [639:0];

Ik krijg hier geen warning over. Klopt het dat dan nog steeds alles goed gaat? of moet ik een eigen logica toevoegen dat als addr groter is dan, dat hij volgende ramblock moet gebruiken?