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.
für die Simulation sollte die Library UNISIM nicht auskommentiert sein (s. Kommentar am Anfang des Files).
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.
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
Ich denke mal, das Schieberegister wird mit 1 initialisiert, oder? Klingt für mich zumindestens so.
#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).
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"???
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.