Wie generiert man warten, bis die Teilung in Verilog beendet ist?

Ich verwende ein Teilungsmodul, das zwei andere Signale als die Eingänge "go" hat, um den Beginn der Teilung anzuzeigen. "fertig", um das Ende der Teilung anzuzeigen. Es dauert ungefähr 300 Taktzyklen, bis die Teilung abgeschlossen ist

Wie kann ich verhindern, dass der Rest der Schaltung ausgeführt wird, während dies geschieht?

Ich muss den folgenden Code generieren

if x>p
    c=-p/x;
    m=(c+10)f
else
    c=-x/p;

Die Division dauert hier 300 ungerade Taktzyklen und ich muss die Zuweisung von m stoppen, bis der Wert von c aus der Division berechnet wird, danke für die Hilfe :-)

Bitte fügen Sie weitere Details zu Ihren Fragen hinzu, um negative Stimmen und Markierungen zu vermeiden! Fügen Sie Code hinzu und beschreiben Sie Ihr Problem genauer. Geben Sie auch an, was Sie getan haben, um das Problem selbst zu lösen. Danke.

Antworten (2)

Erstellen Sie eine Zustandsmaschine, in der sie in einem bestimmten Zustand hängen bleibt, bis das Fertig-Signal bestätigt wird.

In solchen Fällen wird Ihr Teilermodul normalerweise als Teil des Datenpfads/Datenflusses Ihres Designs betrachtet. Alle Module sollten eine Art „enable“- oder „clken“-Signal enthalten, damit der Steuer-fsm koordinieren kann, wann und wohin Daten fließen. Wenn die Module ohne Controller miteinander kaskadiert sind, verfügen sie normalerweise über eine Art Flusssteuerungsmechanismus, z. B. ein gültiges/bereites Paar.

Wenn die anderen Teile Ihrer Schaltung nicht auf diese Weise entworfen wurden, können Sie dies normalerweise implementieren, indem Sie ihre Uhren ansteuern (dies ist jedoch in bestimmten Fällen nicht möglich, z. B. wenn sie eine PLL enthalten). Auf diese Weise können Sie ihnen die gewünschte "enable"-Funktionalität geben.