Hallo,

Ik probeer momenteel een eigen blok custom hardware te maken en deze aan een Nios II te knopen. Ik moet acht registers van 32 bit kunnen uitlezen. Dus de hardware zou acht geheugenplaatsen moeten innemen.

Nu zou ik het nogal vuil kunnen spelen en simpelweg acht 32bit brede PIO's kunnen nemen. Maar dat is nogal vies vind ik persoonlijk.

Liever had ik het gezien dat ik een eigen MM slave zou kunnen maken welke dan die acht plaatsen inneemt.

Nu weet ik ongeveer wel hoe die avalon slave er zou moeten uit zien, maar ik zou toch graag eens een simpel voorbeeld willen zien welke de avalon communicatie afhandeld.

Die slave interface werkt volgens mij als volgt, voor een read cycle:

zet de adres op de bus, maak de read en CS lijn hoog, wacht en na een klokpuls is de data op de readdata bus aanwezig, kan dit?

opgelet ! ik heb mij daar ook aan laten vangen.

wat je nodig hebt is een avalon MASTER !

de boel wordt bezien van buiten uit. een master is als de nios de baas moet spelen.
een slave is als de nios de slave moet zijn.

ik doe ook zoiets om gpios te sturen. gewoon memory mappen.
het simpelste is gewoon een 'generic master' toe te voegen.

klik op 'create new component'
er floept een nieuw venstertje open.
klik op 'Templates' bovenaan en selecteer avalon MASTER'.
het blok wordt aangemaakt.
pas de parameters aan .

Save en klaar.

er komt een gesplitste bus naar buiten ; data_out en data_in. een RD en een WR strobe alsook de addressbits. de decodering is al gedaan intern.

stel dat je base address 0x2000 is en je hebt 4 alocaties: alleen A0 en A1 komen naar buiten. de WR en RD zijn alleen actief als het volledige address 2000,2001,2002, en 2003 zijn.

dus alle masking is al gedaan. je hoeft alleen je eigen adressbits verder te splitsen.

kleef daar je logica aan en je bent vooruit.

ik heb het zo gedaan om 2 DPRAM's in te mappen. gewoon 2 blokken gemaakt van elk 256 adressen. daar extern twee dualport rams aan geknoopt. klaar.

het is dan gewoon kwestie om in de code voor de nios een variabele te definieren op dat addrerss.

ah. nog iets in de sopc bulder klik je dan wel best de code master poort af voor dat component. je laat alleen de data master poort van de nios dat component accessen. anders zit je daar met een 'dood' gat in je code memory.

[Bericht gewijzigd door free_electron op (12%)]

Free: bedankt voor het antwoord.Ik kan er veel mee doen, thx.

Maar er is iets tussen gekomen, ze willen een 2.4GHz link voor hun sensordata hebben op de unief. Moet zo klein mogelijk en zo. Heb er wel al een paar modules voor, dus buiten wat interface electronica is er niet ongelooflijk veel te doen (eerst wilden we een maken met een Maxim VCO, maar de ontvanger was wat te complex te realiseren, vooral met een scoop tot 100MHz :D)

Dus dat project ligt even op hold :'( Ik hoop die toch zo snel mogelijk af te hebben (vrijdag, of ergens begin volgende week), en dan kan ik terug aan de interface kaart beginnen. Dat project is ook wat geupdated: We gaan een bord maken met 16 kanalen (omdat de ontvangers in blokken van 16 zijn), en dan kunnen we modulair tot 64 gaan, is al 8x8 sensoren, voldoende voor het eerst)

Dus als die wireless link af is horen jullie me wel met nieuwe quartus/sopc/nios/general altera vragen ^^

Benk je zeker dat het een avalon Master is die ik moet toevoegen? Volgens mij is het toch wel degelijk een slave: een master heeft adres als output, clk als output staan. Ik wil toch dat de CPU deze bus bestuurt, en niet mijn eigen component??? Ook kan ik hem dan niet aan de nios hangen, en dat lukt bij een slave wel.

En als ik dan die component heb, waar kan ik dan de HDL files ervan vinden zodat ik de rest kan uitschrijven? of zou je een simpele datainterface maken en dan een extra blok en deze dan connecteren met de interface?

juist. je CPU stuurt toch de address lijnen aan ? dus je adress lijnen zijn outputs ...

die signalen die je daar ziet staan is wat er uit de nios naar BUITEN komt. daar knoop jij dus je eigen hardware aan vast.

ik heb mij daar ook laten aan vangen.

eenmaal je systeem in elkaar zit klik joe op generate.
na het nodige denkwerk van sopc builder ( kan rustig een half uur duren bij een groot systeem) komt daar een BDF file uit.

kwak die op je toplevel en knoop je bussen / draden vast aan je eigen hardware.

klaar.