mikrocontroller.net

Forum: FPGA, VHDL & Co. Generic FDR


Autor: Sebastian (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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.

Autor: FPGA-User (Gast)
Datum:

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

Autor: Sebastian (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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.

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: T.M. (Gast)
Datum:

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

Autor: FPGAküchle (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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).

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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"???

Autor: Klaus Falser (kfalser)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Klaus Falser (kfalser)
Datum:

Bewertung
0 lesenswert
nicht 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

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.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

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