LabVIEWForum.de
IRQ wird überhaupt bestätigt? - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Module (/Forum-LabVIEW-Module)
+---- Forum: LabVIEW FPGA (/Forum-LabVIEW-FPGA)
+---- Thema: IRQ wird überhaupt bestätigt? (/Thread-IRQ-wird-ueberhaupt-bestaetigt)

Seiten: 1 2 3


IRQ wird überhaupt bestätigt? - akr74000 - 05.04.2014 14:12

hallo LV-Freunde,

kann jemand mir helfen? ich will nur wissen, wann die IRQ auftritt die 3 Bilder sind nützlich. Read/write laufen auf dem cRio und fpga auf dem fpga.
[attachment=49238][attachment=49239][attachment=49240]
für eine Antwort wäre ich sehr dankbar.
gruß


RE: IRQ wird überhaupt bestätigt? - cb - 05.04.2014 16:31

Bahn

ein IRQ wird immer vom FPGA-VI gesendet und vom RT-VI bestätigt.
Man kann den IRQ auch dann auf dem RT-VI bestätigen wenn das FPGA-VI gar nicht auf eine Bestätigung wartet, das stört nicht, aber wenn das FPGA-VI auf eine Bestätigung wartet, dann MUSS man nach dem Eintreffen eines IRQs dieser auch vom RT-VI bestätigt werden, sonst hängt das FPGA-VI in einer endlos-Schleife und schickt keine weiteren IRQs mehr ...

Grüße
cb


RE: IRQ wird überhaupt bestätigt? - akr74000 - 12.04.2014 21:02

vielen Dank cb für diese Informationen.
gruß
akr74000
Guten Tag LV-Freunde,

ich habe noch eine zweite Frage, wie wird das letztes Bild (write-vi) theoretisch funktionieren? und warum wurde 2 fifos benutzt?
Danke im voraus
Gruß
akr74000


RE: IRQ wird überhaupt bestätigt? - cb - 13.04.2014 07:35

(12.04.2014 21:02 )akr74000 schrieb:  ich habe noch eine zweite Frage, wie wird das letztes Bild (write-vi) theoretisch funktionieren? und warum wurde 2 fifos benutzt?
Danke im voraus

vermutlich hat der Entwickler des FPGA-VIs eine Art State-Machine programmiert und er benutzt die 2 verschiedenen IRQs um festzulegen in welchem State das FPGA-VI ist


RE: IRQ wird überhaupt bestätigt? - akr74000 - 13.04.2014 16:55

(13.04.2014 07:35 )cb schrieb:  
(12.04.2014 21:02 )akr74000 schrieb:  ich habe noch eine zweite Frage, wie wird das letztes Bild (write-vi) theoretisch funktionieren? und warum wurde 2 fifos benutzt?
Danke im voraus

vermutlich hat der Entwickler des FPGA-VIs eine Art State-Machine programmiert und er benutzt die 2 verschiedenen IRQs um festzulegen in welchem State das FPGA-VI ist

hat nicht mit Fifo Kontrolle zu tun? Ich meinte, die 2 Fifos sind da, um die verbleibenden übertragenen Bytes zu überprüfen. das zweite Fifo wird kontrollieren, ob alle Byte erfolgreich von dem ersten fifo übertragen sind?
Oder liege ich total daneben Wink?
Danke cb für die Antwort nochmal.
Gruß


RE: IRQ wird überhaupt bestätigt? - cb - 14.04.2014 06:53

(13.04.2014 16:55 )akr74000 schrieb:  
(13.04.2014 07:35 )cb schrieb:  
(12.04.2014 21:02 )akr74000 schrieb:  ich habe noch eine zweite Frage, wie wird das letztes Bild (write-vi) theoretisch funktionieren? und warum wurde 2 fifos benutzt?
Danke im voraus

vermutlich hat der Entwickler des FPGA-VIs eine Art State-Machine programmiert und er benutzt die 2 verschiedenen IRQs um festzulegen in welchem State das FPGA-VI ist

hat nicht mit Fifo Kontrolle zu tun? Ich meinte, die 2 Fifos sind da, um die verbleibenden übertragenen Bytes zu überprüfen. das zweite Fifo wird kontrollieren, ob alle Byte erfolgreich von dem ersten fifo übertragen sind?
Oder liege ich total daneben Wink?
Danke cb für die Antwort nochmal.
Gruß

ja, sicher hat das was mit der Kontrolle der des FIFOs zu tun. Wenn ich jetzt raten müsste dann würde ich darauf tippen, dass das FPGA-VI (in einer Art State-Machine) bei leerem FIFO den IRQ 1 setzt der acknowledged werden muss, damit das VI weiter läuft. Bevor er den IRQ bestätigt schreibt er was in den Puffer, damit der auch voll ist wenn er durch das Bestätigen des IRQs "losgelassen" wird.

Ich vermute das FPGA-VI liest mit einer bestimmten "Sample-Rate" die Daten aus dem FIFO und macht irgendwas und irgendwann ist der FIFO wieder leer und schickt einen IRQ. Der wird aber nicht bestätigt => das FPGA-VI "hängt" beim IRQ. Dann will er vermutlich noch prüfen ob der FIFO auch wirklich leer ist, was aber meiner Ansicht nach Quatsch ist, weil er das ja höchstwahrscheinlich schon so programmiert hat dass der IRQ erst geschickt wird wenn der FIFO leer ist. Das ist also IMHO doppelt gemoppelt ...

Um die Glaskugel noch etwas mehr zu strapazieren: das ganze könnte eine Funktion sein um eine "arbitrary waveform" mit einem festgelegten Sample-Count auszugeben, die Synchronisierung mit dem RT-VI läuft über den IRQ. Die IRQ-Funktion im FPGA-VI wird IMHO dabei ein wenig missbraucht in dem er den Handshake "blind" absetzt ohne vorher tatsächlich auf den IRQ gewartet zu haben, müsste aber eigentlich funktionieren. Ich würd's aber nicht so machen - ich hätte da stilistische Bedenken Wink Big Grin

viele Grüße
cb


RE: IRQ wird überhaupt bestätigt? - akr74000 - 14.04.2014 20:22

hallo cb,

es war alles hilfreich, kannst du bitte einen blick auf FPGA Bild und einen anderen auf letztes Bild, das IRQ1 wurde gesetzt, nach FIFO Funktion wurde das IRQ1 bestätigt, was ich nicht verstanden haben , warum ist die Bestätigung nachdem ersten FIFO und nicht am Ende ?
wenn ich denke, kann man ohne IRQ synchronisieren und zwar durch DMA-FIFO.
Ich füge ein bild für das RT-VI ein, ich denke ist nötig.

vielen Dank
gruss


RE: IRQ wird überhaupt bestätigt? - jg - 14.04.2014 22:20

(14.04.2014 20:22 )akr74000 schrieb:  Ich füge ein bild für das RT-VI ein, ich denke ist nötig.
Noch besser wäre ein VI-Upload der VIs. Es fehlen in den Screenshot essentielle Teile für eine exakte Antwort.

Gruß, Jens


RE: IRQ wird überhaupt bestätigt? - cb - 15.04.2014 06:24

(14.04.2014 20:22 )akr74000 schrieb:  wenn ich denke, kann man ohne IRQ synchronisieren und zwar durch DMA-FIFO.

man kann ohne IRQ synchronisieren, aber dann muss man den FIFO Status pollen und das erzeugt viel CPU-Last, deswegen benutzt man eigentlich immer einen IRQ um den RT-VI zu signalisieren, dass es neue Daten in den FIFO schieben soll oder dass der FIFO leer ist.


RE: IRQ wird überhaupt bestätigt? - cb - 15.04.2014 07:44

ok, ich hab mir dann doch nochmal das 1. Bild (FPGA-VI-Source-Code) angeschaut.

Es ist genau so wie ich in meinem Beitrag #6 beschrieben habe. Im FPGA ist eine State-Machine, zumindest kann ich den State "write" sehen. Dieser State versucht eine festgelegte Anzahl von Bytes aus dem Puffer zu lesen und in eine andere Node zu schieben. Ich kann nicht erkennen was das für eine ist, aber ich vermute mal RS323 oder RS485. Wenn der FIFO leer ist, dann setzt er das "Timed Out" flag und geht weiter zum IRQ, der bestätigt werden muss.

Beim ersten Durchlauf der Schleife passiert folgendes: der FIFO ist leer, die For-Schleife geht nach dem ersten FIFO-Read in den Timeout, läuft für die eingestellte Anzahl Bytes - 1 ohne zu lesen und zu schreiben und geht anschließend zum IRQ-Wait. Dort wartet das FPGA-VI bis der IRQ-Ack kommt.

Wenn dann vom RT-VI der FIFO befüllt wird und der IRQ-Ack gesetzt wird startet die While-Loop die nächste Iteration und schreibt die Bytes aus dem FIFO auf den Port. Wenn die For-Loop die eingestellte Anzahl Iterationen durchlaufen hat (mit oder ohne Timeout) wird der 2. Sequenz-Schritt ausgeführt und das VI wartet wieder auf den IRQ-Ack ...

Wenn ich jetzt mal davon ausgehe dass es sich um RS485 handelt, dann ist das ganze einfach eine Methode um auf dem RT-VI eine Reihe von Bytes, die auf den Bus geschrieben werden soll, in einen Puffer zu packen und vom FPGA-VI ausgeben zu lassen.

viele Grüße
cb