mikrocontroller.net

Forum: FPGA, VHDL & Co. Component Editor SOPC Builder


Autor: Florian G. (badscher)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Kest (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Florian G. (badscher)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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 :)

Autor: Matthias G. (mgottke)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Florian G. (badscher)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Kest (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Florian G. (badscher)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: ben (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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 ?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.