Initialisierung von Signalen bei der Deklaration

Gast #740580
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?
Gast #740591
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren