www.mikrocontroller.net

Forum: FPGA, VHDL & Co. Altera Avalon Slave Interrupt


Autor: Jens (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guten morgen,
ich habe die Aufgabe einen bestehenden Bildverarbeitungs-Core in die 
Avalon Switch Fabric des Nios II einzubauen. Soweit funktioniert auch 
alles, nur möchte ich nun den Avalon Slave einen Interrupt erzeugen 
lassen und genau dieser Punkt bereitet mit Probleme.

Der Avalon Slave erzeugt einen über 2 (zu kurz ?) Pulse andauernden IRQ 
puls. Dieser wurde als 'interrupt sender' im Component Editor deklariert 
und als 'associated addressable interface' habe ich den Namen meines 
Cores eingetragen. Wie gehe ich nun weiter vor ? Braucht mein Avalon 
Slave ein dediziertes IRQ-Bit Registers, welches ich in der Interrupt 
Routine zurücksetzte ? Vielleicht kennt sich ja jemand diesbezüglich aus 
!

Danke,
Jens

Autor: Duke Scarring (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wo ist denn der Interrupt angeschlossen?
Außerdem sehe ich nicht, wo momentan Dein Problem liegt. Was 
funktioniert denn nicht?

Duke

Autor: Jens (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Interrupt geht direkt an den Nios II (e). Meine ISR wird aufgerufen, 
nur jedoch nicht mehr verlassen. Da sich mein Interrupt Signal (vom 
Slave kommend) ja autmatisch zurücksetzt, habe ich kein spezielles 
Register zum Deaktivieren des Interrupts (aus der ISR heraus) vorgesehen 
(wie dies z.B. in der Altera PIO Beispielen gemacht wird).
Gruss,
Jens

Autor: Harald Flügel (hfl)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein Auszug aus der Avalon-MM Spezifikation:

An interrupt sender drives a single interrupt signal to an interrupt 
receiver. The timing of the irq signal must be synchronous to the rising 
edge of its associated clock, but has no relationship to any transfer on 
any other interface. irq must be asserted until the interrupt has been 
acknowledged on the associated Avalon-MM slave interface. An Avalon-MM 
slave can only include one interrupt sender.
The interrupt receiver typically determines how to respond to the event 
by reading an interrupt status register from an Avalon-MM slave 
interface. The mechanism used to acknowledge an interrupt is component 
specific.

Damit ist wohl alles gesagt. Die Komponente muss den IRQ aktiv setzen, 
und in der ISR muss der IRQ per Programm zurückgesetzt werden. Im 
übrigen: Achte bitte auf die Taktdomäne!

Grüße,
Harald

Autor: Duke Scarring (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jens schrieb:
> kein spezielles
> Register zum Deaktivieren des Interrupts (aus der ISR heraus) vorgesehen
> (wie dies z.B. in der Altera PIO Beispielen gemacht wird

Ok, damit und mit der Erklärung von Harald habe ich es verstanden. Im 
Prinzip brauchst Du noch einen kleinen Interrupt-Controller.

Duke

Autor: Jens (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hey vielen Dank,
funktioniert bestens! Gruss,
Jens

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.