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


von Chris (Gast)


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

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


Lesenswert?

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

von Chris (Gast)


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.

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


Lesenswert?

Getreu dem Motto "Drill Deep": Was passiert im "CLK_Divider1"?

von Chris (Gast)


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...

von Christian R. (supachris)


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.

von Chris (Gast)


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?

von Chris (Gast)


Lesenswert?

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

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


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.

von Chris (Gast)


Lesenswert?

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

von Christian R. (supachris)


Lesenswert?

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

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.