synchronisation auf clock signal - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein) +---- Forum: Datenerfassung (DAQ) (/Forum-Datenerfassung-DAQ) +---- Thema: synchronisation auf clock signal (/Thread-synchronisation-auf-clock-signal) |
synchronisation auf clock signal - talarion - 03.11.2010 10:05 hi! ich arbeite seit kurzen im rahmen eines praxissemesters mit labview. hierbei geht es um das auswerten eines boardcomputers eines flugzeugs. ich habe hier ein NI PXI-1031 mit diversen karten, momentan verwende ich die PXI-6224. diese ist über ein scb68 an den teststand des boardcomputers angeschlossen, wo ich die ausgangssignale direkt abgreifen kann. die ausgangssignale sehen folgendermassen aus: ich bekomme ein datensignal, auf dem seriel ein bitstrom übertragen wird. dazu kommt ein clock signal, auf dessen positiven flanken die bits des datensignals getriggert sind. bei jeder positiven flanke des clocksignals, bin ich in der mitte eines bits des datensignals. zur verdeutlichung habe ich eine grafik angehängt. beide signale habe ich dann noch in invertierter form zur verfügung, also insgesammt 4 datenleitungen. ich bin nun so weit, dass ich die datenbits auf die clockimpulse triggern kann, und den seriellen strom in ein byte einlesen kann. auf der datenleitung werden sequentiell mehrere datenwörter übertragen, immer durch einen synch-break voneinander getrennt. nachdem alle datenwörter durchgelaufen sind, geht das ganze wieder von vorne los und immer so weiter. jetzt steh ich aber vor dem problem, dass ich die datenwörter immer am snych-break beginnend einlesen muss, d.h. ich muss diesen break irgendwie im datenstrom finden. in der grafik sieht man zb, dass die daten immer höchstens die halbe frequenz des synch-breaks haben. die daten sind im NRZ format, die frequenz kann also variieren. der synch-break ist auch nichts anderes als ein ausschnitt des clock signals. meine ansätze bisher waren zb, das datensignal mit dem clocksignal zu vergleichen. da diese nur im synch-break gleich sind, sollte man diese stelle so finden können. ein anderer ansatz war, die frequenz im datensignal zu messen, und wenn diese die frequenz des clocksignals erreicht, ist die stelle auch wieder gefunden. aufgrund mangelnder kenntnnisse mit labview, konnte ich beide ansätze nicht umsetzten. vielleicht kann mir hier jemand dabei helfen, oder hat einen viel eleganteren weg parat, wie ich diese breaks finden kann. ich hoffe es ist einigermassen klar, was ich beschrieben hab. danke schonmal! ciao! synchronisation auf clock signal - jg - 03.11.2010 10:39 Bitte LVF-Regeln lesen und in Zukunft beachten, in diesem Fall geht es um den letzten Abschnitt. Beiträge, die (fast) ohne Verwendung der Shift-Taste erstellt wurden, sind einfach schlecht lesbar. Das mögen wir hier im LVF nicht. Gruß, Jens synchronisation auf clock signal - oenk - 03.11.2010 10:47 Du kannst dir einen Trigger erstellen, der auf ein digitales Pattern hin startet (des Sync-Breaks). Ab dann folgt es wohl immer dem gleichen Schema, oder sollte es zumindest. SoUndSoViel Daten bits, soUndSoViel SyncBits, etc pp. Sind die Wörter unterschiedlich lang sieht die Sache ganz anders aus. Dann bleibt IMHO nur post-processing. Re-triggering on the fly funktioniert meiner Erfahrung nach nicht, oder nicht ohne Datenverlust (zumindest bei NI-HSDIO, wie es mit DAQmx aussieht weiss ich nicht) Wenn du die Clock deines Devices auf die Clock des DUT synchronisierst spielt eine Schwankung der Clock auch keine Rolle (sofern dies die 6224 Karte unterstüzt). synchronisation auf clock signal - talarion - 03.11.2010 12:47 Wenn ich nach einen digitalen Pattern suche, dann schaut sich das VI doch nur die Flanken an, oder? Das Problem hierbei ist, dass im Dantensegment eben die gleiche Bitfolge auftauchen kann, Unterschied ist allein die Frequenz. Bei dem VI DAQmx Trigger z.B. kann ich nur Flanken und Pegel als Muster angeben, aber das Hilft mir nicht weiter. Es muss also irgend eine andere Lösung her. Ich hab auch schon versucht, das digitale Signal in ein analoges umzuwandeln, und in diesem dann die Frequnz zu messen. Nach den Umwandlung hab ich aber kein Signal mehr... Danke schonmal für die Hilfe soweit! Ciao! synchronisation auf clock signal - talarion - 04.11.2010 08:22 Wie könnte ich denn z.B. die Zeit zwischen zwei positiven Flanken messen? Oder die Pulsbreite bei einem digitalen Signal? synchronisation auf clock signal - Achim - 04.11.2010 09:54 Benutz mal den ExampleFinder... synchronisation auf clock signal - talarion - 05.11.2010 09:33 Ich habe schon nach ähnlichen Beispielen gesucht, aber nichts gefunden das mir weiterhilft. Ich hab mich auch schon eine ganze Weile mit dem Problem beschäftigt, bevor ich hier Das Topic erstellt hab, aber mittlerweile weiss ich einfach nicht mehr weiter. Der Vergleich der beiden Signale geht schief, weil ich ja das Datensignal auf das Clocksignal getriggert hab, damit seh ich die Flanken im Datensignal nicht mehr, soblad der synch-break kommt. Der andere Ansatz mit der Frequenzmessung haut auch nicht hin, ich schaffs nicht, die Impulse zu messen. Ich hab mal ein VI hochgeladen, in dem ich das digitale Signal in ein analoges wandle, aber nach der Wandlung hab ich kein Signal mehr. Ich würd mich freuen, wenn mir jemand mit der Frequenzmessung hilft, oder vielleicht hat ja jemand einen ganz anderen Ansatz, wie man das Problem lösen kann. Worum es geht steht ja im ersten Beitrag. Danke schonmal für eure Hilfe! EDIT: zum VI: Ich habe dort zwei Tasks erstellt, die jeweils eine Leitung der PXI-6224 Karte lesen. Auf einer Leitung liegt das Datensignal an, auf der anderen das Clocksignal. In diesem Beispiel sind die beiden Signale aber nicht aufeinander getrifggert, da es mir hier nur mal um die Umwandlung in ein analoges Signal ging. Die Anzeigen bekommen aber kein Eingangssignal mehr. LV Version 8.6 |