Servus, ich habe vor längerer Zeit einen VHDL Code zusammengetippt mit dem sich ein FPGA von einem A/D-Wandler parallel aquirierte Daten einholen kann. Diesen VHDL Prozess nutze ich seit dem in diversen FPGA-Entwicklungen. Nun will ich diesen VDHL-Code an die Avalon-Bridge eines NIOS2 "hängen". Dazu erlaubt es der Component Editor im SOPC Builder aus einer HDL-Datei eine SOPC-Komponente zu erstellen, die man dann in das SOPC-Projekt einbinden kann. Hat diesbezüglich jemand hier bereits Erfahrung mit der HDL Instanziierung gemacht? Auf der Altera-Seite bekomme ich nur spärliche und ungenügende Informationen, mit denen ich irgendwie nicht weiter komme. Danke für hilfreiche Tips.
siehe hier: Beitrag "Re: Avalon Master" Das sollte funktionieren. Avalon-Slave ist sau-einfach. Dass bei Altera nur spärliche Informationen zu finden sind, glaube ich erstmal nicht ;-) Grüße, Kest
Ja ich bin selbst erstaunt. ich arbeite ja schon seit Jahren mit den Produkten von Altera, auch meine Diplomarbeit bezieht sich da drauf. Hatte bis dato auch nie Probleme mich selbst durch die Dokumentationen durchzuarbeiten. nur bei diesem Thema will's ncht so recht laufen. :) Dennoch danke für die Antwort :)
Die Avalon Busanbindung ist wirklich denkbar einfach. Von Vorteil ist es, wenn man sich an die Namensgebung hält die im Quartus 2 Handbuch vorgeschlagen werden. Dort im Band "Volume 4: SOPC Builder" nach der Überschrift "Naming Signals for Automatic Type and Interface Recognition" suchen. Dann werden die Signale auch gleich richtig vom SOPC-Builder erkannt. Allerdings gibt es doch ein paar kleine Stolperfallen auf die man achten sollte: - Beim Avalon Master sind die Adressen immer Byteadressen. - Beim Avalon Slave sind die Adressen immer an die Datenbusbreite gekoppelt. Bei 32 Bit Datenbus sind es also 4-Byte-Adressen. Da kann man leicht auf die Nase fallen.
Thema nochmal warmkoch Nach dem Durcharbeiten des "Avalon Interface Specification"-Skriptes habe ich einen guten Einblick, von der Hardware-Seite aus, in das Einbinden von HDL-Komponenten erhalten. Von dem einen gelösten Problem komme ich zum nächsten. Für die Software-Ansteuerung der Komponenten habe ich versucht mich mit dem "NIOS2 Software Developer's Handbook" schlau zu machen. Natürlich habe ich schon die HAL API Reference gefunden, da ich allerdings nciht täglich Umgang mit C/C++ habe fällt es mir schwer aus den Befehlen und deren umsetzung schlau zu werden. Ich bevorzuge für sowas Beispiele. Auch davon habe ich im Netz einiges gefunden. Diese "Beispiel-Projekte" sind aber wiederum so beladen mit anderem Zeugs dass sich mein Problem dadurch nicht besonders gelöst hat. Ich habe zum Testen ein einfaches D-Flipp in VHDL hergerichtet, das ein eingelesenes Byte über 8 LEDs ausgeben soll. Dieses wurde erfolgreich im SOPC Builder eingebunden und erscheint auch in meiner system.h - Datei folgendermaßen: #define NEW_COMPONENT_0_NAME "/dev/new_component_0" #define NEW_COMPONENT_0_TYPE "new_component" #define NEW_COMPONENT_0_BASE 0x00011028 #define NEW_COMPONENT_0_SPAN 1 #define NEW_COMPONENT_0_TERMINATED_PORTS "" #define ALT_MODULE_CLASS_new_component_0 new_component Wie sieht nun die Übergabe eines Bytes an diese Komponente aus? Kann mir das jmd in aller Einfachheit mal posten? Ich habe auch schon ein wenig das Gefühl, dass ich da den Wald vor lauter Bäume nciht mehr sehe :) Bin mir sicher dass es total einfach geht, nur stehe ich halt z.Z. total aufm Schlauch. Danke für Antworten
ganz einfach: IOWR_8DIRECT(NEW_COMPONENT_0_BASE, 0, Byte); An die Adresse 0 Deiner Komponente wird ein byte geschrieben. Dabei ist zu beachten, dass wenn Du in Deiner Komponente z.B. Adresse 1 haben möchtest, müsstest Du: IOWR_8DIRECT(NEW_COMPONENT_0_BASE, 4, Byte); schreiben. Also in der Avalon-Slave komponente sind die Word-Adressen, vom NIOS aus muss man Byte-Adresse verwenden. Grüße, Kest
Danke Kest für die Antwort, dieser Makro-Befehl ist bis jetzt ein keinem Manual zu finden gewesen. Ich lese da nur was von fopen(), open(), write(), read() close() etc. K.A. wie ich jetzt da drauf hätte kommen sollen ;) Das Ganze ist schon ein wenig verwirrend. Grüße, Flo
dieser Makro-Befehl ist bis jetzt ein keinem Manual zu finden gewesen. Ich lese da nur was von fopen(), open(), write(), read() close() etc. K.A. wie ich jetzt da drauf hätte kommen sollen ;) Das Ganze ist schon ein wenig verwirrend. Steht auf Seite 75 in dem von dir gelesenen "NIOS2 Software Developer's Handbook". Verwirrt ?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.