www.mikrocontroller.net

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


Autor: Reto B. (schnuber)
Datum:

Bewertung
0 lesenswert
nicht 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;

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

Bewertung
0 lesenswert
nicht 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.

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Reto B. (schnuber)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Reto B. (schnuber)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Reto B. (schnuber)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja ich brauche feinere phasenschritte als 90°. Ok, ich versuchs mal

Autor: Reto B. (schnuber)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.