Teil 1:Warum Gebrauch Funktionen in Verilog, wenn Modul ist
ich immer in Verilog verwenden Funktionen wurde gesagt, Code-Duplizierung zu vermeiden. Aber kann ich das nicht mit einem Modul machen? Wenn mein Verständnis stimmt, können alle Funktionen in Verilog als Module neu geschrieben werden, mit der Ausnahme, dass Module nicht aus dem Inneren eines Immer-Blocks instanziiert werden können. Außer, in diesem Fall kann ich immer bei Modulen bleiben. Hab ich recht?
Teil 2:
Wenn ich richtig bin, warum nicht die Verilog kann Compiler so geschrieben werden, dass die Module die Behandlung einer Funktion erhalten? Ich meine, warum kann der Compiler dem Programmierer nicht erlauben, ein Modul in n Block zu instanziieren und Funktionen zu stoppen?
Eigentlich können Sie rekursive Module mit 'parameters' und' generate' Blöcken erstellen. Überprüfen Sie diese [32-Bit-ALU, die ich für die Computerarchitektur mit einem rekursiv definierten LAC geschrieben habe] (https://gist.github.com/patrickroberts/3908606ece975eb4c20b4cd8f8b25dd6). –
@PatrickRoberts danke für den Link. Ich habe die Frage bearbeitet – user3219492
Ich habe einige Screenshots der Spezifikation für das Modul der obersten Ebene in der Verbindung zur Verdeutlichung hinzugefügt. Ich bin froh, dass du es überprüft hast. Wurden Sie aus Neugierde aufgefordert, Funktionen zu verwenden, um Code-Duplizierung ** statt Modulen ** explizit zu vermeiden? Oder einfach nur allgemein? Weil es ein guter Rat ist, wenn es nur allgemein angewendet wird, aber ich finde auch, dass Module in bestimmten Kontexten sinnvoller sind, und es ist nicht klar, ob dieser Ratschlag Ihnen implizit angeboten wurde, die Verwendung von Modulen zugunsten von Funktionen aktiv zu verhindern. –