2016-09-30 1 views
0

Je suis un débutant et verilog, et juste rencontré un problème en ce qui concerne l'attribution des ports d'un de mes modules aux ports standard comme SW [0].verilog comment connecter le tableau de ports

Supposons que j'ai deux modules

module top(SW, LEDR); 
input [3:0]SW; 
output [3:0]LEDR; 

bottom b0 (
**.in(SW[3:0]); // I am planning to associate SW[0] to in[0], SW[1] to in[1] etc.** 
.out(LEDR[0]); 
); 
endmodule 
module bottom(in[3:0], out); 
input [3:0]in; 
output out; 
assign out = in[0] | in[1] | in[2]; endmodule 

.in (SW [3: 0]); // Je prévois d'associer SW [0] à in [0], SW [1] à in [1] etc. Ce que j'ai fait était faux et verilog ne pouvait pas le compiler. Des conseils s'il vous plaît?

Répondre

1

Les points-virgules sont une syntaxe incorrecte pour les connexions de port. Séparez chaque port avec une virgule (et rien à la fin). En outre, se débarrasser de [3:0] dans la liste des ports dans le module bottom.

module bottom(in, out); 
input [3:0]in; 
output out; 
assign out = in[0] | in[1] | in[2]; 
endmodule 

module top(SW, LEDR); 
input [3:0]SW; 
output [3:0]LEDR; 

bottom b0 (
.in(SW[3:0]), 
.out(LEDR[0]) 
); 
endmodule 
+0

J'ai essayé d'utiliser ModelSim pour le simuler, il m'a incité le message suivant "Les ports ne peuvent pas être connectés par nom quand un module contient des ports sans nom" – TSP

+0

J'ai mis à jour ma réponse. – toolic

1

Cela pourrait devrait fonctionner pour vous

module top(
      input [3:0] SW, 
      output [3:0]LEDR 
      ); 
    bottom b0 (
      .in(SW), 
      .out(LEDR[0]) 
      ); 
endmodule 

module bottom(
       input [3:0] in, 
       output out 
      ); 
assign out = {<<{in}}; // bit-reverse 
endmodule 

attention à la syntaxe des déclarations du port et des connexions de port.