Forum: FPGA, VHDL & Co. WARNING:Route, Spartan3


von Reto B. (schnuber)


Lesenswert?

Hallo
Ich brauche für meine Schaltung ein Clock und ein dazue 
phasenverschobener Clock, welcher ich mit der DCM erzeuge. Um meine 
Schaltung zu clocken verwende ich den 'clk_Filt_100M' und der 
phasenverschobene clock heisst 'clk_OutReg_100M'. Letztere brauche ich 
um die Daten aus dem FPGA zu clocken. Doch der untenstehende Code 
erzeugt das Warning:

"WARNING:Route - CLK Net:clk_Filt_100M is being routed on general 
routing resources. Please consider using a dedicated
   clocking routing resource. For more information on clock routing 
resources, see the target architecture's user guide."

Ich habe dazu keine weiteren Hilfestellungen gefunden. Was mache ich 
falsch?

library IEEE;
Library UNISIM;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_SIGNED.ALL;
use UNISIM.vcomponents.all;
Library XilinxCoreLib;

entity DA_Interface is
  Port (
    CLOCK : in  STD_LOGIC;
    RST : in  STD_LOGIC;
    Button0 : in STD_LOGIC;
    Button2 : in STD_LOGIC;
    Led0 : out std_logic;
    BM : out STD_LOGIC;
    I_DATA_POLY5 : out std_logic_vector(13 downto 0);
    Q_DATA_POLY5 : out std_logic_vector(13 downto 0)
  );
end DA_Interface;

architecture Behavioral of DA_Interface is

COMPONENT dcm1
  PORT(
    CLKIN_IN : IN std_logic;
    CLKIN_IBUFG_OUT : OUT std_logic;
    CLK0_OUT : OUT std_logic;
    LOCKED_OUT : OUT std_logic
    );
  END COMPONENT;

signal clk_OutReg_100M : std_logic;
signal lock_dcm1 : std_logic;
signal clk_Filt_100M : std_logic;

begin

process(clk_Filt_100M)
begin
  if (clk_Filt_100M='1' and clk_Filt_100M'event) then
    if lock_dcm1 = '1' then
      Led0 <= Button0 and Button2;
      BM <= Button2;
    end if;
  end if;
end process;


  Inst_dcm1: dcm1 PORT MAP(
    CLKIN_IN => CLOCK,
    CLKIN_IBUFG_OUT => clk_Filt_100M,--has no delay
    CLK0_OUT => clk_OutReg_100M,--has some delay
    LOCKED_OUT => lock_dcm1
  );
end Behavioral;

von René D. (Firma: www.dossmatik.de) (dose)


Lesenswert?

Bei der Verwendung der DCM müssen spezielle Puffer mit verschaltet 
werden.
Es gibt keine direkte Verbindung von der DCM auf eine Clockleitung.

Dafür gibt ist ein Puffer notwendig.

Da gibt es bei Xilinx eine Literatur. User guide oder so ähnliches. Habe 
ich auch nicht gerade bei der Hand.

von Christian R. (supachris)


Lesenswert?

Hast du den DCM mit dem Core-Generator erzeugt? Wenn ja, schau mal, ob 
für die Ausgänge wirklich die BUFG verwendet werden. Ist das alles an 
Code? Gibst du den Clock noch aus dem FPGA aus an einem Pin? Wenn ja, da 
musst du ein ODDR Register verwenden, damit die Clock-Leitungen für das 
Routing dahin benutzt werden können.

von Reto B. (schnuber)


Lesenswert?

Ja Core-Generator. Offenbar liegt der Fehler daran, dass ich 
CLKIN_IBUFG_OUT => clk_Filt_100M gehängt habe. Warum darf man das nicht?

von Christian R. (supachris)


Lesenswert?

Man darf das, aber da hängt normalerweise das Feedback dran. Und soweit 
ich weiß, kann der IBUFG Out nicht in das Clock-Netzwerk einspeisen. 
Macht man auch nicht, sondern man benutzt üblicherweise den CLK0 
Ausgang. Der ist in Phase mit dem Eingang.

von Reto B. (schnuber)


Lesenswert?

Ok, Ich brauche in meiner Schaltung aber einen Clock welcher in Phase 
ist mit dem Input Clock und zusätzlich einer der Phasenverschoben ist. 
Kann ich mit dem CLOCK Input die DCM und sonstige Sachen clocken, oder 
brauche ich jetzt noch eine zusätzliche DCM?

von Christian R. (supachris)


Lesenswert?

Der CLK0 ist doch in Phase mit den Eingangs-Takt, solange du die festen 
Phasenverschiebungen in 90° Schnritten benutzt. Wenn du feinere Stufen 
brauchst, musst du wirklich auf den CLKIN_IBUFG_OUT benutzen, aber dann 
zwischen diesen Ausgang und dem CLK noch einen BUFG setzen.
2. aber schlechtere Möglichkeit ist, den DCM auf "Internal" Taktquelle 
zu stellen und den Takt von außen direkt auf deine Logik und auf den 
DCM. Das ist aber auch nicht sauber und schränkt die Performance des DCM 
ein.

von Reto B. (schnuber)


Lesenswert?

Ja ich brauche feinere phasenschritte als 90°. Ok, ich versuchs mal

von Reto B. (schnuber)


Lesenswert?

Ok, hat funktioniert. Allerdings braucht es denn BUFG nicht, dafür muss 
man dann bei der zweiten DCM darauf achten, dass der Clock nicht nochmal 
über einen IBUFG genommen wird.

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.