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.
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.
Das Photon
Das Photon
Das Photon
srnka
Das Photon