Hi, Ich habe einen UART Core in VHDL geschrieben. Er arbeitet mit einem Zustandsautomaten. Zeitweise funktioniert der Automat einwandfrei, doch sporadisch verliert er seinen Zustand. Dann ist kein Zustand mehr aktiv. Es scheint mir so als wenn das abhänig davon ist wie Quartus das Design "gefittert" hat. Denn in manchmal funktioniert es ganz gut, und wenn man neu fittert geht es mal wieder nicht. Fehler werden keine Angezeit! In der "funktion simulation" funktioniert es. Habt ihr eine Idee woran es liegen kann?
> Habt ihr eine Idee woran es liegen kann? Das ist eine Timing-Verletzung, partieller Reset... Auf welche Zielplattform wurde das Design "gefittet" (FPGA, CPLD, welches)? Gehst du mit deinem Reset-Pin direkt aufs Reset-Netzwerk? Hast du Kombinatorik im Reset? Lass doch mal deinen Code sehen.
Das ganze soll auf einen FPGA. Der Reset ist zusammgeführt und geht nur auf 2 Register um in zu Synchronisieren. Tue ich das nicht, meckert der Design Assistent in Quartus auch. Mir ist grad eingefallen das ich rxd nicht synchronisiert hab, kann das einfluss haben?
> Das ganze soll auf einen FPGA. Nur auf CPLDs wird gefittet, nicht auf FPGAs ;-) > Mir ist grad eingefallen das ich rxd nicht synchronisiert hab, kann das > einfluss haben? Ja, was denn sonst? Jedes Signal, das für das Weiterschalten einer SM zuständig ist, kann sie auch durcheinander bringen. Und dein RXD ist extensiv dafür verwendet:
1 | when Z8 => if rxd = '1' then -- warten bis Treiber freigeschaltet hat! |
2 | zustand <= Z1; -- senden fertig |
3 | else
|
4 | zustand <= Z8; |
5 | end if; |
Also: zwischen Eingangspin und SM mindestens 2 FFs. BTW: Woher kommt der clrn ? Ist das der einsynchronisierte Reset? EDIT: Bei Xilinx enden VHDL-Files mit .vhd Nimm für den Dateianhang auch diese Endung, dann kann der Dateibetrachter hier im Forum den Code schön formatieren.
jo danke, lag am rxd ;-) clrn, ist der Reset. Warum wird beim FPGA nicht gefittert. Im Quartus gibt es doch den Compilepunkt Fitter(Place & Route).
Xilinx unterscheidet da streng: #das Tool für Place&Route heis par und läuft nicht mit Designs für (Xilinx-)CPLD's #für CPLDs hat Xilinx ein Tool namens cpldfit (?) (was nicht für FPGA-Design läuft).
> Im Quartus gibt es doch den Compilepunkt Fitter(Place & Route). Man lernt nie aus ;-) Also ok, beim Quartus werden FPGAs gefittet (aber trotzdem ohne r) Dann schau dir gleich noch die anderen Signale an (start, rd_wr...), falls die von aussen kommen. Jedes davon kann dir solche Effekte machen. Besonders, wenn es zum Umschalten einer SM verwendet wird.
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.