Forum: FPGA, VHDL & Co. geht sowas? (Präprozessor, Verilog)


von Micha (Gast)


Lesenswert?

Ich hab grade keinen Zugriff zum Entwicklungssystem und knoble sozusagen 
"mit Papier und Bleistift" an einem Problem.

Dabei bin ich auf das Problem gestoßen, wie ich Instanzen eines Moduls 
flexibel parametrisieren kann. Hat sowas wie im Beispiel eine Chance zu 
funktionieren?
1
... irgendwo im Top-Level-Modul:
2
`define MUXwidth 8
3
busmux Mux8 (sel,D1,D2,D3);
4
`define MUXwidth 16
5
busmux Mux16 (sel,A1,A2,A3);
6
...
7
8
// ausserhalb des Top-Level-Moduls vorhanden:
9
module busmux(
10
 input sel,
11
 input [`MUXwidth-1:0] InpA,
12
 input [`MUXwidth-1:0] InpB,
13
 output reg [`MUXwidth-1:0] Out    
14
);
15
16
 always @ (sel, InpA, InpB)
17
  if (sel) Out = InpB;
18
  else Out = InpA;
19
20
endmodule

von Dogbert (Gast)


Lesenswert?

busmux #(8) Mux8 (sel,D1,D2,D3);
busmux #(16) Mux16 (sel,A1,A2,A3);

module busmux #(parameter MUXwidth) (
 input sel,
 input [MUXwidth-1:0] InpA,
 input [MUXwidth-1:0] InpB,
 output reg [MUXwidth-1:0] Out
);

 always @ (sel, InpA, InpB)
  if (sel) Out = InpB;
  else Out = InpA;

endmodule

_

Ist aber teilweise schon SystemVerilog, zumindest kein UR-Verilog, bin 
nicht sicher.

von Lattice User (Gast)


Lesenswert?

Dogbert schrieb:
>
> Ist aber teilweise schon SystemVerilog, zumindest kein UR-Verilog, bin
> nicht sicher.


Ist Verilog 2001, ich würde es aber so schreiben, funktioniert auch wenn 
man den default nettype auf 'none' hat:

<code>
 busmux #(8) Mux8 (sel,D1,D2,D3);
 busmux #(16) Mux16 (sel,A1,A2,A3);

 module busmux #(parameter MUXwidth) (
  input wire sel,
  input [MUXwidth-1:0] wire InpA,
  input [MUXwidth-1:0] wire InpB,
  output reg [MUXwidth-1:0] Out
 );

  always @ (sel, InpA, InpB)
   if (sel) Out = InpB;
   else Out = InpA;

 endmodule
</code>

von Mich (Gast)


Lesenswert?

Danke!

Lattice User schrieb:
> ich würde es aber so schreiben, funktioniert auch wenn
> man den default nettype auf 'none' hat:

nur um es nicht misszuverstehen - bedeutet das, Du empfiehlst wire immer 
explizit hinzuschreiben wenn etwas ein wire ist?

von Micha (Gast)


Lesenswert?

Sorry ... wer lesen kann u.s.w :(
Der Quelltext beantwortet ja meine Frage schon eindeutig.

von Dogbert (Gast)


Lesenswert?

Allzu Beschäftigte sparen sich das wire in der Portdeklaration, denn so 
sparen sie auch die Zeit `default_nettype zu benutzen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.