Forum: FPGA, VHDL & Co. Spartan 3: Clock an nicht GCK pin.


von Dimi (Gast)


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

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


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.

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.