Verzögerung vor der Zuweisung.

M

munchies

Guest
Ich bin mit VHDL und ich möchte eine Verzögerung vor der Vergabe beiden Signale gleich vorstellen. Mein Denken ist über einen Schalter, die aus lauter Nullen oder null, um den Draht möchte ich das Signal von nach x Höhe clk_cycles nehmen bewegt. Ist das möglich? Mein Problem ist, dass mein Design ist die Ausgabe Datenmüll, bevor alle die richtigen Daten durchläuft es, voll ich den Ausgang auf Null oder null zuzuweisen, bis die Signallaufzeit abgeschlossen werden soll. Ist das möglich? Vielen Dank für jede Hilfe oder Diskussion.
 
hat Ihr Kreislauf haben eine sequenzielle Teil? weil es Sie können es verwenden, um festzulegen, wann die Ausgabe zugewiesen werden. was du sagst ist nicht sinnvoll, so weit ich verstanden habe. Sie sind zum Beispiel sagen, Sie haben einen Draht, und Sie wollen, dass es keinen Wert für eine Zeit (null) haben, und als Sie einen Wert zuweisen, wenn Sie wollen. Null-Wert ist nicht in hdl möglich. denn jeder Draht und registrieren Sie haben einen zufälligen Wert bei Reset, da sie tatsächlich bistabile Solid-State-Geräte sind. was Sie tun können ist, dass zum Beispiel haben einen Zyklus zu begegnen. und sprechen Sie Ihren Kreislauf beendet seine Berechnungen nach 150 Takten. und man kann eine Leistung Registers, ob alle Nullen bis zu 150 Zyklus zählt. und Sie können die Ausgabe nach der 150 eingestellt. Zyklus. und Sie können auch einen Ein-Bit-Signal, sagen Sie "done". und Sie dies getan Signal olnly nach der Zuordnung zu dem Ergebnis Register ist fertig. So können Sie das nächste Modul, dass dieser Teil des sytem hat seinen Ausgangswert und dem Wert berechnet, sagen kann, ist bereit, von seinem Ausgang Register aufgenommen werden. Dies ist der übliche Weg zu tun, was man sich wünschen. hoffe, das hilft.
 
In Simulation , können Sie Verzögerung ein Signal Zuordnung mit [FONT = Courier New] nach [/FONT], aber das ist wahrscheinlich nicht, was du willst: [url = http://www.gmvhdl.com / delay.htm] VHDL Tutorial - Die Delay-Modell [/url] Sie müssen wahrscheinlich ein Signal, dass, wenn der Müll wurde durch das Modul gespült weiß erstellen und verwenden, um den Ausgang ein-oder auszuschalten. Ich schlage vor, Sie fügen so etwas bis zum Ende des Moduls:
Code:
 finalOutput '0');
 
Ok danke Ihnen dafür. Ich weiß, was ich mit ihm auf Basis wollen, so möchte ich so etwas wie
Code:
 IF (Fire'event UND Feuer = '1 ') THEN verwenden ...... ComputationReady = '1 ';
Wie kann ich dann die Verzögerung ich will? In diesem Fall ist es 4 Zyklen. Ich nehme an, mit einem beliebigen Zeitpunkt außerhalb der Simulation nutzlos. Also muss ich so etwas wie:
Code:
 warten 8 * clk'event
oder so etwas?
 
dont use der ersten Idee - Sie erstellen eine Uhr, die Ursache finden Sie alle Arten von Timing-Problemen. Beste gerade die Einrichtung einer Theke und warten, bis es einen bestimmten Wert erreicht.
 
Nicht Trigger für eine steigende Flanke von "Feuer", so, Sie verwenden würden, "Feuer" als eine neue Uhr, statt ein Steuersignal. Stattdessen für den alten Wert zu prüfen und zu vergleichen, um den neuen Wert. Dann starten Sie das Zählen 4 Taktzyklen. Zählen 4 Taktzyklen kann durch eine Verschiebung der Werte in ein Schieberegister, oder durch die Schaffung einer Zustandsmaschine mit einem Zähler durchgeführt werden. Lassen Sie uns die Verschiebung hier registrieren: Angenommen, Erklärungen wie diese:
Code:
 Signal Feuer, gebrannt, aktiv: std_logic; Signal Zählen: std_logic_vector (4 downto 0);
Sie etwas Ähnliches wie dieses in Ihrem Synchron-Prozess: [CODE ], wenn rising_edge (clk) then, wenn abgefeuert = '0 'und Feuer = '1' then - Zählen beginnen aktiv
 
In einem Pipeline-Design, werden Sie oft wollen eine DAV (Daten)-Pipeline, die ein Handshake-Signal Verzögerungen zusammen mit den Daten haben. Es ist nicht nur Verzögerungen eine Daten Ready-Signal, sondern ermöglicht es mehreren neuen Werte an den Datenpfad zur gleichen Zeit zu reisen. Wenn die Daten Spüle ist die Registrierung der Daten nach den DAV-Signal, brauchen Sie nicht zu ungültigen Ausgangsdaten Maske. Wenn der Datenpfad sequentiell betrieben wird anstatt Pipeline, zB eine serielle Divisionseinheit, wäre eine einfache DAV Zähler ausreichend sein.
 

Welcome to EDABoard.com

Sponsor

Back
Top