Forum: FPGA, VHDL & Co. Clock Leitung auf FlipFlop


von Johann (Gast)


Lesenswert?

Ich möchte einen Flip Flop im FPGA benutzen. Dies hat ja bekanntlich 
einen D-Eingang und einen Clock-Eingang.

Auf den Clock-Eingang gebe ich einen Clock der so ca. 200MHz besitz. Auf 
den D-Eingang möchte ich ebenfalls einen Clock geben der auch 200MHz 
besitzt.

Da sich die Phasenlage der beiden Clocks um 90° unterscheidet, erhalte 
ich folgendes 1 als Ergebnis:

Wenn die Phasenlaege der beiden Clocks sich um 180° unterscheidet, dann 
erhalte ich als Ergebnis 0.

Nun zu meiner Frage. Laut Datenblatt von Xilinx ist TIDOCK/TIOCKD --> D 
pin setup / Hold with respect to CLK without Delay 0,39ns (bei einem 
Virtex 5 Speedgrade -1)

1.
Bedeutet dies nun das das Signal nur 0.39ns vor dem Clock stabiel 
anliegen muss und 0.39ns nach der ansteigenden Flanke gehalten werden 
muss?


2.
Ich kann mir vorstellen das ISE eine Fehlermeldung ausgiebt, wenn ich 
den ClockBuffer direkt mit dem FlipFlop verbinde. Ich benötige dies um 
zu erkennen ob die Phasenlage 180° betrgägt oder 90°


Die Daten habe ich aus der Tabelle 60 Seite 40.

von Morin (Gast)


Lesenswert?

> Wenn die Phasenlaege der beiden Clocks sich um 180° unterscheidet, dann
> erhalte ich als Ergebnis 0.

Wenn ich mich nicht irre, hast du bei 180° einen gleichzeitigen 
Signalwechsel an D und CLK des Registers... das wäre nicht gut.

von Morin (Gast)


Lesenswert?

Nachtrag: Du könntest stattdessen einen "normalen" Datenpfad aus zwei 
Registern hintereinander bauen, die mit den verschiedenen Clocks an CLK 
angesteuert werden. Evtl. eine "kurze" Verzögerung dazwischen (1 CLB 
oder nur Routing-Delay), um Ungenauigkeiten in der Phasenlage 
auszugleichen. Dann gibst du eine 1 auf den Eingang und schaust, wie 
schnell sie "durchwandert". Bei 90° sollte das schneller gehen als bei 
180°. Da kann man auch dem Synthesetool sagen, dass es diesen Pfad bei 
der Timing-Analyse ignorieren soll.

von Johann (Gast)


Angehängte Dateien:

Lesenswert?

Ich habe mich vertan ich meinte 90° und 270°.

Ich habe jetzt folgendes gemacht:

If(CLK_2 Event und ansteigend)then
{
   If(CLK_1 = '1')then
   {
      Phase_90 = '1';
   }
   else
      Phase_90 = '0';
}


Jetzt habe ich halt den CLK_2 im Diagramm der untere Clock als 
Clocksignal. Den CLK_1 gebe ich auf den D-Eingag des Flip Flops.

Nun habe ich jedoch bedenke das es da Probleme gibt, da das CLK_1 Signal 
ja auf der Clock Leitung liegt.

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


Lesenswert?

Johann schrieb:
> Nun habe ich jedoch bedenke das es da Probleme gibt
Warum erwartest du (speziell) da Probleme?
Ich würde die Probleme eher in irgendwelchen Timing-Geschichten 
vermuten. Aber den skizzierten Ansatz bekommt du garantiert zum 
Laufen...

von Johann (Gast)


Lesenswert?

Es funktioniert ja auch. Nur liegen beide CLK-Signale auf 
Clockleitungen. Ich dachte diese Clockleitungen können nicht mit den 
D-Eingang eines FlipFlops verbunden werden, da dies physikalisch nicht 
möglich ist.

von Eismann (Gast)


Lesenswert?

dann:

SIGNAL1 <= CLK1 ; --nebenläufige anweisung



If(CLK_2 Event und ansteigend)then
{
   If(SIGNAL1 = '1')then
   {
      Phase_90 = '1';
   }
   else
      Phase_90 = '0';
}

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.