Zeitversatz zweier Signale messen

Ich wollte eigentlich mal fragen ob einer von Euch eine Idee hat wie man den Zeitversatz von zwei Signalen messen kann. Es handelt sich um ein sehr Langwelliges Signal. Die absolute Zeitdifferenz, mit der das Signal an zwei Punktem am Chip ankommt ist auch gar nicht so wichtig. Das Wichtige ist die _Veränderung_ der Differenz zu messen wenn das Signal noch einmal wieder kommt.

Es ist quasi der zeitliche Versatz von zwei identischen Signalen im Bereich von

50ns bis 10us zu messen und wie gesgt nicht absolute werte sind interessant sondern änderungen in einer Schrittweite von ca 50ns.

Idee: 4060 als Zähler benutzen. Beide Signale erstmal Schmitttriggern. Erstes Signal setzt Zähler Null. Zweites stoppt den Zähler.

4060 ist aber VIEL zu langsam mit 400kHz max. Woher weiß man welches Signal das erste war. Was für ein Zähler wäre geeignet? Hat jemand andere Ideen? Eine Abtastfrequenz von 10 MHz bekommt man mit einem Atmel Mega 8 sicher nicht hin.

Meine Kreativität stößt hier gerade an Grenzen.

Gruß,

Markus

Reply to
Mr G.
Loading thread data ...

Herr Gronotte, sind Sie das?

Wie genau, welche Signalform, wie soll visualisiert/weiterverarbeitet werden? Am einfachsten wäre vielleicht eine Phasenmessung, Komparatoren, XOR-Gatter, Tiefpass und dann die Spannung messen. Oder ein freilaufender Zähler mit 20MHz, der durch einen Komparator gestartet und durch den anderen gestoppt bzw. durch die Flanke am ersten Komparator resettet und durch den zweiten K. gelatcht wird, ganz nach Belieben, so wie Deine Namensgebung ;)

Reply to
Stefan Huebner

Z.B. schnellen (74AC...) bis sauschnellen (PECL) Zaehler nehmen und den langsamen CMOS Zaehler bei Teilfaktor 64, 128 oder sonstwo langsam mitklackern lassen.

--
Gruesse, Joerg

http://www.analogconsultants.com/
Reply to
Joerg

Mr G. schrieb:

Um 50nsec zu detektieren komme ich auf eine Zählertaktrate von 20MHz. Die positive Flanke von Signal 1 (Zeitpunkt A) setzt ein FlipFlop, die positive von Kanal 2 (Zeitpunkt B) setzt es zurück. Während das FF gesetzt ist, werden Taktimpulse von einem geeigneten Zähler gezählt.

Dem Zähler ist ein Zwischenspeicher nachgeschaltet sowie ein Subtrahierer, der die Differenz zwischen aktuellem Stand und Zwischenspeicher bildet. Das Ergebnis wird nochmals in einem weiteren Zwischenspeicher, den Ergebnisspeicher, geleitet.

Jetzt noch zu (Zeitpunkt B) die Differenz aus dem aktuellen Zählerstand und dem zuletzt im Zwischenspeicher gespeicherten Stand in den Ergebnisspeicher und gleichzeitig den aktuellen Zählerstand in den Zwischenspeicher takten und anschliessend den Zähler rücksetzen.

Im ergebnis hat man ständig die aktuelle Zeitdifferenz um Ergebnisspeicher.

Schön synchron arbeiten...

Gruss Udo

Reply to
Udo Piechottka

Joerg schrieb:

Der Vorteiler-Trick wird nichts nützen, da ja auch die Vorteiler-Bits signifikant sind....

Gruss Udo

Reply to
Udo Piechottka

Wie war der Spruch bei Video-Ingenieuren? Im Notfall hilft ein Glas "Maria Synchron".

--
Prosit, Joerg

http://www.analogconsultants.com/
Reply to
Joerg

Klar. Ich meinte ja auch, dass die nach Anhalten mitgelesen werden muessen. Sonst nutzt das natuerlich nichts.

--
Gruesse, Joerg

http://www.analogconsultants.com/
Reply to
Joerg

Mr G. schrieb:

Korrelation?

- Henry

--
www.ehydra.dyndns.info
Reply to
Henry Kiefer

Der Zähler müsste also bei 20MHz Takt bis maximal 200 zählen. Du könntest auch einen CPLD nehmen. Ich habe das eben mal ausprobiert, siehe unten, und es passt in ein MAX3000A rein. Der Code ist nicht auf realen Devices getestet, müsste aber so ähnlich funktionieren und geht zumindest durch den Compiler. Der Simulator zeigt auch vernünftige Ergebnisse:

formatting link

Den MAX3000A wollte ich auch in einem Kundenprojekt einsetzen, aber nachdem Altera mir dann auf Nachfrage sagte, daß die die Lieferbarkeit nur für die nächsten 3 Jahre für diesen Typ garantieren können und der MAX II, für den sie sagen, er wäre noch für mindestens 7 Jahre lieferbar, ein Vielfaches kostet, mache ich das nun doch wieder diskret. Für ein Hobbyprojekt oder wo

3 Jahre Liefergarantie reichen, ist das aber sehr gut geeignet. Der Code unten passt in den kleinsten Typ, den EPM3032ATC44 für ca. 1 Euro, gut rein. Ist dann zu 72% belegt, mit der kostenlosen Altera Quartus 7.1 Web-Edition compiliert. Noch einen externen 20MHz Quarz dranhängen und du bekommst den jeweils letzten Zählerstand an 8 Pins parallel ausgegeben, zur Weiterverarbeitung im Microcontroller o.ä.

library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.NUMERIC_STD.ALL; use work.ALL;

entity Phasenmessung is port( clock_20mhz : in std_logic; signal1 : in std_logic; signal2 : in std_logic; counterOut : out unsigned(7 downto 0); reset : in std_logic ); end entity Phasenmessung;

architecture rtl of Phasenmessung is

signal bufferedSignal1 : unsigned(1 downto 0); signal bufferedSignal2 : unsigned(1 downto 0); signal counter : unsigned(7 downto 0); signal lastCounter : unsigned(7 downto 0) := (others => '0'); signal signal1Detected : boolean := false;

begin process(clock_20mhz, reset) begin if reset = '1' then signal1Detected

Reply to
Frank Buss

Huebsch. Fuer so etwas sind CPLD sehr elegant.

Bei CPLD waere ich selbst mit Zusagen wie 7 Jahre vorsichtig. Dieser Markt ist schnellebig und manchmal reicht der Wechsel einer Position im Upper Management und es wackelt. Viele Leute in der Industrie trauen solchen Zusagen nur, wenn sie als Vertrag mit ordentlich Poenale von ganz oben abgezeichnet sind. Die Poenale muss dabei, sagen wir mal, finanziell im Bereich "schmerzhaft motivierend" liegen.

Gleich nach meinem Diplom durfte ich das live erleben, und das auch noch bei einem analogen Chip (Logarithmierer). Der ging trotz vorheriger Beteuerungen innerhalb von Wochen von sofort lieferbar auf Allocation und unmittelbar danach auf Status "gibbet niemals nich mehr". Kann sein, dass damals Poenale geflossen ist, aber was nutzt das, wenn deswegen die Produktion steht und die Vertriebler noelig werden? Mein erster Urlaub (Wandertour mit altem Studentenstammtisch) war damit jedenfalls vom Tisch gefegt, weil ich der einzige Analogix war :-(

--
Gruesse, Joerg

http://www.analogconsultants.com/
Reply to
Joerg

Ja, die Schnellebigkeit ist schon ein Problem. Wenn man allerdings bei der Entwicklung aufpasst, dann läuft der VHDL-Code auch auf den Konkurrenz-Chips von Xilinx, wie Coolrunner, ohne Anpassungen, zumindest wenn man keine speziellen Features des Chips verwendet, was bei so einfachen Designs wie der Phasenmessung kein Problem ist. Das Layout muß man aber anpassen, da es dabei leider keine Norm für CPLDs gibt (ist mir zumindest nicht bekannt).

--
Frank Buss, fb@frank-buss.de
http://www.frank-buss.de, http://www.it4-systems.de
Reply to
Frank Buss

Letzteres ist das Problem. Viele meiner Kunden muessen dann nach dem Re-Layout gleich die ganze UL, TUEV und EMV Chose von vorn anfangen. Sind so 3-4 Monate und noerdlich von $50k allein an Fremdleistungen. Im Prinzip muesste man diese Folgekosten "rueckwaerts" amortisieren und dann kann einem beim Betrachten des Excel Sheets echt uebel werden.

--
Gruesse, Joerg

http://www.analogconsultants.com/
Reply to
Joerg

Zeitversatz von zwei Signalen messen kann. Es handelt

Signal an zwei Punktem am Chip ankommt ist auch gar

wenn das Signal noch einmal wieder kommt.

50ns bis 10us zu messen und wie gesgt nicht absolute

Signal setzt Zähler Null. Zweites stoppt den Zähler.

erste war. Was für ein Zähler wäre geeignet? Hat

74HC4020 geht AFAIR bis 30Mhz. Hat auch im Gegensatz zum '4060 die höherwertigen Ausgänge ohne Lücke verfügbar. Als spontane Idee käme mir ein R/S FF mit Integrator am Ausgang in den Sinn.
--
Dipl.-Inform(FH) Peter Heitzer, peter.heitzer@rz.uni-regensburg.de
HTML mails will be forwarded to /dev/null.
Reply to
Peter Heitzer

Dürfte hart an der Grenze sein...

Schau mal unter dem Stichwort "Compare-Capture" nach. Es gibt bei vielen Prozessoren die Möglichkeit, per externem Signal einen Timer auszulesen. Damit kann man genau solche Sachen machen.

Das Prinzip ist folgendermaßen:

Du programmierst einen 16-Bit-Timer der einfach so mit maximal möglicher Zählfrequenz vor sich hinzählt. Dann konfigurierst du zwei Eingänge als Capture-Eingänge. Wenn an einem der Eingänge eine Flanke erkannt wird, wird der aktuelle Zählerstand in ein Capture-Register umkopiert. Gleichzeitig löst du mit der Flanke einen INT aus, der das Capture-Register ausliest und die Daten auswertet.

Wenn die Zeiten größer werden, als es die 16-Bit zulassen, kannst du beim Timer-Überlauf noch einen INT auslösen und ein weiteres Zählregister incrementieren.

Damit kannst du Pulsbreiten mit einer Auflösung in der Größenordnung des Prozessortakes messen. Ob das jetzt 50ns bei einem Prozessortakt von 20 MHz sind, kann ich allerdings nicht beantworten.

Der ATmega8 hat maximal 16 MHz. Demnach würde man die Auflösung damit nicht erreichen. Aber 100ns könnte vieleicht gehen.

Gruß

Stefan DF9BI

Reply to
Stefan Brröring

Mr G. schrieb:

TAC. Time to amplitude converter. Erstes Signal startet Stromquelle, welche Kondensator auflädt, zweites stoppt das dann. Anschliessend via S&H auslesen. Wird so jedenfalls für kurze Delays zwischen digitalen Signalen gemacht. Ob die Dynamik für obiges ausreicht möchte ich bezweifeln, wird etwas knapp.

--
mfg Rolf Bombach
Reply to
Rolf_Bombach

Da musste man den Reset schon verflixt gut hinbekommen. Geht aber. Und man versuche das nicht mit Keramikkondensatoren ...

--
Gruesse, Joerg

http://www.analogconsultants.com/
Reply to
Joerg

Signal setzt Zähler Null. Zweites stoppt den Zähler.

das erste war. Was für ein Zähler wäre geeignet? Hat

Einen Phasendetektor (der noch einfacheren Sorte) hatte ich auch schon vorgeschlagen, nur muss man damit entweder einiges an Messbereich verschenken oder klare Festlegungen treffen, wie groß der Abstand werden darf, denn eindeutig ist das Ergebnis kaum. Trotzdem wird das wohl der einfachste und sicherste Ansatz bleiben.

Reply to
Stefan Huebner

Nun mach Kerkos nicht schlechter als sie sind. zB waren Sender der Wehrmacht dynamisch temperaturkompensiert. Hei=DFt, das bei Tastung und dem dann h=F6heren Leistungsumsatz die Frequenz immer=

noch stabiler war, als die bequarzten Sender der Kriegsgegner.

mW hatte die DDR im zB SEG15 die Frequenzteiler analog also mit Kondensatoren gebaut. D=FCrfte so bis zu einem Teilerfaktor von 1:10 betriebsicher gelingen.

--=20 mfg hdw

Reply to
Horst-D.Winzler

Hi Maqqusz,

Jedes CPLD hat an einer solchen Anwendung schon fast Langeweile, so langsam kommt ihm die Aufgabe vor, mit 20MHz zu zählen.

Eigentlich müsste das sogar mit einer Handvoll Flipflops in beliebiger 74 Reihe gehen. Da Du nach dem Anhalten des Zählers ja warten kannst, bis Dein Zähler seine Reihen durch ist, braucht es nicht einmal ein synchrones Design. Ein ganz popeliger asynchroner Binärzähler mit 74HC Gattern tut hier seine Dienste

Marte

Reply to
Marte Schwarz

Hi Udo,

Ich würd den Oszillator mit einem XOR toren (möglicherweise muss man dafür sorgen, dass nur der Erste Zeitversatz freigegeben sein darf, dann braucht es eben ein bischen mehr Logik). Das letzte Signal triggert mit seiner Flanke das Auslesen.

Viel zu kompliziert: das letzte Signal triggert das Auslesen und nach dem Auslesen wird das ganze Zurückgesetzt, bis zum nächsten Impulsdoppel, das auszuwerten ist.

muss hier wirklich nur dann sein, wenn gleich nach eintreffen des 2. Impulses das Ergebnis schon da sein muss. Wenn man danach noch ein paar hundert ns Zeit hat, dann brauchts das hier nicht. Ist hier sogar eher nachteilig

Marte

Reply to
Marte Schwarz

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.