Forum: FPGA, VHDL & Co. Plan Ahead 14.1 PLL oder Clk Wiz


von Sandra (Gast)


Lesenswert?

Liebe Kollegen!

Ich habe gerade Xilinx ISE 14.1 installiert. Da angeblich alles in kürze 
auf Plan Ahead umgestellt werden soll habe ich das gleich ausprobiert. 
Alles kein Problem aber ich finde den IP Core für eine PLL oder CLK Wiz 
nicht.

Ich möchte eigentlich nur meine 100 MHz auf 2 ClkDomains teilen (75MHZ 
und 25MHz).

Ich verwende einen Virtex 5 (XC5VLX110T).

Bei ISE 13.2 hat es mit einer PLL funktioniert.

DANKE für Eure Hilfe!

Bussi
Sandy

P.S.: Das die 2 CLK Domains zusammen die 100 MHz ergeben ist Zufall.

von Duke Scarring (Gast)


Lesenswert?

Sandra schrieb:
> ich finde den IP Core für eine PLL oder CLK Wiz
> nicht.
Wieso braucht man da einen Wizard dafür?
Ich mach da copy&paste aus dem Library-Guide und passe mir die generics 
an.
Bei Dir reicht eine DCM (CLKDV -> 25 MHz, CLKFX -> 75 MHz).

Duke

von Sandra (Gast)


Lesenswert?

Das hab ich noch nie gemacht.

Library Guide?
Generics anpassen bekomme ich vermutlich hin aber ich wusste nicht, dass 
es einen Library Guide gibt.

Kannst Du mir´s kurz erklären?

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


Lesenswert?

Sandra schrieb:
> Library Guide?
Ja nun...
http://www.google.de/search?q=xilinx+library+guide+virtex5

Und dann weiter mit dem "VHDL Instantiation Template"...

> P.S.: Das die 2 CLK Domains zusammen die 100 MHz ergeben ist Zufall.
Wie war der eine?
Kommt einer in den Baumarkt und sagt: "Ich brauche einen 3er und einen 
5er Bohrer, weil ich ein 8er Loch bohren will."
Darauf der Berater: "Nehmen Sie doch einen 4er Bohrer, dann müssen Sie 
nicht umspannen!"

von Sandra (Gast)


Lesenswert?

LOL
Der ist gut!

DANKE für den Link!

von Sandra (Gast)


Lesenswert?

Ich verstehs nicht. Kannst Du mir vielleicht ein kleines Beispeil 
schicken.

Ich hab im Top.vhd File den component deklariert und die port/generic 
map dazugegeben. Leider nimmt Plan Ahead die sachen nicht. HELP!!!

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


Lesenswert?

Sandra schrieb:
> Ich hab im Top.vhd File den component deklariert und die port/generic
> map dazugegeben.
Wie?
> Leider nimmt Plan Ahead die sachen nicht.
Warum? Welche Fehlermeldungen bekommst du?

von Sandra (Gast)


Lesenswert?

Es wird in der Hirarchie gar nicht angeführt. Xili_18 und Xili_19 
fehlen.
1
 ...
2
3
library IEEE;
4
use IEEE.STD_LOGIC_1164.all;
5
Library UNISIM;
6
use UNISIM.vcomponents.all;
7
8
 ...
9
   component DCM_ADV is
10
      port ( clkin : in std_logic;
11
             clk0  : out std_logic;
12
             rst   : in std_logic);
13
   end component;
14
...
15
XLXI_18 : DCM_ADV
16
      generic map ( CLKDV_DIVIDE => 4.0, -- Divide by: 1.5,2.0,2.5,3.0,3.5,4.0,4.5,5.0,5.5,6.0,6.5
17
                    -- 7.0,7.5,8.0,9.0,10.0,11.0,12.0,13.0,14.0,15.0 or 16.0
18
                    CLKFX_DIVIDE => 1, -- Can be any integer from 1 to 32
19
                    CLKFX_MULTIPLY => 3, -- Can be any integer from 2 to 32
20
                    CLKIN_DIVIDE_BY_2 => FALSE, -- TRUE/FALSE to enable CLKIN divide by two feature
21
                    CLKIN_PERIOD => 10.0, -- Specify period of input clock in ns from 1.25 to 1000.00
22
                    CLKOUT_PHASE_SHIFT => "NONE", -- Specify phase shift mode of NONE, FIXED,
23
                    -- VARIABLE_POSITIVE, VARIABLE_CENTER or DIRECT
24
                    CLK_FEEDBACK => "1X", -- Specify clock feedback of NONE or 1X
25
                    DCM_PERFORMANCE_MODE => "MAX_SPEED", -- Can be MAX_SPEED or MAX_RANGE
26
                    DESKEW_ADJUST => "SYSTEM_SYNCHRONOUS", -- SOURCE_SYNCHRONOUS, SYSTEM_SYNCHRONOUS or
27
                    -- an integer from 0 to 15
28
                    DFS_FREQUENCY_MODE => "LOW", -- HIGH or LOW frequency mode for frequency synthesis
29
                    DLL_FREQUENCY_MODE => "LOW", -- LOW, HIGH, or HIGH_SER frequency mode for DLL
30
                    DUTY_CYCLE_CORRECTION => TRUE, -- Duty cycle correction, TRUE or FALSE
31
                    FACTORY_JF => X"F0F0", -- FACTORY JF Values Suggested to be set to X"F0F0"
32
                    PHASE_SHIFT => 0, -- Amount of fixed phase shift from -255 to 1023
33
                    SIM_DEVICE => "VIRTEX5", -- Set target device, "VIRTEX4" or "VIRTEX5"
34
                    STARTUP_WAIT => FALSE)
35
      port map (    clkin=>clk_in,
36
                    rst=>reset,
37
                    clk0=>s_75MHz);
38
   ...

von Sandra (Gast)


Lesenswert?

muss natürlich

clk0 => s_25MHz);

sein

von Sandra (Gast)


Lesenswert?

Ich hab mir die neuerste Version vom PDF besorgt und die Entity 
weggegeben.

Jetzt steht nur noch das drinnen
1
   
2
   XLXI_19 : DCM_BASE
3
      generic map ( CLKDV_DIVIDE => 4.0, -- Divide by: 1.5,2.0,2.5,3.0,3.5,4.0,4.5,5.0,5.5,6.0,6.5
4
                   -- 7.0,7.5,8.0,9.0,10.0,11.0,12.0,13.0,14.0,15.0 or 16.0
5
                   CLKFX_DIVIDE => 1, -- Can be any integer from 1 to 32
6
                   CLKFX_MULTIPLY => 4, -- Can be any integer from 2 to 32
7
                   CLKIN_DIVIDE_BY_2 => FALSE, -- TRUE/FALSE to enable CLKIN divide by two feature
8
                   CLKIN_PERIOD => 10.0, -- Specify period of input clock in ns from 1.25 to 1000.00
9
                   CLKOUT_PHASE_SHIFT => "NONE", -- Specify phase shift mode of NONE or FIXED
10
                   CLK_FEEDBACK => "1X", -- Specify clock feedback of NONE or 1X
11
                   DCM_PERFORMANCE_MODE => "MAX_SPEED", -- Can be MAX_SPEED or MAX_RANGE
12
                   DESKEW_ADJUST => "SYSTEM_SYNCHRONOUS", -- SOURCE_SYNCHRONOUS, SYSTEM_SYNCHRONOUS or
13
                   -- an integer from 0 to 15
14
                   DFS_FREQUENCY_MODE => "LOW", -- LOW or HIGH frequency mode for frequency synthesis
15
                   DLL_FREQUENCY_MODE => "LOW", -- LOW, HIGH, or HIGH_SER frequency mode for DLL
16
                   DUTY_CYCLE_CORRECTION => TRUE, -- Duty cycle correction, TRUE or FALSE
17
                   FACTORY_JF => X"F0F0", -- FACTORY JF Values Suggested to be set to X"F0F0"
18
                   PHASE_SHIFT => 0, -- Amount of fixed phase shift from -255 to 1023
19
                   STARTUP_WAIT => FALSE) -- Delay configuration DONE until DCM LOCK, TRUE/FALSE
20
      port map (    clkin=>clk_in,
21
                    rst=>reset,
22
                    clkfb=>s_25MHz,
23
                    clk0=>s_25MHz);

In der Hirarchie steht´s immer noch nciht. Auch wenn ich das Design 
simuliere steht das Ding.

von Duke Scarring (Gast)


Lesenswert?

Sandra schrieb:
> In der Hirarchie steht´s immer noch nciht.
Muss ja auch nicht, oder?! Kommt ja auch quasi als Blackbox bei 
Translate rein.

> Auch wenn ich das Design
> simuliere steht das Ding.
Womit simulierst Du?
Wie sieht das Logfile der Simulation aus?
Sind da Warnungen über nicht-instanziierte Komponenten drin?

Wie sieht Dein Reset-Signal aus?
Hast Du die Reset-Polarität beachtet?

Ich würde mal alles unnötige weglassen und es mal ungefähr so probieren:
1
dcm_instance_0: DCM_BASE
2
    generic map (
3
        CLKDV_DIVIDE   => 4.0,
4
        CLKFX_DIVIDE   => 4,
5
        CLKFX_MULTIPLY => 3,
6
        CLKIN_PERIOD   => 10.0,
7
        CLK_FEEDBACK   => "1X"
8
    )
9
    port map (
10
        clkin => clk_100,
11
        rst   => reset,
12
        clkfb => clk_fb_buf,
13
        clk0  => clk_fb,
14
        --
15
        clkdv => clk_25,
16
        clkfx => clk_75 
17
    );
18
19
bufg_instance_0: bufg
20
    port map (
21
        i => clk_fb,
22
        o => clk_fb_buf
23
    );

Duke

von Sandra (Gast)


Lesenswert?

Ich hab wie Du gesagt hast alles unnötige weggelasse (ich habs auf open 
gelegt). Leider kommt bei der Sim immer noch nichts an.

Ich simuliere mit dem ISE Simulator
Keine Warnungen.
Reset ist laut PDF high active genau wie der Rest des Designs.
1
library IEEE;
2
use IEEE.STD_LOGIC_1164.ALL;
3
Library UNISIM;
4
use UNISIM.vcomponents.all;
5
6
7
entity clk_25 is
8
    Port (   clkin : in std_logic;
9
             clk0  : out std_logic;
10
             --clkfb : in std_logic;
11
             rst   : in std_logic);
12
end clk_25;
13
14
architecture Behavioral of clk_25 is
15
16
signal clkfb_buf : std_logic;
17
signal clkfb : std_logic;
18
19
begin
20
21
22
23
DCM_BASE_inst : DCM_BASE
24
25
generic map (
26
CLKDV_DIVIDE => 4.0, -- Divide by: 1.5,2.0,2.5,3.0,3.5,4.0,4.5,5.0,5.5,6.0,6.5
27
-- 7.0,7.5,8.0,9.0,10.0,11.0,12.0,13.0,14.0,15.0 or 16.0
28
CLKFX_DIVIDE => 1, -- Can be any integer from 1 to 32
29
CLKFX_MULTIPLY => 4, -- Can be any integer from 2 to 32
30
CLKIN_DIVIDE_BY_2 => FALSE, -- TRUE/FALSE to enable CLKIN divide by two feature
31
CLKIN_PERIOD => 10.0, -- Specify period of input clock in ns from 1.25 to 1000.00
32
CLKOUT_PHASE_SHIFT => "NONE", -- Specify phase shift mode of NONE or FIXED
33
CLK_FEEDBACK => "1X", -- Specify clock feedback of NONE or 1X
34
DCM_PERFORMANCE_MODE => "MAX_SPEED", -- Can be MAX_SPEED or MAX_RANGE
35
DESKEW_ADJUST => "SYSTEM_SYNCHRONOUS", -- SOURCE_SYNCHRONOUS, SYSTEM_SYNCHRONOUS or
36
-- an integer from 0 to 15
37
DFS_FREQUENCY_MODE => "LOW", -- LOW or HIGH frequency mode for frequency synthesis
38
DLL_FREQUENCY_MODE => "LOW", -- LOW, HIGH, or HIGH_SER frequency mode for DLL
39
DUTY_CYCLE_CORRECTION => TRUE, -- Duty cycle correction, TRUE or FALSE
40
FACTORY_JF => X"F0F0", -- FACTORY JF Values Suggested to be set to X"F0F0"
41
PHASE_SHIFT => 0, -- Amount of fixed phase shift from -255 to 1023
42
STARTUP_WAIT => FALSE) -- Delay configuration DONE until DCM LOCK, TRUE/FALSE
43
port map (
44
CLK0 => clkfb, -- 0 degree DCM CLK ouptput
45
CLK180 => open, -- 180 degree DCM CLK output
46
CLK270 => open, -- 270 degree DCM CLK output
47
CLK2X => open, -- 2X DCM CLK output
48
CLK2X180 => open, -- 2X, 180 degree DCM CLK out
49
CLK90 => open, -- 90 degree DCM CLK output
50
CLKDV => open, -- Divided DCM CLK out (CLKDV_DIVIDE)
51
CLKFX => open, -- DCM CLK synthesis out (M/D)
52
CLKFX180 => open, -- 180 degree CLK synthesis out
53
LOCKED => open, -- DCM LOCK status output
54
CLKFB => CLKFB_buf, -- DCM clock feedback
55
CLKIN => CLKIN, -- Clock input (from IBUFG, BUFG or DCM)
56
RST => RST -- DCM asynchronous reset input
57
);
58
59
60
61
bufg_instance_0: bufg
62
    port map (
63
        i => clkfb,
64
        o => CLKFB_buf
65
    );
66
67
clk0 <= clkfb;
68
69
end Behavioral;

von Sandra (Gast)


Lesenswert?

Auch die Version bei der ich alles nicht auf open setze sondern wirklich 
rauslösche geht nicht.
1
library IEEE;
2
use IEEE.STD_LOGIC_1164.ALL;
3
Library UNISIM;
4
use UNISIM.vcomponents.all;
5
6
7
entity clk_x is
8
    Port (   clkin : in std_logic;
9
             clk25  : out std_logic;
10
             clk75 : out std_logic;
11
             --clkfb : in std_logic;
12
             rst   : in std_logic);
13
end clk_x;
14
15
architecture Behavioral of clk_x is
16
17
signal clkfb_buf : std_logic;
18
signal clkfb : std_logic;
19
20
begin
21
22
23
24
DCM_BASE_inst : DCM_BASE
25
26
generic map (
27
CLKDV_DIVIDE => 4.0, -- Divide by: 1.5,2.0,2.5,3.0,3.5,4.0,4.5,5.0,5.5,6.0,6.5
28
-- 7.0,7.5,8.0,9.0,10.0,11.0,12.0,13.0,14.0,15.0 or 16.0
29
CLKFX_DIVIDE => 4, -- Can be any integer from 1 to 32
30
CLKFX_MULTIPLY => 3, -- Can be any integer from 2 to 32
31
CLKIN_PERIOD => 10.0, -- Specify period of input clock in ns from 1.25 to 1000.00
32
CLK_FEEDBACK => "1X" -- Specify clock feedback of NONE or 1X
33
) -- Delay configuration DONE until DCM LOCK, TRUE/FALSE
34
port map (
35
CLK0 => clkfb, -- 0 degree DCM CLK ouptput
36
CLKFX => clk75, -- DCM CLK synthesis out (M/D)
37
CLKFB => CLKFB_buf, -- DCM clock feedback
38
CLKIN => CLKIN, -- Clock input (from IBUFG, BUFG or DCM)
39
RST => RST -- DCM asynchronous reset input
40
);
41
42
43
44
bufg_instance_0: bufg
45
    port map (
46
        i => clkfb,
47
        o => CLKFB_buf
48
    );
49
50
clk25 <= clkfb;
51
52
end Behavioral;

von Sandra (Gast)


Lesenswert?

Ein Eingangsbuffer bringt auch nichts. Aber der funktioniert wenigstens.
1
CLKIN1_IBUFG_INST : IBUFG
2
   port map (I=>CLKIN,
3
             O=>CLKIN1_IBUFG);

von Duke Scarring (Gast)


Angehängte Dateien:

Lesenswert?

Mach mal einen Screenshot vom Start der Simulation.
Der Reset muss mindestens drei Takte lang auf '1' sein.

Sandra schrieb:
> Ich simuliere mit dem ISE Simulator
> Keine Warnungen.
Da liegt der Hund woanders begraben. Der angehängt Code geht jedenfalls.

Duke

von Sandra (Gast)


Lesenswert?

> Der Reset muss mindestens drei Takte lang auf '1' sein.

Das wars!!! DANKE!!!
Jetzt geht alles (zumindest in der Simulation).

Du bist genial!

Bussi
Sandy

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.