was ist der Unterschied zwischen Synthese und simulation (VHDL)
Im arbeite gerade an einem VHDL-Projekt umfasst eine fsm.
Einige Staaten ändern sich, je nach Zähler. Es dit nicht arbeiten, bis ich den " clk " in der sensitivity-Liste, neben dem aktuellen Zustand und der Eingabe.
Ich weiß, dass während der Synthese, die Empfindlichkeit nicht verwendet oder verworfen. Aber wie kann das solche Auswirkungen auf das Ergebnis in der simulation? wenn ein verlassen dieser 'clk', würde die fsm durchzuführen, wie ich will op ein FPGA?
Dank,
David
- siehe stackoverflow.com/questions/8991223/...
- Kester: sollten Sie das entsprechende code, um eine präzise und eindeutige Antwort.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist die einfache Erklärung:
Den simulator verwendet die sensitivity-Liste, um herauszufinden, wenn es braucht, um den Prozess laufen. Der Grund, warum die Simulation benötigt Hinweise, um herauszufinden, Wann die Ausführung des Prozesses ist, weil computer Prozessoren können nur eine (oder nur wenige in multicore-Systemen) Sache auf Zeit und der Prozessor wird abwechselnd laufen jeden Teil des Designs. Die sensitivity-Liste ermöglicht die simulation laufen, in einer angemessenen Frist.
Wenn Sie synthetisieren code in einem ASIC oder FPGA, der Prozess ist immer "laufen", da es spezielle hardware.
Wenn Sie simulieren eine state-machine ohne die Uhr in der sensitivity-Liste, wird der Prozess nie auf die Uhr und Kanten, aber nur auf änderungen an Ihrem Eingang. Wenn Sie über die state transition realisiert ein flip-flop (wenn clk'event und clk = '1') dann ist dein Zustand übergang wird niemals simuliert werden, es sei denn, Sie geschehen, ändern Sie Ihre Eingabe in der gleichen Zeit wie der clock rising edge.
Sie sollte wahrscheinlich verlassen die clock in der sensitivity-Liste, vorausgesetzt, die FSM änderungen auf der Uhr und Kanten.
Versuchen Sie auch, zu Korrektur Ihren Fragen.
Synthese-tools das Augenmerk auf die Logik-design (FPGA, ASIC) und ignorieren die sensitivity-Listen, da gibt es nur drei grundlegende Arten von Logik: Kombinatorische Logik, edge-sensitive storage (flip-flops und einige RAM), und level-sensitive Speicher (Riegel und einige RAM).
Kombinatorische Logik verlangt, dass alle input-Signale werden auf die sensitivity-Liste. Von einem Synthese-tool-Perspektive, wenn einer fehlt, können Sie entweder ignorieren die sensitivity-Liste und behandeln Sie, als ob alle Eingänge wurden auf die Empfindlichkeit der Liste, oder produzieren Sie einige komplizierte Kombination von flip-flops und kombinatorische Logik, die wahrscheinlich nicht das tun, was der Benutzer wollte, sowieso. Beide haben eine Implementierung Kosten an den Verkäufer, also warum Geld investieren (Entwicklung Zeit) um etwas zu schaffen, ist nicht sinnvoll. Als Ergebnis, die einzige gute Investition, zu vereinfachen und ignorieren die sensitivity-Liste.
Simulatoren auf der anderen Seite, haben eine größere Perspektive als nur Logik-design. Die Sprache definiert die Empfindlichkeit Listen, die anzeigen, Wann der code ausgeführt werden soll. So Simulatoren implementieren, die semantische mit einer hohen treue.
Langfristig kann Sie glücklich machen, zu wissen, dass VHDL-2008 ermöglicht das Schlüsselwort "all" verwendet werden, in eine Sensitivität Liste zu ersetzen, die signal-Eingänge gibt. Dies dient der Vereinfachung der Modellierung von kombinatorischen Logik. Die Syntax ist wie folgt:
Schalten Sie den VHDL-2008 wechseln und es mit dem Synthese-tool. Wenn es nicht funktioniert, sicher sein, um den bug gegen das tool.