Forum: FPGA, VHDL & Co. Grundfrage über Timing Constraints


von Tomy (Gast)


Lesenswert?

Hallo zusammen,

habe ich ein Timing Constraints Dokument im Netz gefunden.

http://www.alterawiki.com/uploads/3/3f/TimeQuest_User_Guide.pdf

Meine Frage ist: Was ist genau "incoming clock" für den Befehl 
"create_clock"?

Zb. Mein Design hat einen Oszillator 50MHz, der in den FPGA reingeht. 
Ich nutze die Clock als Sys_Clk_i.
DeltaSigma ADC hat 10MHz Clock (DelSig_Clk_i), die ich für 
Flankeerkennung (mit der Sys_Clk_i) nutze.
1
-- Steigende Flanke Pulse
2
Is_DelSig_Clk_Rising_s <= '1' WHEN DelSig_Clk_Old_r = '0' AND DelSig_Clk_r = '1' ELSE '0';
3
-- Valid Data Process
4
PROCESS
5
BEGIN
6
  WAIT UNTIL RISING_EDGE(Sys_Clk_i);
7
  DelSig_Clk_r <= DelSig_Clk_i; -- Einsynchronierung
8
  DelSig_Clk_Old_r <= DelSig_Clk_r; -- Update
9
  IF Is_DelSig_Clk_Rising_s = '1' THEN
10
    DelSigDataValid_r <= DelSigData_i;
11
  END IF;
12
END PROCESS;

Ist die DelSig_Clock_i hier auch als "incoming clock" zu betrachten?

Vielen Dank im Voraus und schönes Pfingsten!

Lg Tomy

von Tomy (Gast)


Lesenswert?

keine Idee?

von Jan M. (mueschel)


Lesenswert?

Du brauchst eine constraint für jeden Takt der von außen in den FPGA 
hineingeht. Ob das irgendwo in den 133 Seiten deines pdf steht weiß ich 
nicht. Also: wenn dein 10 MHz Takt von außen in den FPGA hineingeht, 
brauchst du eine Constraint dafür.

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


Lesenswert?

Tomy schrieb:
> Ist die DelSig_Clock_i hier auch als "incoming clock" zu betrachten?
Woher kommt dieser "Takt"?
Wer erzeugt den?

BTW:
Der Code liest sich abartig holprig wegen der vielen Unterstriche. Das 
Auge ersetzt die durch ein Leerzeichen und man muss EXTREM aufpassen, wo 
der Name beginnt und endet. Die unnötigen Kürzel _r, _i und _s machen 
die Übersichtlichkeit nicht besser. GROSS GESCHRIEBENE TOKENS sind wegen 
des Syntax-Highlightings aktueller Editoren unnötig. Wichtig am 
Delta-Sigma-ADC ist auch nicht, dass es ein Delta-Sigma, sondern ein 
ADC ist. Die Kommentare sind unnötig, mit einer leichten Tendenz in 
Richtung "falsch". Ich hoffe, dass ich niemals solchen Code bekomme, 
überarbeiten und verstehen muss.

Wer kritisiert soll auch Änderungs- und Verbesserungsvorschläge bringen. 
Ich hätte das so geschrieben:
1
signal AdcClkSR std_logic_vector(1 downto 0);
2
3
4
process begin
5
   wait until rising_edge(SysClk);
6
   AdcClkSR <= AdcClkSR(0)&AdcClk; 
7
   if AdcClkSR="01" then -- steigende Flanke
8
      AdcDataValid <= AdcData;
9
   end if;
10
end process;

von Tomy (Gast)


Lesenswert?

danke erstmals!

Lothar Miller schrieb:
> Woher kommt dieser "Takt"?
> Wer erzeugt den?

Die 10MHz Clock ist der Clockausgang des DeltaSigma-ADCs, also die geht 
rein in den FPGA (normaler IO-Pin, nicht dedizierte Clock Pin).

Außerdem danke für deinen Code-Segment:)

Jan M. schrieb:
> Du brauchst eine constraint für jeden Takt der von außen in den FPGA
> hineingeht. Ob das irgendwo in den 133 Seiten deines pdf steht weiß ich
> nicht. Also: wenn dein 10 MHz Takt von außen in den FPGA hineingeht,
> brauchst du eine Constraint dafür.

Aber ich nutze diese 10Mhz-Clock nur für seine Flankenerkennung, nicht 
als FlipFlop-Clock Port.

Muss ich auch als "Clock" für Timing-Constraints betrachten?

von Jan M. (mueschel)


Lesenswert?

Tomy schrieb:
> Aber ich nutze diese 10Mhz-Clock nur für seine Flankenerkennung, nicht
> als FlipFlop-Clock Port.
>
> Muss ich auch als "Clock" für Timing-Constraints betrachten?

Wenn der von dir gepostete Code das einzige ist, was du mit dieser 
"Clock" machst - dann ist es nur ein einfaches Signal, das im FPGA 
ausgewertet wird, aber kein Taktsignal. Dementsprechend brauchst du in 
diesem Fall auch keine Constraints setzen.

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.