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 

FPGA 32bit Timer Überlauf



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!

03.07.2009, 13:48 (Dieser Beitrag wurde zuletzt bearbeitet: 03.07.2009 13:49 von Peyotito.)
Beitrag #1

Peyotito Offline
LVF-Grünschnabel
*


Beiträge: 21
Registriert seit: Jan 2008

8.5
2007
kA

10247
Deutschland
FPGA 32bit Timer Überlauf
Hallo!

Ich nutze den internen Timer in µs, um in bestimmten Abständen bzw. mit einer bestimmten Frequenz Impulse abzugeben.

Ein Problem ergibt sich, wenn der interne Timer überläuft. Dann gibt der FPGA ganz kurz ganz viele Impulse ab und macht dann eine kurze Pause um dann normal weiter zu machen.

Ich haben schon versucht mir einen eigenen Timer zu bauen, indem ich in eine 64bit Variable im µs Takt hochzähle und diese benutze.
Hat aber nicht funtkioniert.

Hat jmd. eine Idee, was ich machen könnte?

Danke schon mal

Grüße


P.

.vi Version 8.5


Angehängte Datei(en)
Sonstige .vi  _FPGA_Test1.1.vi (Größe: 455,75 KB / Downloads: 309)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
04.07.2009, 17:48
Beitrag #2

thomas.sandrisser Offline
LVF-SeniorMod


Beiträge: 1.298
Registriert seit: Sep 2005

xxxx
2005
EN

78759
United States
FPGA 32bit Timer Überlauf
den ueberlauf koenntest du durch einen einfachen is less than herausfinden und entsprechend code ausfuehren der den richtigen wert berechnet.

Wenn 'tick count 2' kleiner als 'tick count 2 ALT' ist, dann
4294967295 - 'tick count 2 ALT' + 'tick count 2'
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
06.07.2009, 13:04
Beitrag #3

dlambert Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 89
Registriert seit: May 2009

2010
2007
en

12359
Deutschland
FPGA 32bit Timer Überlauf
Ich würde die Schleife mit einem µs-Timer versehen und den LoopCount ( inkrementiert per Schieberegister ) bei Pulsabgabe zurücksetzen. Der kumulierte Timerwert wird ja so wie es aussieht nicht benötigt.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
06.07.2009, 13:55
Beitrag #4

Peyotito Offline
LVF-Grünschnabel
*


Beiträge: 21
Registriert seit: Jan 2008

8.5
2007
kA

10247
Deutschland
FPGA 32bit Timer Überlauf
' schrieb:Ich würde die Schleife mit einem µs-Timer versehen und den LoopCount ( inkrementiert per Schieberegister ) bei Pulsabgabe zurücksetzen. Der kumulierte Timerwert wird ja so wie es aussieht nicht benötigt.

Hallo!

Ein µs-Timer ist ja drin. Nur das der eben nach 2^32 µs (ca. 71 min.) überläuft und damit nicht mehr taugt.

Ich erkenne ja, wenn der Überlauf stattfinden muss, da ich die Periodendauer aufs Schieberegister drauf addiere. Ich versuche jetzt dann mal ein Flag zu setzen und das wieder zu entfernen wenn dann Counter2 wieder < Counter1.
Gepulst werden darf nur, wenn Counter2 >= Counter1 (Counter1 = Counter1 alt + Periodendauer) AND Flag NOT TRUE.

Mal sehen, ob das klappt.

Hatte auch schon überlegt, dass ja durch die Frequenz/Periodendauer die Zeit exakt vorgegeben ist und ich dann einfach nach dem Puls eine entsprechende Pause dran hänge. Nur, wenn ich hier durch die Laufzeit des FPGA jedesmal ein paar Ticks Abweichung habe, dann summieren sich die auf über die Anzahl der Durchläufe.
Oder kann man den Zeitaufwand des FPGA einfach exakt berechnen?
Dann müsste ich den wieder abziehen.

Durch den Vergleich der Counter synchronisiert sich das ganze immer wieder automatisch und die Frequenz kann so eingehalten werden und es verschiebt sich nichts klamm heimlich.

Grüße

P.


Angehängte Datei(en)
Sonstige .vi  _FPGA_Test1.3.vi (Größe: 472,84 KB / Downloads: 302)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
06.07.2009, 15:24
Beitrag #5

Peyotito Offline
LVF-Grünschnabel
*


Beiträge: 21
Registriert seit: Jan 2008

8.5
2007
kA

10247
Deutschland
FPGA 32bit Timer Überlauf
' schrieb:Ich erkenne ja, wenn der Überlauf stattfinden muss, da ich die Periodendauer aufs Schieberegister drauf addiere. Ich versuche jetzt dann mal ein Flag zu setzen und das wieder zu entfernen wenn dann Counter2 wieder < Counter1.
Gepulst werden darf nur, wenn Counter2 >= Counter1 (Counter1 = Counter1 alt + Periodendauer) AND Flag NOT TRUE.

Mal sehen, ob das klappt.

Klappt leider so nicht!

Erkennt jmd. nen Fehler?

Grüße

P.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
06.07.2009, 16:11 (Dieser Beitrag wurde zuletzt bearbeitet: 20.07.2009 09:04 von Kvasir.)
Beitrag #6

Kvasir Offline
LVF-Freak
****


Beiträge: 642
Registriert seit: May 2006

10
2004
DE_EN

0000
Oesterreich
FPGA 32bit Timer Überlauf
Hier im Anhang hab ich dir ein SubVi erstellt, das dir einen 64bit Counter erstellt.
Das macht übrigens genau das, was dir Thomas oben schon vorgeschlagen hat. Sobald dein Counter kleiner ist, als der Vorwert zählt es die 32bit dazu.

Allerdings drängt sich mir die Frage auf, warum du nicht einfach die Schleifendauer über die Looptimer Funktion einfach auf den gewünschten DeltaWert stellst. Wenn ich dein Blockdiagramm recht entziffere willst du ja eigentlich nur eine bestimmte Zeit zwischen zwei Druchläufen warten. Das geht doch so viel einfacher / übersichtlicher / logischer / ...

Grüße


Sonstige .vi  64bit_counter.vi (Größe: 8,52 KB / Downloads: 355)
Lv85_img


Angehängte Datei(en) Thumbnail(s)
   

A few weeks of developement and testing can save a WHOLE afternoon in the library!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
17.07.2009, 15:11
Beitrag #7

Peyotito Offline
LVF-Grünschnabel
*


Beiträge: 21
Registriert seit: Jan 2008

8.5
2007
kA

10247
Deutschland
FPGA 32bit Timer Überlauf
' schrieb:Allerdings drängt sich mir die Frage auf, warum du nicht einfach die Schleifendauer über die Looptimer Funktion einfach auf den gewünschten DeltaWert stellst. Wenn ich dein Blockdiagramm recht entziffere willst du ja eigentlich nur eine bestimmte Zeit zwischen zwei Druchläufen warten. Das geht doch so viel einfacher / übersichtlicher / logischer / ...

Grüße

[attachment=47472:64bit_counter.vi]Lv85_img

Vielen Dank für den Tipp!

Den Looptimer kannte ich noch garnicht!

So funktionierts super.

Grüße
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.07.2009, 09:52
Beitrag #8

rolfk Offline
LVF-Guru
*****


Beiträge: 2.305
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
FPGA 32bit Timer Überlauf
' schrieb:den ueberlauf koenntest du durch einen einfachen is less than herausfinden und entsprechend code ausfuehren der den richtigen wert berechnet.

Wenn 'tick count 2' kleiner als 'tick count 2 ALT' ist, dann
4294967295 - 'tick count 2 ALT' + 'tick count 2'

Das sollte so bei Unsigned Integer Arithmetik nicht mal nötig sein. Wenn nur die Differenz zwischen zwei Werten interessant ist kann man einfach beide Unsigned Werte voneinander abziehen und bekommt den richtigen Wert als Differenz auch bei Überlauf. Das geht natürlich nur wenn ein Interval nie länger als das Zählerintervall dauert aber das ist hier wohl nicht das Problem.

Sache ist es dann ganz einfach meist um das Problem so anzupassen, dass die Differenz zwischen den zwei Intervallen als Eingangsvariable verwendet werden kann und nicht irgendetwas anders.

Rolf Kalbermatter

Rolf Kalbermatter
Technische Universität Delft, Dienst Elektronik und Mechanik
https://blog.kalbermatter.nl
Webseite des Benutzers besuchen 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
  Sind Referenzen auf FPGA-Variablen in FPGA vi möglich? Felix777 2 7.885 26.10.2015 20:41
Letzter Beitrag: Felix777
  FPGA-Referenz öffnen: FPGA-VI nicht kompiliert LauraP. 9 13.193 17.03.2015 16:58
Letzter Beitrag: LauraP.

Gehe zu: