Forum: FPGA, VHDL & Co. Clock divider problem


von New C. (wunderlampe)


Angehängte Dateien:

Lesenswert?

Ich habe eine 200MHz Sinus-systemClock.(Xilinx KC705-Board)
Das teile ich damit ich eine 20 MHz clock bekomme.
Ich messe mit dem Oszi und beide frequenzen sind ok, aber generierte 
clock hat nicht das form eine Rechtecksignal. Was mache ich hier bitte 
falsch?

ich habe (sicherheitshalber) beide clock Verbindungen auch umgetauscht 
selbe Ergebnis.
1
architecture Behavioral of Cl is
2
3
    signal clk_1: std_logic;
4
    signal   cntDiv: unsigned(32 downto 0) := (others => '0');
5
6
  
7
begin
8
  process(sysclk)
9
    begin 
10
     if rising_edge (sysclk) then
11
      if cntDiv < "000000000000000000000000000000100" then   
12
        cntDiv <= cntDiv + "1";
13
      else
14
        clk_1 <= not clk_1;
15
        cntDiv <= (others => '0');
16
      end if;
17
    end if;
18
  end process;
19
20
BRD_USER_SMA_GPIO_P <= sysclk;
21
BRD_USER_SMA_GPIO_N <= clk_1;
22
23
end Behavioral;

von Christian R. (supachris)


Lesenswert?

1. Den Oszilloskop hat zu wenig Bandbreite, sonst wäre der Eingangstakt 
nicht Sinus sondern Rechteck
2. Wie hast du das oszilloskop am Ausgang Angeschlossen, speziell die 
Masse? Das sieht aus wie eine fliegende Verdrahtung oder mit der 100:1 
Messspitze gemessen. Da bekommt man schöne Reflexionen rein. Die 
Anstiegszeiten der FPGA Ausgänge sind im ps Bereich, das ist eine 
Bandbreite von einigen GHz, wenn man da einen sauberen Rechteck auf dem 
Oszi sehen will, braucht man neben der Bandbreite eine saubere 50 Ohm 
Koax verbindung.

von Gustl B. (-gb-)


Lesenswert?

New C. schrieb:
> Das teile ich damit ich eine 20 MHz clock bekomme.

Das macht man üblicherweise mit einer PLL.

von New C. (wunderlampe)


Angehängte Dateien:

Lesenswert?

Die Signale sind auf dem SMA Buchse vom Board ausgegeben. Die SMA 
Ausgänge verbinde ich mit dem Oszi mit eine SMA Kabel. Beide Signale 
messe ich mit selben Kabel und selbe Channel auf Oszi abwechselnd.
Ich habe einen Hantek DSO5202P 200MHz, 1GSa/s.

ich messe mit selben Kabel den Oszi Referenz Signal und bekomme schöne 
rechtecksignal.

von Achim S. (Gast)


Lesenswert?

New C. schrieb:
> ich messe mit selben Kabel den Oszi Referenz Signal und bekomme schöne
> rechtecksignal.

dann hat der Referenz Ausgang entweder flachere Flanken oder er hat eine 
Ausgangsimpedanz, die zum Wellenwiderwiderstand deines Kabels passt. 
dann hat du kein Reflektionsproblem.

der FPGA Ausgang hatte dagegen eine sehr steile Flanke und einen 
niedrigen Ausgangswiderstand. deswegen(und weil dein Kabel so lang ist) 
siehst du diese reflektionen. schließe das kabelende mit 50 Ohm ab, dann 
verschwinden sie.

von Gustl B. (-gb-)


Lesenswert?

New C. schrieb:
> BRD_USER_SMA_GPIO_P <= sysclk;
> BRD_USER_SMA_GPIO_N <= clk_1;

Vielleicht sieht er hier auch ein Übersprechen. Die Leitungen sind 
vermutlich sehr nah beieinander gelayoutet.

von Christian R. (supachris)


Lesenswert?

Mit 200MHz Bandbreite ist natürlich klar, und bei 1GSa/s wird aus den 
maximal 5 Punkten pro Schwingung natürlich dann ein Sinus rekonstruiert, 
statt Rechteck.
Der Test Ausgang ist üblicherweise im kHz Bereich und die 
Flankensteilheit passt zur Bandbreite des Scopes.

Wie schon gesagt, Takt Teilen macht man mit MMCM, die Ausgabe dann mit 
einem ODDR. Und pro LVDS Paar nur einen Takt ausgeben.

Du kannst auch mal am Scope auf DC gehen, wie groß der Kondensator ist 
der dazwischen geschaltet wird, weiß man ja nicht. Hat das Oszi auch 
eine Einstellung für 50 Ohm? Ansonsten einen BNC Abschlusswiderstand 
samt T Stück dran, bei 20MHz geht das noch...

von Tobias B. (Firma: www.elpra.de) (ttobsen) Benutzerseite


Lesenswert?

Spiele mal in den Constraints file mit dem DRIVE_STRENGTH des Clock 
Ausgangs rum. Da ist default maessig glaueb ich 12 mA drinnen, ich 
wuerde den mal auf 4 mA setzen.

Falls die Frage aufkommt wie man das macht: Referenz Dokument dazu ist 
UG903, einfach mal nach "drive strength" suchen.

von Bernhard K. (bkom)


Lesenswert?

Ist "BRD_USER_SMA_GPIO_P/N" etwa ein differentielles IO-Paar?

New C. schrieb:
> BRD_USER_SMA_GPIO_P <= sysclk;
> BRD_USER_SMA_GPIO_N <= clk_1;
> end Behavioral;

Wenn ja, dann könnte ich Bild2 verstehen ...

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

New C. schrieb:
> Die SMA Ausgänge verbinde ich mit dem Oszi mit eine SMA Kabel.
Dem Signal fehlt augenscheinlich einfach eine korrekte Terminierung. 
Dann bekommt man solche eigenartigen Signalformen.

von Achim S. (Gast)


Angehängte Dateien:

Lesenswert?

zur Illustration mal eine Simu des Messaufbaus. Oben sieht man das 
Signal der "idealen Quelle". Um die Eigenschaften des FPGA-Treibers grob 
anzunähern wird der noch ein Ausgangswiderstand von 20 Ohm spendiert. 
(R1 bzw. R3) Der Oszi-Eingang ist als 1MOhm || 15pF angenommen.

Das entspricht nicht exakt dem tatsächlichen Verhalten des Treibers. 
Aber es reicht schon, um die prinzipiellen Strukturen, die der TO in 
seiner Messung sieht, zu reproduzieren. Die grüne Kurve in der Mitte der 
Simulation entspricht dem Signal am Oszieingang ohne Terminierung. Die 
rote Kurve unten zeigt, wie das Signal von einer Terminierung 
profitieren würde.

von New C. (wunderlampe)


Lesenswert?

Lothar M. und Achim S. schrieb:
> New C. schrieb:
> Dem Signal fehlt augenscheinlich einfach eine korrekte Terminierung.
> Dann bekommt man solche eigenartigen Signalformen.
Darf ich euch bitten kurz über Terminierung etwas zu sagen. Terminierung 
ist eine Ende mit Widerstand zu schließen , kenne ich.
Hier ist eine Ende FPGA andere Ende ist Oszi. Oder gibt es solche Teile 
zu kaufen? wäre nett eine Artikel zu nennen, bitte

von New C. (wunderlampe)


Lesenswert?

Ich habe T-Connector und SMA-Attenuator-50Ohm im netzt gefunden, ich 
glaube das sind was ich brauche. Meine Frage wäre hier, beim Attenuator 
ist immer eine Abschwächer Wahl zu treffen zwischen 1-30db. Meine 
maximale Signalfrequenz ist die von FPGA clock : 200Mhz. Welche Wert ist 
in meinem Fall zu wählen?

von Tobias B. (Firma: www.elpra.de) (ttobsen) Benutzerseite


Lesenswert?

Du brauchst keinen Attenuator sondern einfach einen Abschlusswiderstand, 
z.B.:

https://www.reichelt.de/de/de/bnc-abschlussstecker-50-ohm-ug-88-50-p22035.html?PROVID=2788&&r=1

von New C. (wunderlampe)


Lesenswert?

und Bestellt. Herzlichen Dank.
Danke auch an allen Antwortenden.

von Christian R. (supachris)


Lesenswert?

New C. schrieb:
> Meine maximale Signalfrequenz ist die von FPGA clock : 200Mhz. Welche
> Wert ist in meinem Fall zu wählen?

Das kannst du mit deinem Oszi eh nicht sinnvoll "messen". Höchstens 
gucken ob da oder nicht da. Selbst ein Sinus mit 200MHz wird da wenn 
alles glatt geht nur noch mit 70% seiner Amplitude angezeigt. Rechteck 
hast du ja schon bewundern können. 20MHz wird gehen aber bei mehr wirds 
immer runder.

: Bearbeitet durch User
von Gustl B. (-gb-)


Lesenswert?

Christian R. schrieb:
> Höchstens gucken ob da oder nicht da.

Dafür ist übrigens die FFT Funktion sehr nützlich. Da sieht man nämlich 
auch Signale die man in der zeitlichen Darstellung nicht mehr erkennt. 
Bei meinem MSO5074 kann ich einen 1 GHz Clock in der normalen 
Darstellung nicht mehr sehen, der geht im Rauschen unter. In der FFT 
sehe ich den aber wunderschön. Wenn man also nur wissen will ob ein 
Signal da ist und welche Frequenz das grob hat dann ist das super.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.