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
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.
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.
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
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.
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.
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.
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
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?
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
> 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.
oO Danke dir. Jedoch geht das in meiner Web Version nicht. Da sagt er mir ich muss die Software Kaufen. oO
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.
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.
Eben das ist mein Problem. Ich kann im Wizard den Modulus nicht anpassen. Kannst mir noch sagen wo ich es änder kann? Danke
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.