mikrocontroller.net

Forum: FPGA, VHDL & Co. DE0-Board - SDRAM - SDC Constraint File.


Autor: Holger K. (holgerkraehe)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen

Ich würde gerne das SDRAM auf dem DE0 Board mittels Whishbone Interface 
an einen NEO430 anschliessen und einen gewissen Bereich des RAMs als VGA 
Buffer verwenden.

Der NEO430 soll selbst kein RAM des SDRAMs verwenden sondern nur 
Blockram.
Daher soll das SDRAM lediglich als VGA speicher dienen.

Nun die frage:

Ich habe das ganze mal aufgesetzt mit eigenem Controller fürs RAM und 
mit einer PLL mit 180° Phase Shift für den SDRAM Takt. Scheint zu 
funktionieren, soweit ich dies bisher getestet habe (hab bisher nur das 
Memory an sich getestet. Ohne Whishbone etc. )

Kann mir jemand etwas behilflich sein, was die constraints anbelangt?
Ich habe mir schon einige Dokumente und Videos zum Thema angeschaut aber 
bisher noch nicht so richtig herausgefunden, wass ich genau angeben 
muss. Der Hintergrund habe ich jedoch verstanden mit den Setup and Hold 
Zeiten.

In einem anderen Thread wird dazu geraten als minimum folgenden Eintrag 
zu verwenden:
create_clock -name {CLOCK_50} -period 20.000 [get_ports {CLOCK_50}]
derive_pll_clocks

Soll offenbar die Abhängigkeiten der PLL zum Grundtakt sicherstellen?

Wenn ich es richtig verstanden habe, dann sieht meine Übertragung ja wie 
folgt aus:

FPGA -> CLK, CAS, RAS etc. (Delay 1) -> RAM ->  Data Out etc. (Delay 2) 
-> FPGA

Also eigentlich die Laufzeit der Leitungen auf dem Board *2
Wobei das Timing ja eigentlich unterschiedlich ist.
Wenn ich nur Daten ans RAM sende also z.B. Speichern, dann ist es nur 
Delay 1. Wenn ich Daten auslese dann ist es Delay 1 + Delay 2.

Nun stellt sich mir die Frage, wie ich dies im SDC abbilden kann/soll?

An dieser Stelle wäre ich froh um Hilfe.

Danke schonmal.

Autor: Holger K. (holgerkraehe)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich mache mal einen dezenten Push ^^

Autor: Markus F. (mfro)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Holger K. (holgerkraehe)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Markus F. schrieb:
> Kennst Du das:
>
> 
https://fpgawiki.intel.com/uploads/archive/3/3f/20101209192054%21TimeQuest_User_Guide.pdf
> ?

Danke

Mein SDC File sieht nun so aus:
set_time_format -unit ns -decimal_places 3

create_clock -name {clk_50MHz} -period 20.000 -waveform { 0.000 10.000 } [get_ports {clk}]

derive_pll_clocks -create_base_clocks
derive_clock_uncertainty

set sys_clk {pll|altpll_component|auto_generated|pll1|clk[0]}
set ram_clk {pll|altpll_component|auto_generated|pll1|clk[1]}

set maxInpDelay 0
set minInpDelay 0

set sdram_tsu       1.5
set sdram_th        0.8
set sdram_tco_min   2.7
set sdram_tco_max   6.5

# FPGA timing constraints
set sdram_input_delay_min        $sdram_tco_min
set sdram_input_delay_max        $sdram_tco_max
set sdram_output_delay_min      -$sdram_th
set sdram_output_delay_max       $sdram_tsu


# FPGA Inputs
set sdram_inputs [get_ports {
  sdData*
}]
set_input_delay \
  -clock $ram_clk \
  -min $sdram_input_delay_min \
  $sdram_inputs
set_input_delay \
  -clock $ram_clk \
  -max $sdram_input_delay_max \
  $sdram_inputs

set_input_delay -clock $sys_clk -max $maxInpDelay {UART_RX}
set_input_delay -clock $sys_clk -min $minInpDelay {UART_RX}

set maxOutDelay 0.1
set minOutDelay 0.0

set sdram_outputs [get_ports {
  sdAddr*
  sdCke*
  sdData*
  sdDq*
  sdBs*
  sdCas*
  sdWe*
  sd_clk*
  sdRas*
}] 

set_output_delay \
  -clock $ram_clk \
  -min $sdram_output_delay_min \
  $sdram_outputs
set_output_delay \
  -clock $ram_clk \
  -max $sdram_output_delay_max \
  $sdram_outputs
  

set_output_delay -clock $sys_clk -max $maxOutDelay {LED*}
set_output_delay -clock $sys_clk -min $minOutDelay {LED*}

set_output_delay -clock $sys_clk -max $maxOutDelay {UART_TX}
set_output_delay -clock $sys_clk -min $minOutDelay {UART_TX}

set_output_delay -clock $sys_clk -max $maxOutDelay {*LED}
set_output_delay -clock $sys_clk -min $minOutDelay {*LED}


Brauche ich für mein SDRAM einen multicycle pfad?

Autor: Holger K. (holgerkraehe)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich bekomme die Meldung:
limit due to minimum period restriction (tmin)

Bei fmax summary.
Weis jemand, woher die kommen kann?

Ist scheinbar auf 10MHz begrenzt.
Ich weiss nichts von tmin.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.