Spartan 3: Clock an nicht GCK pin.

Gast #1752130
Lesenswert?

Hallo Community,

in meinem Projekt mit Spartan 3 und AVR werden 2 Clocks verwendet:

50MHz Oszillator hängt am GCK Pin
Zweite Clock ist SCK (verwende SPI) von AVR hängt am normalen i/o Pin 
(kein GCK). Bis jetzt habe ich so gemacht, das die Flanke von SCK in so 
einem Process erkannt wird:
1
process (SCK50MHZ)
2
begin
3
   if rising_edge(CLK50MHZ)
4
      LAST_SCK <= SCK;
5
      SCK_RIGING_EDGE <= '0';
6
      if LAST_SCK = '0' and SCK = '1' then
7
         SCK_RISING_EDGE <= '1';
8
      end if;
9
   end if;
10
end process;

Gibt es irgentwelche Nachteile wenn ich SCK als Clock direkt abfragen 
werde:
1
process (SCK)
2
begin
3
   if rising_edge(SCK)
4
      ...
5
      ...
6
      ...
7
   end if;
8
end process;

MfG aus Westerwald
Moderator (Firma: Titel) Persönliche Seite #1752165
Lesenswert?

> Bis jetzt habe ich so gemacht, das die Flanke von SCK in so
> einem Process erkannt wird:
Das ist grenzwertig. Da fehlt noch eine FF-Stufe zum Einsynchronisieren.

> Gibt es irgentwelche Nachteile wenn ich SCK als Clock direkt abfragen
> werde:
Nein, aber du mußt dir Gedanken machen, wie du die Daten in deine andere 
Taktdomäne sicher hinüberbringst. Ich mache das z.B. über das 
Einsynchronisieren des Slave-Select-Eingangs. Wenn der inaktiv und 
einsynchronisiert ist, dann sind die empfangenen Daten garantiert stabil 
und können übernommen werden.

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