Forum: FPGA, VHDL & Co. Initialisierung von Signalen bei der Deklaration


von Michi (Gast)


Lesenswert?

Ich würde gerne einen std_logic_vector beim PowerUp z.B. über die 
Deklaration initialisieren:

signal a : std_logic_vector (1 downto 0) := "10";

Es handelt sich dabei um FFs, da sie nur getaktet beschrieben werden:
if (rising_edge(CLK)) then
    a <= b & c;
end if;

Ich habe für diese Abfrage keinen echten (passenden) Reset zur 
Verfügung, daher würde ich den Inhalt gerne beim PowerUp des FPGAs 
entsprechend initialisieren - um ungünstige Zustände direkt nach dem 
PowerUp zu vermeiden.

Meine Fragen lauten nun:
1.) Wird die Initialisierung wie oben angegeben auch wirklich 
synthetisiert oder dient sie nur für Testbenches?
2.) Falls es nicht synthetisiert werden sollte, wie müsste der Code 
angepasst werden um es zu erreichen?

von Matthias (Gast)


Lesenswert?

1.) ja

von Bescheidenheit (Gast)


Lesenswert?

Hängt vom synthese tool ab, nach meiner erfahrung ubernimmt XST (ab 
version 6.2 ?) die inits als power Up wert, synplicity nicht.

Power Up werte sind nicht Aufgabe der synthese sondern des mappers 
(Netzliste auf spezif. architecture abbilden. Im "reinen" VHDL kannst du 
die Werte nach synthese nicht zwingend festlegen (VHDL ist ursprünglich 
Simu, nicht Synthese-sprache). Wenn, dann mit Herstellerabhängigen 
Attributen. Besser ist im constraint file (xilinx *.ucf, alters *.acf)
Xilinx: hier heisst des constraint INIT.

Schau also in der Doku des FPGA Herstellers, im VHDL synthesis style 
guide
,constraint guide, oder library guide.

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.