Nios II interrupt unterbrechen

OP #4503487
Lesenswert?

Hallo,

in der Quartus Version 9.0 war es noch möglich das ein Interrupt einen 
anderen Interrupt mit einer niedrigeren Prioriotät 
unterbricht(alt_irq_interruptible, alt_irq_non_interruptible). Bei 
Versio 12.0 ist dies nicht mehr möglich. Warum nicht und wie kann ich 
das jetzt bewerkstelligen?

Habt ihr da eine Idee.

Gruß Andreas
Gast #4504169
Lesenswert?

Derzeit bekomme ich sie nicht kürzer.

Das Problem ist, dass während des Interrupts Zeichen über die RS232 
kommen. Die können dann nicht verarbeitet werden und dadurch verloren 
gehen. Ich habe schon daran gedacht die RS232 auf DMA um zu stellen. Was 
hältst du davon?
Gast #4504943
Lesenswert?

Andreas Müller schrieb:
> Oder meinst du
> einen Fifo im VHDL?
Ja, denn ein SW-FIFO müsste per IRQ-Routine
gefüllt werden, und das ist ja gerade Dein
Problem. Ich kenne jetzt nicht Deine QSYS-IP
zur UART-Behandlung, schau mal in den zugeh.
Docs nach, evtl. lässt sich da eine FIFO
aktivieren bzw. die Anz. Elemente einstellen.

Btw.: Q9.0 hat SOPC, Q11? und höher Qsys, d.h.
Du hast andere IRQ-Komponenten. Liess Dir mal
die Docs zu IIC und VIC durch, evtl. findest Du
da eine bessere Lösung.
Gast #4512616
Lesenswert?

Habe mal kurz in die Docs geschaut: Leider
besitzt der Std.UART keinen internen FIFO,
was die Sache wesentlich komplizierter macht.

Leider ist es mit OnChip-FIFO nicht ganz so
einfach. Du bräuchtest neben UART und FIFO
auch noch eine Komponente, die RX-Daten
aus dem UART ins FIFO schreibt, dazu noch
die UART-Register wrappt/kappselt. Ob's da
eine fertige Komponente gibt weiss ich jetzt
nicht.

Bevor Du Dich da reinsteigest, versuch nochmal
den Weg über den VectorIrqController. Der
reagiert auf Irqs wesentlich schneller.
Und bei 115200 Baud hast Du 10KBytes Daten,
d.h max. 10.000 IRQs. Bei 100MHz-Nios sollte
das machbar sein.
Gast #4564276
Lesenswert?

Andreas M. schrieb:
> Beim einschalten des Gerätes sendet der
> UART das Zeichen "~" einfach raus. Warum? Habt ihr da eine Idee?
Mal mit dem Oszi geschaut, was da auf der Leitung los ist?
Eine Tilde ist im ASCII-Code 0x7E und das sieht binär so aus: 0b01111110
Im Anhang ist ein Bildchen, wie das dann mit Start- und Stoppbit auf der 
Leitung aussieht.

Da beim Einschalten die FPGA-Konfiguration erst geladen wird, kann es - 
unbeabsichtigt - zu einem solchen Signal kommen.
Abhilfe schafft hier evtl. ein externer Pull-Up oder eine veränderte 
Pin-Konfiguration.

Duke
Angehängte Dateien:

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