Forum: FPGA, VHDL & Co. Erster FPGA


von Andreas Sathle (Gast)


Lesenswert?

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

von Andreas Sathle (Gast)


Angehängte Dateien:

Lesenswert?

Hier sind die Files.

von Sven Johannes (Gast)


Lesenswert?

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

von Andreas Sathle (Gast)


Lesenswert?

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

von Jochen Pernsteiner (Gast)


Lesenswert?

"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

von Jochen Pernsteiner (Gast)


Lesenswert?

>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

von TheMason (Gast)


Angehängte Dateien:

Lesenswert?

@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

von Zennehoy (Gast)


Lesenswert?

"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

von Andreas Sathle (Gast)


Angehängte Dateien:

Lesenswert?

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
Noch kein Account? Hier anmelden.