Verilog Anfängerfrage: Gibt es eine Möglichkeit, wie ein Modul seine statische/konstante Eigenschaft veröffentlichen kann, wie die Breite des Adressbussegments oder die Anzahl der internen Register? Es ist kein Parameter, sondern Informationen, die dem zu instanziierenden Modul inhärent sind. Weder ist es Modul Ausgabe Daten.Wie veröffentliche ich eine Moduleigenschaft in Verilog?
So etwas wie die (falsche) .addr (Adr [amod.AMOD_ADDR_W -1: 0]) unter
module top_mod #(parameter ADDR_W = 32)
(input [ADDR_W-1:0] addr);
amod amod(.addr(addr[amod.AMOD_ADDR_W-1:0]));
endmodule
// ---
module amod(
input [AMOD_ADDR_W-1:0] addr
);
// AMOD_ADDR_W is amod's intrinsic property
localparam AMOD_ADDR_W = 2;
endmodule
Globale definiert scheint nicht den Weg zu uns zu gehen.
Ich würde auch Links zu einigen nützlichen Verilog-Codierungshinweise schätzen.
Vielen Dank.
Danke trotz der Antwort ist nicht so ermutigend, wie ich gehofft :) –
(Oh, Timeout auf Bearbeiten :() Während die Portbreite nicht ein Problem sein kann, ich bin auch in einer Lösung von dem interessiert anderes Beispiel (eine Zahl) Ich frage mich, wie man eine Reihe von Instanzen einer fast-schwarzen Box erzeugen kann ("sag mir, wie viele Regs drin sind, um die Basisadressen richtig dekodieren zu können") :) –
Wenn Sie den Namen des Moduls, das Sie instanziieren müssen, kennen, sollten Sie _noch_ den localparam-Wert darin kennen. Ja, es ist schwieriger zu warten, aber das ist Verilog. Wechseln Sie zu SystemVerilog und verwenden Sie ein "Paket". –