mikrocontroller.net

Forum: FPGA, VHDL & Co. Probleme bei Contraints mit Clock im Spartan 6 Board


Autor: Chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

folgendes, ich habe mir mit dem Clock_Divider Core drei Clocks erzeugt. 
Nun habe ich im Anschluss die Constraints in der ucf vorgenommen. Und 
zwar so:

NET "SYSTEM_CLK_200MHZ_P"    LOC = "K15";
NET"SYSTEM_CLK_200MHZ_N"  LOC = "K16";
NET "CLK_FOR_ADC_20MHZ"    LOC = "T9";

Leider bekomme ich folgende Fehlermeldung:

WARNING:Place:1137 - This design is not guaranteed to be routable! This 
design contains a global buffer instance, <Component_1/clkout3_buf>, 
driving thenet, <CLK_FOR_ADC_20MHZ_OBUF>, that is driving the following 
(first 30) non-clock source pins.< PIN: CLK_FOR_ADC_20MHZ.O; >This is 
normally an ERROR but the CLOCK_DEDICATED_ROUTE constraint was applied 
on COMP.PIN
<Component_1/clkout3_buf.O> allowing your design to continue. This 
constraint disables all clock placer rules related to the specified 
COMP.PIN.

Ich denke es liegt daran, dass der PIN T9 nicht für einen Clock 
ausgelegt ist. Wie kann ich diese Fehlermeldung/ Warning nun umgehen. 
Wie definierte ich Clock PINs in der ucf File?

Danke für eure Hilfe.

Chris

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was ist "CLK_FOR_ADC_20MHZ" für ein Netz?
Zeig doch mal den passenden Code...

Autor: Chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

danke für die schnelle Antwort. Hier die Top_Level_Entity. Inklusive der 
Instanz des Dividers.

entity Main is

Port   ( SAMPLING_DATA_FROM_ADC: in  STD_LOGIC_VECTOR (15 downto 0);
SQUARE_WAVE_OUTPUT: out STD_LOGIC;
CLK_FOR_ADC_20MHZ  : out std_logic;
SYSTEM_CLK_200MHZ_P  : in   std_logic;
SYSTEM_CLK_200MHZ_N  : in   std_logic

          );
end Averaging_Main;

architecture Behavioral of Main is

component CLK_Divider1
port
 (
  CLK_IN1_P         : in     std_logic;
  CLK_IN1_N         : in     std_logic;
  CLK_OUT1          : out    std_logic;
  CLK_OUT2          : out    std_logic;
  CLK_OUT3          : out    std_logic
 );
end component;

begin
  Component_1:  Clk_Divider1
  port map
        (CLK_IN1_P          => SYSTEM_CLK_200MHZ_P,
         CLK_IN1_N          => SYSTEM_CLK_200MHZ_N,
         CLK_OUT1           => CLOCK_100MHZ,
         CLK_OUT2           => CLOCK_20MHZ,
         CLK_OUT3   => CLK_FOR_ADC_20MHZ);

Ich möchte quasi den CLK_FOR_ADC_20MHZ auf den PIN T9 legen, wenn das 
geht.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Getreu dem Motto "Drill Deep": Was passiert im "CLK_Divider1"?

Autor: Chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich teile den Quarz Systemtakt 200MHz einmal auf 100MHz (CLK_OUT1) und 
zweimal (CLK_OUT2 und CLK_OUT3) auf 20MHz runter, das ist dann auch mein 
CLK_FOR_ADC_20MHZ...

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Für Clock-Ausgänge, die den FPGA verlassen sind bei Xilinx 
ODDR-FlipFlops strengstens empfohlen. Siehe UserGuide. Dann klappts 
auch, weil der CLK wirklich nur auf den Takt-Eingang von FlipFlops geht.

Autor: Chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke, das wusste ich nicht. Wie würde das dann konkret aussehen? Ich 
lege an das ODER-FF einmal logisch '1' an und den Takt, hab ich das 
richtig verstanden?

Autor: Chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ach ja, jetzt habs ichs im USER Guide gesehen- ODDR2 ist mit 
einzubinden. Jetzt dämmerts, danke für den Tipp...

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Chris schrieb:
> Ich teile den Quarz Systemtakt 200MHz einmal auf 100MHz (CLK_OUT1) und
> zweimal (CLK_OUT2 und CLK_OUT3) auf 20MHz runter
Getreu dem Motto "Drill Deep": Wie teilst du den Takt herunter?

Hoffentlich nicht einfach so mit einem Zähler... :-o
Zum definierten Taktteilen gibt es Clock-Manager.

Autor: Chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja klar, mach mir doch nicht umsonst Arbeit ;-)

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und wieso 2 mal 20 MHz? Haben die eine andere Phasenlage? Ansonsten 
reichts ja, die über 2 ODDR2 auszugeben.

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.