mikrocontroller.net

Forum: FPGA, VHDL & Co. Quartus: Datum der Synthese ins FPGA (Verilog)


Autor: Martin O. (ossi-2)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Weiss jemand wie ich mit "Altera Quartus" Datum und Zeit der Synthese in 
mein FPGA bekommen kann. Am besten mit Verilog. Ich hab so was gerne, 
weil ich dann immer weiss, von wann das FPGA ist.

Autor: Lothar M. (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Martin O. schrieb:
> Weiss jemand wie ich mit "Altera Quartus" Datum und Zeit der Synthese in
> mein FPGA bekommen kann.
Wo "im FPGA" möchtest du das denn haben und wie liest du es aus?
Ich z.B. schreibe das per Script in eine Datei und von dort in ein ROM, 
das ich vom Prozessor aus auslesen kann.

Autor: Martin O. (ossi-2)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In Xilinx Vivado Zynq gehts so:
wire [31:0] TimeAndDate ;
USR_ACCESSE2 mUsrAccess ( .DATA ( TimeAndDate ), .CFGCLK (), .DATAVALID () );

//Nicht vergessen: im XDC file:
// set_property BITSTREAM.CONFIG.USR_ACCESS TIMESTAMP [current_design]  

Mir wärs lieb, wenn  ich ohne "externe" Scripten auskommen würde.
Das Datum/Uhrzeit sollte am besten einfach als Bitvektor verfügbar sein.

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Naja das ist ja das UserAccess Register, das ist schon sehr speziell 
Xilinx, mit Verilog oder VHDL hat das erst ma nicht viel zu tun.
Am besten schaust du mal im Altera Gegenstück zum Configuration user 
guide nach, ob die sowas auch haben.

Autor: Markus F. (mfro)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Man kann Quartus (durch eine Zeile im .qsf-File) dazu bringen, bei jedem 
Syntheselauf automatisch ein .tcl-Script auszuführen:
set_global_assignment -name PRE_FLOW_SCRIPT_FILE "quartus_sh:make_datetime.tcl"

Bei mir läuft da das hier:
# Make datetime.vhd package from Tcl script

# Current date, time, and seconds since epoch
# Array index                                            0  1  2  3  4  5  6
set datetime_arr [clock format [clock seconds] -format {%Y %m %d %H %M %S %s}]

# Write VHDL package
set filename datetime.vhd
set file [open $filename w]
puts $file "library ieee;"
puts $file "use ieee.std_logic_1164.all;"
puts $file ""
puts $file "package datetime is"
puts $file "    -- Date information"
puts $file "    constant YEAR_INT  : integer                       := [lindex $datetime_arr 0];"
puts $file "    constant YEAR_HEX  : std_ulogic_vector(15 downto 0) := X\"[lindex $datetime_arr 0]\";"
puts $file "    constant MONTH_INT : integer                       := [lindex $datetime_arr 1];"
puts $file "    constant MONTH_HEX : std_ulogic_vector(7 downto 0)  := X\"[lindex $datetime_arr 1]\";"
puts $file "    constant DAY_INT   : integer                       := [lindex $datetime_arr 2];"
puts $file "    constant DAY_HEX   : std_ulogic_vector(7 downto 0)  := X\"[lindex $datetime_arr 2]\";"
puts $file "    constant DATE_HEX  : std_ulogic_vector(31 downto 0) := YEAR_HEX & MONTH_HEX & DAY_HEX;"
puts $file "    -- Time information"
puts $file "    constant HOUR_INT   : integer                       := [lindex $datetime_arr 3];"
puts $file "    constant HOUR_HEX   : std_ulogic_vector(7 downto 0)  := X\"[lindex $datetime_arr 3]\";"
puts $file "    constant MINUTE_INT : integer                       := [lindex $datetime_arr 4];"
puts $file "    constant MINUTE_HEX : std_ulogic_vector(7 downto 0)  := X\"[lindex $datetime_arr 4]\";"
puts $file "    constant SECOND_INT : integer                       := [lindex $datetime_arr 5];"
puts $file "    constant SECOND_HEX : std_ulogic_vector(7 downto 0)  := X\"[lindex $datetime_arr 5]\";"
puts $file "    constant TIME_HEX   : std_ulogic_vector(31 downto 0) := X\"00\" & HOUR_HEX & MINUTE_HEX & SECOND_HEX;"
puts $file "    -- Miscellaneous information"
puts $file "    constant EPOCH_INT  : integer := [lindex $datetime_arr 6];  -- Seconds since 1970-01-01_00:00:00"
puts $file "end package;"
close $file

Das .tcl-Script erzeugt ein .vhdl package, das Datum und Uhrzeit der 
Synthese zur Verfügung stellt.

Autor: daniel__m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Martin O. schrieb:
> Mir wärs lieb, wenn  ich ohne "externe" Scripten auskommen würde.

Mir ist nicht bekannt, dass VHDL oder VERILOG das kann.

Evtl. VHDL2018? Weiss das jemand?

grüße

Autor: M. B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es reicht nicht, dass "VHDL das kann". Es muss ein Mechanismus her, der 
die Compilezeit in den CODE bringt und zwar an eine Stelle, die vom user 
her auslesbar ist.

Wir verwenden SUBVERSION, um einen Sting in einem RAM ab zulegen. Der 
ist vom user auslesbar. Das wird in VHDL sicher auch irgendwie gehen.

Autor: Duke Scarring (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hier wird auch per Skript bzw. Makefile eine entsprechende VHDL-Datei 
erstellt:
package version is

    constant version_time : string( 1 to 21) := "Dec  6 2017  11:51:33";
    constant svnrevision  : string( 1 to 21) := "7151                 ";

end package version;

Duke

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.