hi, ich habe zwei verschiedene Takte in meinem System. Gibts App Notes oder Whitepapers wo beschrieben wird wie man sinnvoll zwei Takte auffeinander synchronisiert ? .. ich habe bei Xilinx nichts in dir Richtung gefunden .. Danke Chris
Na, versuch es mal hiermit: http://www.xilinx.com/xlnx/xweb/xil_tx_display.jsp?sGlobalNavPick=&sSecondaryNavPick=&category=-1211670&iLanguageID=1&multPartNum=1&sTechX_ID=pa_clock_bound Gruß Christian
Hi, dazu haette ich auch eine Frage. In einem Design moechte ich zwei CPLD's XC9532 nutzen, weil diese im TQFP Gehaeuse zukriegen sind. Einer der beiden CPLD's ist ein Memory Controller fuer asynchronen SRAM. Der zweite CPLD wird zum sampeln von den Daten genutzt. Sollte ich nun beide CPLD's an einem Quarzoszillator parallel anschliessen oder sollte ich in den einem CPLD den Takt fuer den zweiten CPLD erzeugen? Was ist besser um Clock Skew's zuvermeiden? Gruß, Dirk PS.: Wieso ich kein XC9572 nutze liegt daran das diese nur im PLCC zukriegen sind. Gruß, Dirk
"Sollte ich nun beide CPLD's an einem Quarzoszillator parallel anschliessen oder sollte ich in den einem CPLD den Takt fuer den zweiten CPLD erzeugen? " Ich würde letzteres machen. Die Daten basieren ja auf dem internen Takt der ersten CPLDs, daher würde ich diesen, internen Takt für die Weiterverarbeitung nutzen. Entscheidend ist ja nicht so sehr der Skew zwischen den beiden Takten, sondern der zu Deinen Daten, die Du übertragen willst. Gruss Axel
hallo, danke erstmal. Bei mir siehts ja so aus das ich die Takte aufeinander synchronisieren will. ( und nicht die Daten aus einer Taktwelt in eine andere Taktwelt übertragen ) bei mir ist der Fall so das ich ein langsamen Takt auf einen schnellen synchronieren will. ( langsam , schnell heißt der der schnelle Takt >> 2* langsamer Takt ist ) im ersten schritt habe ich mir das ganz einfach so vorgestellt:
1 | process(CLK_Fast) |
2 | begin
|
3 | if rising_edge(CLK_Fast)then |
4 | CLK_Slow_sync <= CLK_Slow; |
5 | end if ; |
6 | end process; |
reicht das ? oder soll ich 2 FF hintereinander machen ? etwa so
1 | .
|
2 | .
|
3 | CLK_Fast : in std_logic; |
4 | CLK_Slow : in std_logic; |
5 | OUTPUT : out std_logic; |
6 | .
|
7 | .
|
8 | .
|
9 | signal : CLK_Slow_sync std_logic; |
10 | signal : CLK_Slow_sync std_logic; |
11 | |
12 | |
13 | process(CLK_Fast) |
14 | begin
|
15 | if rising_edge(CLK_Fast) then |
16 | CLK_Slow_sync <= CLK_Slow; |
17 | OUTPUT <= CLK_Slow_sync; |
18 | end if ; |
19 | end process; |
Ich würde die zweite Variante nehmen. Da haben metastabile Zustände zwischen den beiden FF Zeit sich zu "entscheiden". Gruss Axel
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.