INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Dieses Thema hat akzeptierte Lösungen:

High Throughput Divide in Single Cycle Timed Loop



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

18.07.2019, 08:49 (Dieser Beitrag wurde zuletzt bearbeitet: 18.07.2019 09:23 von Krimo.)
Beitrag #1

Krimo Offline
LVF-Neueinsteiger


Beiträge: 2
Registriert seit: Jul 2019

2018
2017
kA



High Throughput Divide in Single Cycle Timed Loop
Hallo LabVIEW-Forum,

meine Frage betrifft die Benutzung der "High Throughput Divide" Funktion innerhalb einer "Single Cycle Timed Loop" auf FPGA-Ebene.
Dazu habe ich mal ein Test-Vi programmiert, welches eins zu eins mein Problem wiederspiegelt, welches ich auch bei der Ausführung auf dem FPGA bekomme.
Das VI und ein Bild dazu findet ihr im Anhang.
Mein Ziel ist es beim Wählen des Divide-States, eine Division durchführen zulassen und ein valides Ergebnis zu bekommen.
Meine Problematik ist, dass das irgendwie nur beim ersten Mal klappt, nachdem ich das Programm gestartet habe. Sobald ich wieder eine Division durchführen möchte,
wird das Ergebnis der Division immer um eine Ausführung versetzt angezeigt. Warum?

Hier mal ein konkretes Beispiel:
1. Ausführung: 1/1000 = 0,001
2. Ausführung: 1/2000 = 0,001 <--- altes Ergebnis. Hier sollte 0,0005 stehen.
3. Ausführung: 1/3000 = 0,0005
4. Ausführung: 1/4000 = 0,0003333

Noch als kurze Anmerkung: Die Case-Struktur darf nicht weggelassen werden, da im Original-VI innerhalb der SCTL auf dem FPGA die Berechnung nicht sofort durchgeführt werden soll, sondern erst bei einer bestimmten Startbedinung.

Über Hilfe und Rat wäre ich dankbar!

Krimo


Angehängte Datei(en) Thumbnail(s)
       

18.0 .vi  High Throughput Division.vi (Größe: 38,04 KB / Downloads: 284)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
18.07.2019, 10:34 (Dieser Beitrag wurde zuletzt bearbeitet: 18.07.2019 10:36 von jg.)
Beitrag #2

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: High Throughput Divide in Single Cycle Timed Loop

Akzeptierte Lösung

Das Problem ist, dass dein Divide VI 33 Zyklen für die Berechung braucht, aber einen Zyklus mehr braucht, bis das valide Ergebnis ausgegeben wird.

Du übergibst aber bei JEDEM Aufruf Werte an das VI und markierst sie mit "input valid" = TRUE.

Das ergibt folgenden Ablauf:
Beim ersten Aufruf des Divide Case braucht die SCTL insgesamt 35 Durchläufe bis zur Ergebnis-Ausgabe.
Nach dem 33. Aufruf gibt das VI aber aus, dass es wieder bereit ist für eine weitere Eingabe.
Beim 34. Durchlauf übergibst du nochmals die Werte für eine neue Berechnung (input valid = TRUE). Damit wird dann eine neue Division gestartet.
Somit sind schon 2 Berechnungsschritte durchgelaufen, wenn der Case "Divide" das erste Mal beendet wird.

Beim zweiten Aufruf von "Divide" macht das Divide-VI mit der schon gestarteten Berechnung weiter.
Das braucht jetzt noch 31 Aufrufe, bis das VI wieder für eine neue Vorgabe bereit ist, nach ingesamt 33 Durchläufen wird ein valides Ergebnis ausgegeben.

Und das setzt sich jetzt solange fort, bis du das VI wieder ganz von vorne startest.

Gruß, Jens

EDIT: mgl. Lösung:
   

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
18.07.2019, 12:01
Beitrag #3

Krimo Offline
LVF-Neueinsteiger


Beiträge: 2
Registriert seit: Jul 2019

2018
2017
kA



RE: High Throughput Divide in Single Cycle Timed Loop
Hi jg,

Danke für die schnelle Antwort und die Lösung!!!
Es musste tatsächlich nur klar definiert werden, dass beim 0.ten Schleifendurchlauf , also ganz am Anfang, der "input valid" true sein soll. Genau wie du beschrieben hast.
Jetzt brauch auch jede Berechnung konstant 34 Schleifendruchläufe.

Viele Grüße
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
18.07.2019, 12:08
Beitrag #4

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: High Throughput Divide in Single Cycle Timed Loop
(18.07.2019 12:01 )Krimo schrieb:  Jetzt brauch auch jede Berechnung konstant 34 Schleifendruchläufe.
35 Durchläufe brauchst du, der Schleifenzähler beginnt bei 0.

Gruß, Jens

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
Sad FFT Express VI - Single Channel Multiple Samples bisasam 4 3.977 10.07.2021 13:07
Letzter Beitrag: Martin.Henz
  Fifo zum Host in Single Cycle Timed Loop liefert unerwartete Daten RobertR 2 6.713 12.01.2012 21:54
Letzter Beitrag: RobertR
  Case Struktur in Single Cycle Timed Loop ro.hau 2 6.298 28.01.2009 08:34
Letzter Beitrag: ro.hau

Gehe zu: