Forum: FPGA, VHDL & Co. Cyclone I PLL Fehlerhafte Frequenz


von ICKE (Gast)


Lesenswert?

Hallo,

ich habe bei einem Cyclone I die PLL aktiviert und die läuft auch 
soweit. Nur leider mit der falschen Frequenz.

Ich nehme den Wizard und stelle als Taktfrequenz die 50 Mhz ein. (die 
habe ich getestet sind wirklich 50 MHz)
Danach setzte ich die pll auf multi: 1 und div: 1. Der Wizard sagt mir 
ausgangsfrequenz sind 50 Mhz. Nur leider gekomme ich nur die hälfte 
25Mhz.

Hat einer eine Idee was ich falsch mache?

Danke

von Sam (Gast)


Lesenswert?

Wie misst du den  die Frequenz? Ein Register das mit 50MHz auf einer 
Flanke schaltet ergibt einen 25MHz Takt.
Ansonsten wären etwas mehr Details gut.

von Sigi (Gast)


Lesenswert?

Hast du im Wizzard die korrekte Input-Frequenz eingestellt?
Schau mal im ChipPlanner nach der PLL. Dort müsste dann
50MHz als Clk-Input und 50MHz als C0-output stehen.

Ist die Clk-Quelle auch 50MHz?

Wie misst du Clk-Output?
Wird der direkt an einen ClkOut-Pin rausgeführt (CycloneI
hat keine DDR-Output-Pins). Falls du indirekt misst (wie
im letzten Post schon beschrieben), dann erhälst du eben
nur ein 25MHz-Signal.

von ICKE (Gast)


Angehängte Dateien:

Lesenswert?

Vielen Danke für die Posts.

Meine Messung erfolgt wie folgt. Ich habe zwei Ausgangspins.
Der Code für das Schalten eines Ausgangspins sieht wie folgt aus:
1
LIBRARY ieee;
2
USE ieee.std_logic_1164.ALL;
3
USE ieee.numeric_std.ALL;
4
5
6
ENTITY led_clk is
7
PORT(  clk: IN std_logic;
8
    led: OUT  std_logic
9
    );
10
END ENTITY led_clk;
11
12
13
ARCHITECTURE led_clk_a of led_clk is
14
  CONSTANT  max_count:    natural  :=  100000;
15
  SIGNAL  rst:  std_logic;
16
BEGIN
17
  Rst <= '0';
18
  counter:  PROCESS(clk,rst)
19
    VARIABLE  count:  NATURAL  RANGE  0  to  max_count;
20
  BEGIN  
21
    IF  rst='1'  THEN
22
      count:=0;
23
      led <= '1';
24
    ELSIF  RISING_EDGE(clk)  then
25
      IF  count  <  max_count/2  then
26
        count:=count + 1;
27
        led <= '1';
28
      ELSIF  count < max_count then
29
        count:=count + 1;
30
        led <= '0';
31
      ELSE
32
        led <= '1';
33
        count:=0;
34
      END IF;
35
    END IF;
36
  END PROCESS  counter;
37
END ARCHITECTURE led_clk_a;

Einen Ausgang lasse ich mit dem Clock am CLK0 direkt treiben. Dort kommt 
eine Frequenz von 500Hz raus. Das mach auch sinn da 500*100000=50MHz 
sind.
Den Zweiten Ausgang lasse ich mit mit der PLL laufen. dort kommen aber 
nur 244 Hz raus.


Im Wizard steht als Eingang 50Mhz und der sagt mir als Ausgangsfrequenz 
für c0 50 Mhz. (Siehe Fotos)

Danke

von ./. (Gast)


Lesenswert?

Ich hatte auch das Problem mit der PLL bei 50 MHz Clock.

Geholfen hat im Wizard eine Eingangsfrequenz von 100 MHz
und eine Ausgangsfrequenz von 100 MHz einzustellen.

von ICKE (Gast)


Lesenswert?

Hallo,

danke für den Tipp. Diese Möglichkeit habe ich beim Spielen auch 
entdeckt. Leider ist das Problem, dass ich dann keine frequenz von 200hz 
einstellen kann. denn um den fehler zu kompensieren müste ich eine 
Frequenz von 400hz einstellen. das geht aber nicht.

von Sigi (Gast)


Lesenswert?

Die PLL-interne Logik ist auf genaue Werte wie z.B. die
Input-Clock-Frequenz angewiesen. Wenn also die Input-Clk
mit 50MHz läuft, dann sollte das auch im Wizzard angegeben
werden.

Schau aber mal im ChipPlanner nach der PLL und den Parametern.

von ICKE (Gast)


Angehängte Dateien:

Lesenswert?

Erstmal Danke das Ihr mir alle versucht zu Helfen.

ich habe im Chipplaner nachgeschaut und da steht genau das selbe wie im 
Wizard. Ich habe die Ausgabe mal als Bild angehangen.

Gruß Icke

von ./. (Gast)


Lesenswert?

Mach aus den M: 16 mal ein M: 8 :-)

Bei meinem EP1C3-Board war urspruenglich nur der Clk3 an den
50 MHz-Oszillator angeschlossen. Ein zusaetzlicher Faedeldraht
versorgt jetzt auch Clk1.
Ich habe auch die Einstellungen fuer die Eingangslogik von Clk1 mal
systematisch getestet, der PLL-VCO will nicht auf 800 MHz
schwingen.
400 MHz schafft er aber.

Wie sieht Deine Hardware aus?

von ICKE (Gast)


Lesenswert?

Hi,

ich hatte das gleiche Problem. Es war nur der CLK3 angeschlossen. Um an 
CLK0 zu kommen musste der Lötkolben her :).

Leider weiß ich nicht, wo ich die 16 -> 8 ändern kann. Im Wizard geht es 
nicht.

Danke

von ./. (Gast)


Lesenswert?

> Leider weiß ich nicht, wo ich die 16 -> 8 ändern kann. Im Wizard geht es
> nicht.

Im Chipplaner bei den PLL Properties.

Und: Man muss doppelklicken...

Und dann noch: Edit -> Save changes to Netlist.

von ICKE (Gast)


Lesenswert?

oO Danke dir. Jedoch geht das in meiner Web Version nicht. Da sagt er 
mir ich muss die Software Kaufen. oO

von ./. (Gast)


Lesenswert?

Dann koenntest Du nur noch mal schauen ob bei Deiner Hardware
die Abblockkondensatoren fuer VCCA richtig und vorhanden sind.

Einen Grund muss es ja haben das der VCO die 800 MHz nicht erreicht.

Eventuell koennte eine Serienterminierung mit 20 Ohm direkt hinter
dem Quarzoszillator das Signal etwas gefaelliger aussehen lassen.

P.S.: Es war bei mir natuerlich auch Clk0 und nicht Clk1.
Das haette aber wohl keinen Unterschied gemacht.

von ./. (Gast)


Lesenswert?

P.P.S.: Das aendern des Modulos von 16 auf 8, ist effektiv aber
genau das selbe, wie der "Trick" mit den 100 MHz als Eingangs-
und Ausgangsfrequenzen.

Du musst Dich also nicht allzu sehr graemen wegen der Webversion.

von ICKE (Gast)


Lesenswert?

Eben das ist mein Problem. Ich kann im Wizard den Modulus nicht 
anpassen.

Kannst mir noch sagen wo ich es änder kann?

Danke

von ./. (Gast)


Lesenswert?

Ohne Chipplaner vermutlich nur ueber das Getrickse mit den Frequenzen.
Der Moduloteiler M taucht leider nicht explizit bei den:

-- Retrieval info: PRIVATE:

der generierten Datei PLL.VHD auf. Nur die Eingangs- und
Ausgangsfrequenzen.

Eventuell kannst Du versuchen dort noch etwas zu drehen.
In wie weit sich das im Syntheseergebnis fuer die PLL niederschlaegt
weiss ich schlichtweg nicht.

Das bei dem PLL-VCO in diesem HW-Design oberhalb von 400 MHz
nichts sinnvolles mehr kommt, muss man dann halt beruecksichtigen.
Und wenn ein geplantes Design damit nicht zurechtkommt, dann
muesste man wohl ein anderes Board in Erwaegung ziehen.

Nach dem Datenblatt sollen ja auch 800 MHz gehen.

von ./. (Gast)


Lesenswert?

Wenn Du als Eingabefrequenz 100 MHz einstellst, wirst Du sehen,
das als Modulo-M der Wert 8 steht.

Und bei einer Frequenz von 50 MHz ist dieser Moduluwert 16.

von ICKE (Gast)


Lesenswert?

Vielen dank für die antworten.
ich werde es mal mit der Einstellung 100mhz testen.

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.