Hallo! Ist es eigentlich synthetisierbar Signalen in VHDL Anfangswerte zuzuweisen? Normalerweise kann man sich ja nicht drauf verlassen, das in einem FF ein bestimmter wert beim Einschalten steht. Evt. können aber ja FPGA beim Einschalten Werte setzen? also: signal a : Natural :=3; Ist diese Defaultwertzuweisung synthetisierbar? Wie kann ich am einfachsten prüfen, ob mein Design nicht-synthetisierbare Elemente enthält? Ich benutze ModelSim. Das hat zwar ne Einstellung das zu Überprüfen, aber das bemeckert nicht mal ein wait for - statement. Ich hätt auch versucht das Xilinx - Webpackage zu laden, aber irgendwie haben die Serverprobleme momentan ... mfg
fluttershy schrieb: > Wie kann ich am einfachsten prüfen, ob mein Design > nicht-synthetisierbare Elemente enthält? Den Synthesizer benutzen. Der sagt das schon. Mittlerweile sollten eigentlich alle die Anfangswerte können. Xilinx kanns auf jeden Fall.
dann brauch ich das webpack dann doch bald. komisch das deren webseite nur fehler ausspuckt. hab mich sogar registriert... kennt jmd ne andre quelle als die offizielle ?
fluttershy schrieb: > Ist diese Defaultwertzuweisung synthetisierbar? Eigentlich schon. Besser ist aber, wenn du das in einen Reset-Prozess packst. An der Uni wurde das folgendermassen gelehrt: process(clk, async_reset) begin if async_reset = '1' then -- set defaults elsif clk = '1' and clk'event then -- set registers for next cycle reg1 = reg1_new; reg2 = reg2_new; ... end if; end process; reg1_new = ...; reg2_new = ...; Vorteile: - Es ist immer synthetisierbar, sofern die Register asynchronen Load können. - Du kannst einen sauberen Startpunkt für dein System bestimmen. Beim Default-Wert hingegen musst du dich darauf verlassen, dass das System mit dem globalen, externen Reset bereits in einem korrekten Zustand anläuft. Das geht evtl. bereits dann nicht, wenn du z.B. noch etwas Übergeordnetes initialisieren musst.
.... schrieb: > Besser ist aber, wenn du das in einen Reset-Prozess > packst. Lass das nicht den Lothar lesen. Da sträuben sich bei ihm die Nackenhaare auf: http://www.lothar-miller.de/s9y/archives/70-Asynchroner-Reset.html Gruß Marius
.... schrieb: > Eigentlich schon. Besser ist aber, wenn du das in einen Reset-Prozess > packst. An der Uni wurde das folgendermassen gelehrt: Wieso ist es besser einen Reset-Prozess zu verwenden? Weil du das an der Uni gelernt hast, ist kein Grund. Weiterhin wird grundsätzlich von der Verwendung eines asynchronen Resets abgeraten, Am besten fährt man, wenn man sich an die Vorgaben des jeweiligen FPGA-Herstellers hält. Tom
Thomas Reinemann schrieb: > Wieso ist es besser einen Reset-Prozess zu verwenden? Weil du das an der > Uni gelernt hast, ist kein Grund. Ich gehe mal davon aus, dass an die Leute an der Uni schon ein wenig Ahnung haben ;-) In dieser Vorlesung ging's aber um digitale Hardwaresynthese im allgemeinen, nicht spezifisch für FPGAs, sondern auch für ASICs. Lese mir jetzt mal den Beitrag von Lothar durch, bin gespannt.
Marius Wensing schrieb: > Lass das nicht den Lothar lesen. Da sträuben sich bei ihm die > Nackenhaare auf: > http://www.lothar-miller.de/s9y/archives/70-Asynch... Wow, das hat was! Danke für den Tipp! Die zusätzliche Logik mag je nach FPGA noch vertretbar sein, aber das mit den Laufzeiten ist schon ein absolutes Killer-Argument gegen asynchronen Reset. Was die Frage des Threaderstellers angeht: Trotzdem würde ich die Initialisierung in einem Reset machen. Dann halt synchron.
.... schrieb: > Ich gehe mal davon aus, dass an die Leute an der Uni schon ein wenig > Ahnung haben Naja, selbst in Xilinx Beispiel-Codes taucht das immer auf, obwohl die selbst schreiben, dass das absolut zu vermeiden ist. .... schrieb: > icht spezifisch für FPGAs, sondern > auch für ASICs. Bei ASICs ist das auch etwas anderes. Bei FPGAs werden die Zellen eh aus dem Bitstream geladen, da geht das Preload. Trotzdem sollte man im Manual des Sythesizers nachgucken. Ein extra Reset ist in 99,95% der Fälle vollkommen überflüssig, das zeugt nur von einem schlechten Design. Gerade bei Xilinx braucht man das nicht, da dort immer die Preload Werte funktionieren. Und mit dem Anfangszuweisungen laufen die FPGAs/CPLDs immer sicher an, da gibts keine undefinierten Zustände oder Laufzeiteffekte.
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.