Habe mir zum Spass einen kleinen Test-FPGA gebastelt. Es macht zum größten teil das was ich will und zwar: 1.Hallo Text ausgeben. 2.Nach dem Reset wird eine Zufallszeit abgewartet und dann ein signal auf ein Display ausgegeben. 3.Drückt der User eine Taste wir die differenz zwischen der Zeit wo der Siganl ausgegeben wurde und der Zeit wo der User die Taste betätigt hat auf dem Display ausgegebn. Allerdings bekomme ich bei der Synthese ca. 200 Warnungen. Warning: Reduced register ... with stuck ... port to stuck value GND ca 30 von denen. Warning: Synthesized away the following LCELL buffer node(s): 10 von denen. Die meisten sind aber von folgender art: Warning: Timing Analysis found one or more latches implemented as combinational loops Warning: Node "..." is a latch Habe die Hilfe zur allen diesen Fehlermeldungen angeschaut....komme aber trotzdem nicht weiter. Kann mir bitte jemand erklären was ich bei der programierung falsch gemacht haben und auf was ich genau achten muss um solche fehler in der zukunft zu vermeiden? Zum anschauen habe noch die VHDL-Files angehängt. Grüße Andreas
Moin... Dein Design ist höchstgradig asynchron. Latches werden in amerikanischen Designs gerne verwendet, produzieren aber gerne Ärger an Stellen an denen man es garnicht gebrauchen kann. Ausserdem sieht es nicht so aus als hättest due die gezielt gesetzt. Die Signale müßten namentlich aufgelistet werden und bei dir dürften das fast alle sein. Versuch mal dein Design synchron zu machen, dann verschwinden die schonmal. Die Register werden niemals mit Werten belegt und die Syntheselogik fixiert sie auf logisch null/gnd. Damit fallem dann evtl. komplette "LCELL" raus. Welcher FPGA ist das überhaupt, Altera? -- Sven Johannes
Hallo Sven, Nein, die Latches habe ich nicht ansichtig gesetzt...die sind während der Programmierung selbst entstanden. Ehrlich gesagt ich weis nicht einmal was ein Latch ist und wie man den beseitigt. Wie mache ich mein Design synchron? Was muss ich dabei beachten? Kannst du mir bitte ein Beispiel im Code zeigen? Altera Cyclone EP1C12F324C8 auf dem LiveDesign Board von Altium. Grüße und Dank Andreas
"Latches werden in amerikanischen Designs gerne verwendet" Aha. Dass das etwas speziell amerikanisches ist, ist mir neu. Soweit mir bekannt ist, machen das vor allem ASIC-Designer. Zu diesem Thema ist dieses Dokument hier sehr interessant, vor allem Kapitel 2.1.1 (Synchronous vs. Asynchronous Design Style): www.xilinx.com/ipcenter/designreuse/docs/Xilinx_Design_Reuse_Methodology .pdf
>Nein, die Latches habe ich nicht ansichtig gesetzt...die sind während >der Programmierung selbst entstanden. Ehrlich gesagt ich weis nicht >einmal was ein Latch ist und wie man den beseitigt. Schau dir mal die Seite an und lade Dir Kapitel 5 und 6 runter: http://www.altera.com/literature/lit-qts.jsp
@andreas : hab hier mal ein beispiel für eine synchrone display-ansteuerung. (sind allerdings nur 4 7 segment anzeigen, sollte sich aber erweitern lassen). Weiterhin ist eine kleine state-machine drin. diese sollte man bei dem was du vor hast nach möglichkeit verwenden, weil dadurch synchronität gewährleistet wird. das ganze ist ein design für eine schaltung mit der man ein 256k ram auslesen und beschreiben kann (zumindest die ersten 256 byte) es funktioniert allerdings noch nicht ganz (obwohl ich den fehler schon gefunden habe, hatte aber nur die alten sourcen da) ich hab das für mein xilinx spartan 3 board gemacht. sollte sich aber auf jeden fpga braten lassen. ich denke mit den beispielen hast du evtl. einen kleinen einstieg. allerdings ist es nicht besonders gut dokumentiert. aber vielleicht hilfts dir ja. gruß rene
"Latches werden in amerikanischen Designs gerne verwendet" Dem muss ich wiedersprechen: sie werden vermieden wie die Pest. Zumindest war das bei der Firma an der ich vor ein paar Jahren ein Industriepraktikum gemacht habe der Fall. Auch an den Unis wird einem strengstens eingepeitscht, dass Latches verboten sind... Wuerde mich interessieren, wo das geruecht her kommt! Zen
Erstmals Danke für alle Tipps und Vorschläge. Habe geschafft alle Latches wegzukriegen. Am alten Code wollte ich nichts großartig verändern da es momentan so funktioniert wie ich es mir gedacht habe. Habe noch zusätzlich ein externes Display angeschafft. Im unterem Teil von Programm.VHDL ist seine Initialisierung und ausgab von "HALL". Fürs "HALLO WORLD" hat mir heute die Zeit leider nicht gereicht. Schaut euch das mal an. Habt ihr so was mit der "synchrone" und "state-machine" gedacht? Für weitere Vorschläge und Tipps bin ich immer offen und dankbar ;) Grüße und schönes Wochenende Andreas PS: Ich weis das ich noch RAM, Buffer etc einbauen muss....hatte aber bis jetzt noch keine Zeit um mich damit auseinander zu setzen.
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.