Eingangstaktsignal mit Rauschen

Ich entwerfe einen Frequenzteiler in FPGA. Es ist nichts anderes als das D-Flip-Flop, das den invertierten Ausgang als Eingang verwendet. Dann ist am Ausgang des D-Flip-Flops ein Signal mit der halben Frequenz des CLK-Eingangssignals.

http://www.radio-electronics.com/info/circuits/logic_d-type_divider/d-type_frequency_divider.php

Das Problem ist, dass das Ausgangssignal schlecht ist. Für eine Halbperiode des Eingangssignals ist es in Ordnung, aber in der zweiten Halbperiode gibt es viele Impulse im Ausgangssignal.

Alles geht in einen ausreichenden Zustand, wenn ich versuche, das Signal am Eingang zu messen. Wenn ich nur das Stück Kabel an den Eingang anschließe, hat es auch geholfen. Also denke ich, dass das Eingangssignal mit etwas Rauschen ist (es hat Haare oder Fell oder wie man es sagt) und das macht dieses Problem.

Weitere Informationen: Die Frequenz des Eingangssignals beträgt 500 Hz

Dieses Eingangssignal wird von dem Gerät erzeugt, das ich verwenden muss. Ich habe versucht, dieses Signal per Oszilloskop zu betrachten, aber ich beeinflusse es durch Messen. Ich weiß also nicht, ob das Eingangssignal bereits verrauscht ist oder das Rauschen irgendwo in der Spur zum FPGA erzeugt wird.

Zwischen dem Quellsignal und dem FPGA ist ein Pegelwandler (sn74lvc4245apwr) angeschlossen, der den Spannungspegel von 5 V auf 3 V3 ändert. Es gibt eine ziemlich lange Spur zwischen dem Ausgang des Pegelwandlers und dem Eingang zum FPGA. Mit dieser Spur ist nichts weiter verbunden. Der GND befindet sich zwischen jedem Signalpfad auf der Platine. Das Schema des Boards, auf dem ich es teste, ist komplex und daher ist es schwierig, es hier zu teilen.

Das FPGA gehört zum Darnaw-Modul (Enterpoint, .uk, pga-modules), das durch Löten mit der Leiterplatte verbunden ist (es befindet sich in einem Sockel).

Das FPGA-Design erfolgt in HDL.

HDL-Code:

Port (
 CLK_IN  : in STD_LOGIC;
 CLK_OUT : out STD_LOGIC;
);

...

   process(CLK_IN)
   begin
        if falling_edge(CLK_IN) then
             CLK_OUT <= not CLK_OUT;
        end if;
   end process;

Ich habe einen Rat bekommen - dieses CLK_IN-Signal mit einem anderen E / A-Pin innerhalb des FPGA zu verbinden und dann dieses neue Signal zu verwenden. Bild dieser Problemumgehung: http://dl.dropbox.com/u/37820110/circ.gif

Dieser Rat hilft, die Ausgabe des FPGA ist besser. Ich denke, das Signal im Eingang verbessert sich aufgrund von E / A-Schaltungen, es muss passieren. Aber es verbraucht zwei weitere FPGA-Pins, daher gefällt mir diese Lösung nicht.

Gibt es eine andere Lösung, die ich in der Eingabe von FPGA oder in der FPGA-Inside-Logik tun kann? Ich kann auch etwas in die Spur des Eingangssignals, einige Terminierungen oder Logikgatter geben, um dieses Eingangssignal zu verbessern. Aber ich kann die Quelle des Taktsignals nicht ändern.

Haben Sie beim Pegelumwandlungspuffer geeignete Spannungen an den OEbar- und DIR-Pins? Haben Sie Pull-Ups oder Pull-Downs auf der Niederspannungsseite, um einen bekannten Pegel anzugeben, wenn der Puffer drei Zustände hat?
Zum HDL kann ich leider nichts sagen, da ich nur Verilog kenne.
Gibt es auch Änderungen, wenn Sie das FPGA-Modul wieder in den Sockel einsetzen? Oder den Ausgang auf einen anderen Ausgangspin umleiten? Eine schuppige Buchsenverbindung an einem Stift könnte erklären, was Sie sehen.
@The Photon Die OEbar- und DIR-Pins sind richtig eingestellt. Welchen Puffer mit drei Zuständen meinst du?
Ich meine den 'LVC4245.

Antworten (2)

Ohne weitere Informationen (Scope-Bild, PCB-Layout, Schaltplan usw.) ist es sehr schwer zu sagen, warum dies geschieht.
Welche Frequenz hat das Signal? Wo genau kommt es her? (das FPGA? oder diskretes Flip-Flop - aus Ihrer Frage nicht ganz klar) Wie lang ist die Spur vom Pin? Was ist damit verbunden?

Es könnte sein, dass die Art und Weise, wie Sie die Dinge testen, das Problem ist. Haben Sie die Sonden-Erdungsklemme entfernt, einen kurzen Draht um den Lauf gewickelt und diesen am nächstgelegenen Erdungspunkt zum Signalstift befestigt?
Wenn es wirklich da ist, dann könnte es an einem nicht so tollen Layout der Platine liegen. Haben Sie feste Erdungs- / Stromversorgungsebenen auf dem Brett? Ist jeder Power Pin richtig mit den vom Hersteller empfohlenen Werten entkoppelt?
Wenn Sie weitere Informationen bereitstellen können, ist es einfacher, darauf hinzuweisen, wo das Problem liegt.

Zwei Ideen:

Ist Ihr FPGA-Design in HDL oder schematisch erstellt? Der Punkt, dass der Ausgang während der Hälfte des Taktzyklus sauber und in der anderen Hälfte laut ist, lässt mich denken, dass Sie bei einem HDL-Design möglicherweise eher einen D-Latch als ein D-Flip-Flop erzeugt haben.

Was ist auch die Quelle des Eingangstakts? Wenn es sich um ein (P)ECL-Gate handelt, haben Sie die erforderliche Terminierung bereitgestellt? Echte PECL-Logik kann nur hoch treiben und erfordert einen Pulldown-Widerstand am Ausgang, um einen niedrigen Ausgang bereitzustellen. PECL-kompatible Ausgangslogik von einem FPGA hätte dieses Problem jedoch nicht.

Wie Oli und andere auch erwähnt haben, werden uns mehr Informationen ermöglichen, viel bessere Antworten zu geben. Vollständige Schaltpläne Ihres Boards und Schaltpläne oder HDL für Ihr FPGA wären ein guter Anfang.