vage Verilog constructie - DDR2 ram op 3C120 board

Ik probeer te begrijpen hoe de DDR2 interface van het Cyclone 3 Dev Board van altera te gebruiken. Ik heb hun voorbeeld design geopend, en hier kom ik het volgende tegen:


module cycloneIII_3c120_dev_niosII_standard(
...knip...
   ddr2_ck_n,
   ddr2_ck_p,
...knip...
);

Dit zijn de clock pins die uit die module komen denk ik voor de DDR ram. Nu zijn er op dat board 5 DDR ram modules, met 3 clk lijnen, 1 per 2 ddr devices.


  inout   [  2: 0] ddr2_ck_n;
  inout   [  2: 0] ddr2_ck_p;

Dat zijn dan die 3 clk lijnen, LVDS uitgevoerd...

maar dan doen ze dit:


cycloneIII_3c120_dev_niosII_standard_sopc this_cycloneIII_3c120_dev_niosII_standard_SOPC
(
...knip..
   .mem_clk_n_to_and_from_the_altmemddr(ddr2_ck_n),
   .mem_clk_to_and_from_the_altmemddr(ddr2_ck_p),
...knip...
);

Zoals ik het begrijp hangen ze een enkele pin aan een bus van 3 pinnen. Nu heb ik dat gewoon nagedaan in de schematic editor in quartus, en ik krijg een error dat de ene pin de andere drived, en dat dat dus niet kan... Mijn vraag: wat wordt er hier gedaan, en hoe kan ik dat dupliceren in de schematic editor?

dat onderste blok code is een instantiering . daarbij worden dan named argumenten gebruikt

de module cycloneIII_3c120_dev_niosII_standard_sopc wordt geinstantieerd en krijgt de naam
this_cycloneIII_3c120_dev_niosII_standard_SOPC

dat puntje voor de naam van signalen geeft aan dat de synthesizer die naam moet gaan zoeken in de moduledecriptie ( van cycloneIII_3c120_dev_niosII_standard_sopc ) en er het signaal aan toekenne wat tussen haakjes staat.

ga die module ( cycloneIII_3c120_dev_niosII_standard_sopc ) opzoeken en open die. daarin zal je dan de splitter zien zitten.

De uitgang van die module heeft slechts 1 clock uitgang, die komt van de DDR2 High performance megacore, welke aan een nios enzo geknoopt is in SOPC builder. Dat staat toch ook in de eerste code blok (ik zie daar toch geen busbreedte bij staan, of moet dat niet in verilog?)

Maar ik moet dat dus verbinden met meerdere pins op de FPGA... En dat lukt niet als ik die inout pinnen gewoon aan elkaar hang, wat ook te begrijpen is.

Dat is nu iets wat me sterk tegenvalt bij altera... Over dat bord is heel weinig te vinden, en er is geen voorbeeld waar de volledige ram in SOPC builder aangesloten wordt, en ook geen voorbeeld waar de ethernet gebruikt wordt... Da's nu echt lastig.

En dan ben ik ook overgeschakelt op de nieuwe toolset (van 7.1 naar 8), en de oude toolset werkt niet meer (wou nog eens een oud project in de flash stoppen, en dat ging nt zo goed, ook niet met de version switcher van Altera. Moest dus wat vuile trucken uithalen, dat ben ik niet gewoon van Altera...)

Twas weer leuk opt werk :) Er heeft niet toevallig iemand een reference design met de 256MByte ram, flash en ethernet?

der gebeuren waarchijnlijk nog bepaalde manipulaties in de sopc builder.
die blokken zijn ge-encrypteerd. je kan die gebruiken in combinatie met de builder , maar niet als standalone blok. ze willen niet dat je hun ip blok jat en gaat gebruiken in combinatie met andere dingen ....

die code die je ziet moet nog door ene preprocessor gheaald worden ... das maar halve verilog.

Mja,

Maar het moet toch op een of andere manier mogelijk zijn om de DDR2 megacore, waarvoor ik een licentie heb, te koppelen aan de DDR2 ram die op het gekochte altera board zit... Ze geven een reference Quartus project om 2 vd 5 chips aan elkaar te koppelen, maar niet de 5.

De code die ik gepost heb komt uit de top level entity van hun voorbeeld ( standard nios II design voor het 3C120 development board). Het is dus geen output van SOPC builder, het instantieert enkel een SOPC builder blok en hangt dat aan de juiste pinnen.

Het is gewoon jammer dat ik me moet bezighouden met het aan de praat krijgen van die RAM. Ik heb speciaal voor altera boards gekozen omdat ik met het vorige (Nios II Cyclone II edition) hele goede ervaringen gehad heb. Dus geven we iets meer uit aan een bord dat van Altera is (eigenlijk 4 boards), en nu deze zever... Da's gewoon verspilde tijd.

probeer stomweg eens om meerder controllers in je sopc builder project te instantieren.
het kan zijn dat je die control lijnen inderdaad niet kan splitsen tussen meer dan 2 memories. waarschijnlijk speelt de refresh cycle een rol in gans die affaire.
het kan zijn dat de ddr2 controller slechts 2 fysieke rams aan kan.

der zal wel iets zijn waardoor het niet zomaar kan.

post de vraag eens op het altera nios forum. misschien weten ze er daar meer van.
ik loop altijd met een grote boog om sdram heen... veel te veel gemodder

[Bericht gewijzigd door free_electron op (17%)]

Er is blijkbaar een instelling waardoor je meerdere clk paren naar buiten kan brengen. Dus dat probleem is opgelost.

Ik moet wel de SDRAM gebruiken, omdat ik echt geen eigen bord wil ontwikkelen en we al gauw 256Mbyte nodig heb :)

Wat gaat er gebeuren als ik meerdere controllers instantieer in SOPC builder? Ga ik die dan vanuit men Nios als 1 doorlopend geheugen gebruiken? (moet je niet zeggen waar de stack en de heap zich bevindt? Ik zou die over de volledige 256MByte willen spreiden)

[Bericht gewijzigd door stecj366 op (36%)]

das kwestie van ze gewoon na elkaar te mappen in de sopc builder. de cntroller kan maar een beperkt aantal chips rechtstreeks sturen. meerdere controllers en tis opgelost. der is ergens ook een mechanisme om de refresh te synchroniseren. op die manier win je tijd. de verschillende banken refreshen op hetzelfde moment.

ok, ik ga daar eens naar kijken, zodra ik die F#*&@N ethernet aan de praat heb (Altera TSE met marvell 88E1111, een nachtmerrie...)

Thx