Forum: FPGA, VHDL & Co. GPIO-Adressen


von Jens H. (jens-heyen)


Lesenswert?

Hallo Leute,

ich habe ein Virtex 5 FPGA-Board und darauf einen Leon3-Prozessor 
laufen.
Wie kann ich von meinem C-Programm auf die GPIOs zugreifen? Also z.b. 
einen Taster abfragen oder eine LED an/ausknipsen?
Die GPIOs müssen ja in irgendeiner Form durch das memory mapped i/o 
ansprechbar sein. Woher kriege ich den Adressbereich für die GPIOs und 
speziell die Adresse einzelner IOs?

Gruß,
Jens

von Matthias (Gast)


Lesenswert?

Hallo.

Ich hatte vor kurzem mit sowas ähnlichem (virtex4?) zu tun in der FH... 
wir haben eine IDE namens Plattform Studio verwendet und eine CPU 
(microblaze) wurde auch generiert. Ziemlich viele Sachen wurden einen da 
abgenommen. Wenn man einen eigenen IP-Core einfügen wollte, konnte man 
mit ein paar Mausklicks angeben wieviele user accessable registers man 
braucht. dann hat man das Tool einfach generieren lassen (Busanbindungen 
und so). Als nächstes hat man beginnen können in VHDL zu coden.

Die Addressen hat man bekommen durch einen Klick auf "Generate 
addresses", welches zum Vorschein kam, wenn man das Tab "Ports" 
anklickte. Das Ergebnis waren Basisaddressen und in meinem Fall war 
jedes Register 32bit, also 4 byte. zugegriffen wurde dann mit pointer 
auf die Addressen + Offset(also 0x...+n*4),zB.: (*((u32*) 0xC8200000))
sogar die C-Funktionen wurden generiert, basierten aber auf dem wie ich 
es vorhin beschrieb.

Um I/O-pins anzusprechen, musste man in den *.ucf und *.mpd(glaub mpd, 
aber auf jeden Fall mit m...) ein paar Dinge umschreiben und dann noch 
einige Klickis in der IDE machen. Falls Du auch mit Plattform Studio 
arbeitest, würde ich noch mal einen genaueren Blick drauf werfen und Dir 
besser helfen versuchen. Würde aber erst ab späten Nachmittag zeit 
haben.

LG

von Jens H. (jens-heyen)


Lesenswert?

Hi Matthias,

danke für deine Antwort. Ich glaube so langsam auch, dass ich mit dem 
microblaze ein einfacheres leben hätte ^^
Leider bin ich aber auf den Leon3 festgelegt :-/

Trotzdem danke für deine Mühe,
Gruß,
Jens

von Frank V. (scyx)


Lesenswert?

Ich kann gerade nur eine Aussage zum Leon2 treffen. Dieser hat 
PIO-Register (tatsächlich heissen sie so und nicht GPIO!) und diese sind 
der in der Doku mehr oder weniger gut dokumentiert. Es gibt eine Adresse 
an der man den Wert der PIOs abfragen kann und natürlich auch 
richtugn/verwendung setzen kann.
Bei all dem ist es äußerst hilfreich den von Gaisler angebotenen 
Softwarestack zu nutzen - GRMON ist das Zauberwort, dann kann man per 
UART/JTAG jede beliebige Adresse des LEON lesen oder schreiben.

mfg
 Frank

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.