Clock Leitung auf FlipFlop

Gast #1834554
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.
Gast
> 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.
Gast
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.
Gast
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.
Angehängte Dateien:
Gast
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.
Gast
dann:

SIGNAL1 <= CLK1 ; --nebenläufige anweisung



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

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.