Hallo, villeicht kann mir einer von euch helfen, ich habe ein ganz
blöden Fehler in meiner Statemaschine.
Ich sende Daten von USB an einen FPGA, wenn Daten anliegen geht RXF_in
auf GND, dann muss ich 4 Takte den Ausgang RD_out auf gnd legen und bei
rd4 lese ich die USB Daten ein.
Soweit geht das auch alles, aber wenn ich bei VIEW RTL Schematic schaue,
sind in einem Block nicht alle Gatters angeschlossen, das kann doch
nicht sein das ISE hier mist baut.
versteht das einer ?
also, was mich auf den ersten blick ein wenig verwundert ist, dass du
zwar das clock-signal bei der statemaschine mit in der
sensitivitätsliste hast, aber keine flanke abfragst.
ich würde die statemaschine mit in den anderen process mit ins elsif
eintragen. dann hast du ne schön synchron getaktete statemaschine.
kein plan ob das deinen fehler behebt, aber ist mir halt mal so
aufgefallen.
Ohne deinen Code jetzt durchgelesen zu haben: Darstellungsfehler im
RTL-Viewer kommen ab und zu mal vor. Beliebt sind auch Leitungen, die
schraeg ueber alles in die linke obere Ecke laufen oder eben nicht
angeschlossene Gatter, weil der Algorithmus fuer die Darstellung
irgendwo ins Leere laeuft.
@ Nephilim:
Die Clock in der sensitivity-list ist zwar zu viel, stoert aber auch
nicht. Diese Zwei-Prozess-Schreibweise ist aber genauso erlaubt wie eine
mit nur einem oder drei Prozessen.
Ich habe das jetzt mal mit mit
(if (clock'event and clock = '1') then)
eingebunden, bis jetzt sehe ich keine Fehler in RTL Schematic.
Normal darf das doch so nicht sein, das müsste doch auch ohne clock
gehen.
Es ist kein Fehler im urspruenglichen Code. (Ausser, dass du zweimal
rd2 schreibst, aber rd1 vergessen hast). In ISE 9.1/Linux ist der
RTL-View vollkommen in Ordnung. Es handelt sich bei Frank anscheinend
lediglich um einen Darstellungsfehler.
Mealy und Moore sind zwei theoretische Modelle fuer Zustandsautomaten.
Sollte man kennen - einfach mal googlen. Mit deinem Problem hat es aber
nichts zu tun.
Zitat VHDL Grundregeln:
Es darf nur zwei Arten von Prozessen geben:
1. Rein kombinatorische Prozesse (keine Zustandsspeicher):
Alle Signale die im Prozess gelesen werden in die sensitivity list
eintragen
...
2. Rein getaktete Prozesse (Flip-Flops als Zustandsspeicher):
Nur Clk und asynchroner Reset in die sensitivity list
@Andreas Schwarz (andreas),
bin nur Hobbyist, aber gehören zu 2. nicht auch alle im Prozess zu
lesenden Signale in die Sen.List? Bei mir (unter Xilinx WebPack)
motzt er jedenfalls und will diese Signale.
Gruss
Jörg
ja, ISE schreit immer nach diesen Signalen, aber wenn man ein schönes
synchrones Design haben will hängt alles nur am Clock-Signal, also
reicht das in der Liste. Bei asynchronem Reset gehört dann auch das dort
mit rein, aber mehr muss nicht. Ist auch beim durchdenken der
Statemaschine, was wann passiert, am besten. Wenn man so viele Signale
in der Sensitivitätsliste hat und es dann auch noch nicht durch eine
Clock-Flanke gesteuert wird, dann kommt man schnell durcheinander und es
kann schonmal passieren, dass das falsche Signal einen Zustandswechsel
hervorruft.
Guten morgen,
also ich habe mal meinen code einen Kumpel gegeben der mit ISE 9.1
Arbeitet,
bei dem war alles ok. Es wurde ein gleiches RTL Schematic Sheet
erstellt, aber bei ihm waren alle Leitungen an den Gatters.
Soviel zu dem neuen ISE10.1
Gruß
Ebenfalls Guten Morgen,
mit Rummosern (von 10.1) sind nur Warnings gemeint (keine Errors),
für die Synthese spielt das keine Rolle.
Gruss und frohes Schaffen
Jörg