2 Clock Domains, signale verbinden

Gast #3015896
Lesenswert?

Hallo, ich habe ein kleines Problem.
Ich habe in Xilinx (Spartan 6) eine DDS welche mit 250Mhz läuft. Das 
funktioniert soweit ganz gut. Nun habe ich ein Register (std_logic) 
welches das CE der DDS steuert. Dieses wird aber vom Memorybus des 
Mikroplaze mit 100 MHz angesteurt. Als es ändert sich nicht permanent, 
vielleicht alle 10sek mal... Das weiß aber das ISE nicht und verursacht 
mir gleich mal ein Timingerror.
hat jemand eine Idee wie ich das problem lösen kann? Irgendwie durch ein 
Zwischenregister oder sowas?
Gast #3024231
Lesenswert?

Maik schrieb:
> hat jemand eine Idee wie ich das problem lösen kann? Irgendwie durch ein
> Zwischenregister oder sowas?

Richtig, set_false_path und ignorieren.

Asynchrone Fehler zu suchen ist die Erfüllung eines Ingenieurs auf 
Abenteuersuche und sind prima geeignet ein Projekt einfach einschlafen 
zu lassen und den Fehler auf irgend welche abstrusen Ursachen zu 
schieben.
Gast #3029657
Lesenswert?

So ich habe jetzt die Timing contrains geschrieben.

NET "clk_250"    TNM = clk_250_grp;
#NET "clk_5"  TNM = bus_clk_grp;
NET "clk_100"    TNM = clk_100_grp;
TIMESPEC TS_false_path1 = FROM clk_250_grp    TO  bus_clk_grp  TIG;
TIMESPEC TS_false_path2 = FROM clk_250_grp    TO  clk_100_grp    TIG;
TIMESPEC TS_false_path3 = FROM bus_clk_grp  TO  clk_250_grp    TIG;
TIMESPEC TS_false_path4 = FROM bus_clk_grp  TO  clk_100_grp    TIG;
TIMESPEC TS_false_path5 = FROM clk_100_grp    TO  clk_250_grp    TIG;
TIMESPEC TS_false_path6 = FROM clk_100_grp    TO  bus_clk_grp  TIG;

Jetzt ist aber das Problem, dass der Compiler immer rummeckert, dass es 
clk_5 nicht gibt. Aber den gibt es. Der Kommt quasi aus dem Microblaze 
heraus und ist ein signal im toplevel. Muss man da eine spezielle Syntax 
beachten?
Gast #3031529
Lesenswert?

Ich glaub ich bin zu doof... ich hab jetzt ewig nach verschiedensten 
Sachen gesucht und jedes mal ist die Syntax anders.

Ich habe mal den Code für das Register angehängt.

Als Fehler erscheint immer das:

------------------------------------------------------------------------ 
---
Paths for end point 
Signal_generator_generate.Signal_generator/DDS_instanz[2].DDS_generate.D 
DS_freq_reg/Mshreg_bkp_data_18  (SLICE_X68Y57.CX), 1 path
 ------------------------------------------------------------------------ 
--------
 Slack (setup path):     1.097ns (requirement - (data path - clock path 
skew + uncertainty))
   Source: 
Signal_generator_generate.Signal_generator/dds_frequency_250_2_18 (FF)
   Destination: 
Signal_generator_generate.Signal_generator/DDS_instanz[2].DDS_generate.D 
DS_freq_reg/Mshreg_bkp_data_18  (FF)
   Requirement:          4.000ns
   Data Path Delay:      5.970ns (Levels of Logic = 0)
   Clock Path Skew:      3.311ns (5.728 - 2.417)
   Source Clock:         clk_250 rising at 16.000ns
   Destination Clock:    register_bus_bram_clk_pin rising at 20.000ns
   Clock Uncertainty:    0.244ns


register_bus_bram_clk_pin is mit clk_bus verbunden.

clk_bus hat 100MHz und clk_250 hat 250MHz.

aals Timing contrains habe ich
NET "clk_250" TNM_NET = FFS "clk_250_grp";
NET "register_bus_bram_clk_pin" TNM_NET = FFS "bus_clk_grp";

TIMESPEC TS_false_path1 = FROM "clk_250_grp"    TO  "bus_clk_grp" TIG;
TIMESPEC TS_false_path3 = FROM "bus_clk_grp"  TO  "clk_250_grp"    TIG;

Sieht evtl jemand, was daran falsch sein könnte?
Eigentlich sollte dann das Timing doch ignoriert werden.
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren