Verilog Instanzierung Frage

Gast #3052461
Lesenswert?

Bitte vorigen Beitrag ignorieren.

Bei der Instanzierung wird ein Parameter namens CRC_INIT in das Modul 
übergeben.

mit

modulname #(.PAR1(val1), .PAR2(val2) ...) instanzname ( ports);

können beliebig viele Parameter in die Instanz des Moduls übergeben 
werden.

Im Modul selbst kann (muss?) dieser Parameter noch mit einem 
Default-Wert versehen sein.

hier eine Beispiel für ein generisches Dualport-RAM:
1
  module dpmem 
2
    #(parameter DATA_WIDTH=32, parameter ADDR_WIDTH=9)
3
      (input                       clk,
4
       
5
       input                       wren_a,
6
       input      [ADDR_WIDTH-1:0] addr_a,
7
       input      [DATA_WIDTH-1:0] data_a,
8
       output reg [DATA_WIDTH-1:0] q_a,
9
       
10
       input                       wren_b,
11
       input      [ADDR_WIDTH-1:0] addr_b,
12
       input      [DATA_WIDTH-1:0] data_b,
13
       output reg [DATA_WIDTH-1:0] q_b
14
       );

Instanziert werden kann das dann z.b. mit abweichenden Parametern:
1
   dpmem #(.DATA_WIDTH(32), .ADDR_WIDTH(3)) codemem(.clk(),
2
            .wren_a(),
3
            .addr_a(),
4
            .data_a(),
5
            .q_a(),
6
            
7
            .wren_b(),
8
            .addr_b(),
9
            .data_b(),
10
            .q_b()
11
            );
Gast #3052487
Lesenswert?

Walleby schrieb:
> Beitrag "# in Verilog?"
>

Was dort beschrieben ist gilt nicht in diesem Context.
1
#(.CRC_INIT(32'b0))

Bedeutet dass dem Module zur Synthesezeit ein konstanter Wert als 
Attribute übergeben wird. Das kann wie hier ein Initialisierungswert 
sein, aber auch Dinge wie Zählerbreiten etc.

Das # dient dazu um diese Attributeliste von der Portliste zu 
unterscheiden. Da zwischen der Attributliste und der Portliste noch der 
Instanzname steht erscheint das überflüssig. Aber bei Funktionsaufrufen 
ist das nicht der Fall.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren