Altera Avalon Slave Interrupt

Gast #2116831
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
Gast #2117613
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
#2117962
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
Gast #2118323
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren