Forum: FPGA, VHDL & Co. FPGA-Takt verdoppeln


von hans (Gast)


Lesenswert?

Hallo

Es geht um einen Xilinx Spartan II. Ich habe gehört, dass der intere
Hardware hätte um den Eingangstakt (z.B. von einem Quarz) zu
verdoppeln.

Wie lässt sich das in VHDL verwenden ?

thx

von Daniel R. (daniel_r)


Lesenswert?

Nicht direkt in VHDL, aber in ISE mit dem Core Generator...

von Martin K. (mkohler)


Lesenswert?

Das sieht in VHDL (ISE 6.3.03i) so aus:
------------------------------------------------
DLL 2X
library ieee;
use ieee.std_logic_1164.all;
library unisim;
use unisim.vcomponents.all;

entity dll_standard is
    port (
        CLKIN   : in  std_logic;
        RESET   : in  std_logic;
        CLK2X   : out std_logic;
        CLKD16  : out std_logic;
        LOCKED  : out std_logic
    );
end dll_standard;

architecture structural of dll_standard is

signal  CLKIN_w     : std_logic;
signal  CLK2X_dll   : std_logic;
signal  CLK2X_g     : std_logic;
signal  CLKD16_dll  : std_logic;
signal  CLKD16_g    : std_logic;

begin

    clkpad : IBUFG
    port map (
        I   =>  CLKIN,
        O   =>  CLKIN_w
    );

    dll2x : CLKDLL
    port map (
        CLKIN   =>  CLKIN_w,
        CLKFB   =>  CLK2X_g,
        RST     =>  RESET,
        CLK0    =>  open,
        CLK90   =>  open,
        CLK180  =>  open,
        CLK270  =>  open,
        CLK2X   =>  CLK2X_dll,
        CLKDV   =>  CLKD16_dll,
        LOCKED=>LOCKED
    );

    clk2xg : BUFG
    port map (
        I   =>  CLK2X_dll,
        O   =>  CLK2X_g
    );

    clkd16g : BUFG
    port map (
        I   =>  CLKD16_dll,
        O   =>  CLKD16_g
    );

    CLK2X   <=  CLK2X_g;
    CLKD16  <=  CLKD16_g;

end structural;
------------------------------------------------

Das Konstrukt wird dann ganz normal in die Entity eingebunden als
component.
Es handelt sich nicht um ein "reines" VHDL Konstrukt, sondern um
Xilinx-spezifische Angaben.

Der Core-Generator kann helfen, ist aber nicht unbedingt notwendig.

Hilft das so?

von Daniel R. (Gast)


Lesenswert?

<<Es handelt sich nicht um ein "reines" VHDL Konstrukt, sondern um
<<Xilinx-spezifische Angaben.

Du hast ein "k" vergessen. Das macht den ganzen Satz sum Schwachsinn
;)

von Daniel R. (Gast)


Lesenswert?

Ups, Sorry. Ich hab das "nicht" ueberlesen...

Also: Der Satz macht doch Sinn. :)

von Tom (Gast)


Lesenswert?

Hallo zusammen,

schau mal unter "DCM - Digital Clock Manager" oder unter "CLKDLL -
Clock  Delay Lock Looped" nach...

von Martin K. (mkohler)


Lesenswert?

DCM mit sehr flexibler Clockraten-Generierung sind erst ab Spartan 3
drin, im Spartan 2 können nur doppelte, vierfache, halbe, sechzehntel
und ähnliche Frequenzen generiert werden.

@Daniel R.: kann passieren, kein Problem!

von Jürgen Schuhmacher (Gast)


Angehängte Dateien:

Lesenswert?

Kann man die nicht per Hand teilen / gfs auch eine andere PLL führen?

... z.B. ver-n-fachen und durch m und durch 2 dividieren (Zähler),
diese Clk dann raus auf einen Pin, zu einem anderen wieder rein und
dort die nächste PLL drauf.

-> 20MHz x 4 -> 80MHz / 7 -> 11,43 unsymmetrisch, / 2 -> 5,71 mit d.c.
50% -> raus, rain, x 4 -> 22,9 MHz

Mit einer kaskadierten 2/3-Anordnung erhält man aus 10MHz z.B. 1,1111
Mhz oder mit einer einfach 8/5 -> 8MHz.

von hans (Gast)


Lesenswert?

Ok, danke Leute!

Ich werde das mal ausprobieren.

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.