Hallöchen, ich hab ein Problem mit den DCMs von Xilinx. Mein Eingangssignal hat eine Frequenz von 10Mhz und geht über einen IBUFG an den DCM_BASE. Im Virtex4 Datasheet steht nun aber ("http://www.xilinx.com/support/documentation/data_sheets/ds302.pdf" ,p.38 Table 46), dass mein FPGA (FX20 -11) am CLKIN (using DLL outputs) mindestens 19Mhz anliegen haben muss. Ich habs getestet und es geht auch mit mind. 14 MHz. Bei 13 MHz geht der DCM allerdings nicht mehr in Locked über. Jetzt wirds aber interessant... In der nächsten Zeile der Tabelle, wo steht CLKIN (using DFS outputs only), ist eine Frequenzrange von 1 bis 32 MHz angegeben. Wie muss ich meinen DCM konfigurieren, damit ich diese niedrigen Frequenzen (10MHz) am ClockIn anlegen kann? Vielen Dank für Eure Antworten im Vorraus! Mein Code für V4 xc4vfx20-11ff672: library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; Library UNISIM; use UNISIM.vcomponents.all; entity Toplevel is port( SysRst_pin : in std_logic; SysRstPressed_pin : out std_logic; ClkIn_pin : in std_logic; Clk0Out_pin : out std_logic; ClkFxOut_pin : out std_logic; ClkLocked_pin : out std_logic ); end Toplevel; architecture Behavioral of Toplevel is -- Constants constant Low : std_logic := '0'; -- Signals signal SysRst : std_logic; signal SysRst_Temp : std_logic; signal ClkIn : std_logic; signal Clk0ToBufg : std_logic; signal BufgToClkfb : std_logic; signal ClkFXOutToOBUF : std_logic; signal ClkLocked : std_logic; -- Constraints --attribute LOC : string; -- attribute LOC of DCM_ADV_inst : label is "DCM_ADV_X0Y2"; begin --Reset In IBUF_SysRst : IBUF generic map ( IBUF_DELAY_VALUE => "0", -- Specify the amount of added input delay for buffer, "0"-"16" (Spartan-3E/3A only) IFD_DELAY_VALUE => "AUTO", -- Specify the amount of added delay for input register, "AUTO", "0"-"8" (Spartan-3E/3A only) IOSTANDARD => "DEFAULT") port map ( O => SysRst_Temp, -- Buffer output I => SysRst_pin -- Buffer input (connect directly to top-level port) ); SysRst <= not(SysRst_Temp); -- Clock In IBUFG_ClkIn : IBUFG generic map ( IBUF_DELAY_VALUE => "0", -- Specify the amount of added input delay for buffer, "0"-"16" (Spartan-3E/3A only) IOSTANDARD => "LVCMOS25") port map ( O => ClkIn, -- Clock buffer output I => ClkIn_pin -- Clock buffer input (connect directly to top-level port) ); -- DCM_ADV: Digital Clock Manager Circuit -- Virtex-4/5 -- Xilinx HDL Language Template, version 9.2.4i DCM_ADV_inst : DCM_BASE generic map ( CLKDV_DIVIDE => 2.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 -- 7.0,7.5,8.0,9.0,10.0,11.0,12.0,13.0,14.0,15.0 or 16.0 CLKFX_DIVIDE => 4, -- Can be any interger from 1 to 32 CLKFX_MULTIPLY => 4, -- Can be any integer from 2 to 32 CLKIN_DIVIDE_BY_2 => FALSE, -- TRUE/FALSE to enable CLKIN divide by two feature CLKIN_PERIOD => 100.0, -- Specify period of input clock in ns from 1.25 to 1000.00 CLKOUT_PHASE_SHIFT => "NONE", -- Specify phase shift mode of NONE, FIXED, -- VARIABLE_POSITIVE, VARIABLE_CENTER or DIRECT CLK_FEEDBACK => "NONE", -- Specify clock feedback of NONE or 1X DCM_AUTOCALIBRATION => TRUE, -- DCM calibrartion circuitry TRUE/FALSE DCM_PERFORMANCE_MODE => "MAX_RANGE", -- Can be MAX_SPEED or MAX_RANGE DESKEW_ADJUST => "SYSTEM_SYNCHRONOUS", -- SOURCE_SYNCHRONOUS, SYSTEM_SYNCHRONOUS or -- an integer from 0 to 15 DFS_FREQUENCY_MODE => "LOW", -- HIGH or LOW frequency mode for frequency synthesis DLL_FREQUENCY_MODE => "LOW", -- LOW, HIGH, or HIGH_SER frequency mode for DLL DUTY_CYCLE_CORRECTION => TRUE, -- Duty cycle correction, TRUE or FALSE FACTORY_JF => X"F0F0", -- FACTORY JF Values Suggested to be set to X"F0F0" PHASE_SHIFT => 0, -- Amount of fixed phase shift from -255 to 1023 STARTUP_WAIT => FALSE) -- Delay configuration DONE until DCM LOCK, TRUE/FALSE port map ( CLK0 => open,--Clk0ToBufg, -- 0 degree DCM CLK output CLK180 => open, -- 180 degree DCM CLK output CLK270 => open, -- 270 degree DCM CLK output CLK2X => open, -- 2X DCM CLK output CLK2X180 => open, -- 2X, 180 degree DCM CLK out CLK90 => open, -- 90 degree DCM CLK output CLKDV => open, -- Divided DCM CLK out (CLKDV_DIVIDE) CLKFX => ClkFXOutToOBUF, -- DCM CLK synthesis out (M/D) CLKFX180 => open, -- 180 degree CLK synthesis out LOCKED => ClkLocked, -- DCM LOCK status output CLKFB => BufgToClkfb, -- DCM clock feedback CLKIN => ClkIn, -- Clock input (from IBUFG, BUFG or DCM) RST => SysRst -- DCM asynchronous reset input ); -- Clock Feedback Buffer BUFG_BufgToClkfb : BUFG port map ( O => BufgToClkfb, -- Clock buffer output I => ClkFXOutToOBUF--Clk0ToBufg -- Clock buffer input ); -- Clock Out OBUF_Clk0Out_pin : OBUF generic map ( DRIVE => 12, IOSTANDARD => "LVCMOS25", SLEW => "FAST") port map ( O => Clk0Out_pin, -- Buffer output (connect directly to top-level port) I => BufgToClkfb -- Buffer input ); -- ClockDV Out OBUF_ClkDvOut_pin : OBUF generic map ( DRIVE => 12, IOSTANDARD => "LVCMOS25", SLEW => "FAST") port map ( O => ClkFxOut_pin, -- Buffer output (connect directly to top-level port) I => ClkFXOutToOBUF -- Buffer input ); -- DCM Locked Out OBUF_ClkLocked_pin : OBUF generic map ( DRIVE => 12, IOSTANDARD => "DEFAULT", SLEW => "SLOW") port map ( O => ClkLocked_pin, -- Buffer output (connect directly to top-level port) I => ClkLocked -- Buffer input ); -- DCM SysRstPressed Out OBUF_SysRstPressed_pin : OBUF generic map ( DRIVE => 12, IOSTANDARD => "DEFAULT", SLEW => "SLOW") port map ( O => SysRstPressed_pin, -- Buffer output (connect directly to top-level port) I => SysRst -- Buffer input ); end Behavioral;
DLL und DFS ist nicht das selbe, wenn du DLL Ausgänge in der DCM verwendest gelten automatisch deren Grenzen. Wenn die DFS-Grenzen gelten sollen dürfen auch nur DFS-Ausgänge benutzt werden. Hatte das auch schon, das Datenblatt hilft weiter.
Alles klaro... ich versuch mal mein Glück... Danke
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.