Forum: FPGA, VHDL & Co. Generic FDR


von Sebastian (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Freaks,

ich versuche gerade aus einer generic "D Flip-Flop with Synchronous
Reset" Komponente ein 4-Bit-Schieberegister aufzubauen. Ich möchte das
aus Übungsgründen programmieren.
Leider habe ich mit der generic Variable Probleme. Ich bekomme immer
die Warnung:

Possible simulation mismatch on property <property_name> of instance
<inst> set by attribute"

Auch die online Hilfe hilft mir nicht weiter. Das Problem ist in diesem
Codeabschnitt:

begin
  FDR_INSTANCE_NAME : FDR
  -- synthesis translate_off
      generic map (
  INIT => bit_value)
  port map (Q => DATA_OUT,
         C => CLOCK,
         D => DATA_IN,
         R => RESET);
end RTL;

Ich habe das aus dem lib.pdf. Die Variable bit_value habe ich
nirgendswo deklariert. XST synthetisiert komplett (mit Warnung).
Simulation funktioniert dann aber nicht mehr.

Im Anhang habe ich den ganzen Code gepostet. Schon mal vielen, vielen
Dank für Eure Hilfe. Aller Anfang ist schwer....

Sebastian.

von FPGA-User (Gast)


Lesenswert?

für die Simulation sollte die Library UNISIM nicht
auskommentiert sein (s. Kommentar am Anfang des Files).

von Sebastian (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

OK, danke für den Hinweis. Ich bekomme jetzt die oben beschriebene
Warnung nicht mehr (Possible simulation mismatch on property
<property_name> of instance <inst> set by attribute"). :-)... Hätte
ich eigentlich auch selbst draufkommen sollen.

Naja. Jetzt habe ich aber immer noch das Problem mit der Fehlermeldung:
Unknown identifier 'bit_value'. Diese Meldung tritt NICHT auf während
XST synthetisiert sondern wenn die Testbench compiliert!!! --> Abbruch.


Ich hab' keine Ahnung was ich da jetzt noch tun könnte. Im Anhang ist
der verbesserte VHDL Code. Vieleicht habt Ihr noch eine Idee.

MfG,
Sebastian.

von Sebastian (Gast)


Lesenswert?

Hallo nochmal,

so ich habe jetzt einfach rumprobiert und jetzt funktioniert es
tadellos. Mit folgendem Code klappt es:

generic map (
 INIT => '1' )

Leider weiß ich nicht so Recht was der Code eigentlich bedeutet.????

Sebastian

von T.M. (Gast)


Lesenswert?

Ich denke mal, das Schieberegister wird mit 1 initialisiert, oder?
Klingt für mich zumindestens so.

von FPGAküchle (Gast)


Lesenswert?

#generic map (
# INIT => '1' )

#Leider weiß ich nicht so Recht was der Code eigentlich bedeutet.????

Also der INIT wert gibt hier an welcher Pegel am D-Ausgang des FF
erscheint bevor die allerste taktflanke eintrifft. Also der Wert der
nach Laden des FPGA im FDR steht.

(BTW: wie sieht es eigentlich bei FF mit asynchronen Reset/Set aus?
z.B. FDC, da macht INIT doch keinen Sinn, oder?)

Allerdings bin ich mir nicht sicher ob in der echten Hardware auch der
selbe INIT Wert gilt, das generic ist doch "nur" für die
Simulationen. Für Echt muss der INIT wert per *.ucf oder attribut
übergeben werden. (Wovon wiederum die Verhaltenssimulation nichts
weiss, die braucht den INIT-Wert aus der generic map).

von Sebastian (Gast)


Lesenswert?

Hallo,

@FPGAküchle. Danke für Deine umfangreiche Antwort. Jetzt habe ich
endlich wieder einen gewissen roten Faden.

Die folgenden Codezeilen sind mir aber immer noch suspekt:

attribute INIT : string;
attribute INIT of FDR_instance_name : label is "0";

INIT ist doch oben als bit deklariert. Was soll das dan auf einmal mit
string??? Und label is "0"???

von Klaus F. (kfalser)


Lesenswert?

Das Init beim Instanzieren des FDR FF ist nur für die Simulation,
deshalb werden diese Zeilen auch für die Synthese mit den pragma's
"synthesis on/off" ausgeschalten (wirkt wie eine Art Preprocessor).

Das Attribut INIT wird an den Fitter/Mapper weitergereicht, sodaß am
Ende ein FDR mit dem gewünschten Startwert erzeugt wird. Du kannst die
Zeilen mit den Attributen auch weglassen und deinen Startwert im
UCF-File angeben.

Wichtig ist, daß die beiden INIT Werte (Generic und Attribut/UCF)
übereinstimmen, sonst bekommst Du einen Unterschied zwischen Simulation
und Hardware.

Grüße
Klaus

von Sebastian (Gast)


Lesenswert?

Hallo Klaus,

danke für Deine Antwort. Damit komme ich bestimmt wieder weiter. VHDL
ist für mich "nur" eine "Weiterbildung" am
Wochenende/Winterabende/Feiertage/Urlaub... Wo kann ich den Deine Infos
nachlesen. Im VHDL-Uni-Hamburg.pdf steht sowas nicht drin. Hast Du eine
gute Quelle/Buch?

Sebastian.

von Klaus F. (kfalser)


Lesenswert?

Die Xilinx Homepage hat eine Menge Informationen, aber Kochbücher, die
alles enthalten, gibt es eben keine (Ist auf gut so, schließlich müssen
wir alten Hasen von unserer Erfahrung und unserem Wissen auch die
Familie ernähren).

Vieles ändert sich auch von Release zu Release.
Grüße
Klaus

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.