2016-09-30 4 views
0

Ich bin ein Anfänger yo Verilog, und stieß gerade auf ein Problem in Bezug auf die Zuordnung der Ports eines meiner Module zu Standard-Ports wie SW [0].Verilog, wie Array von Ports zu verbinden

glaube, ich habe zwei Module

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]); // Ich plane SW [0] in [0], SW [1] in in [1] usw. zu verbinden. Was ich gemacht habe, war falsch und verilog konnte es nicht kompilieren. Irgendwelche Beratung bitte?

Antwort

1

Die Semikolons sind falsche Syntax für Port-Verbindungen. Trennen Sie jeden Port durch ein Komma (und nichts am Ende). Entfernen Sie auch [3:0] in der Portliste im bottom Modul.

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

Ich habe versucht, ModelSim zu verwenden, um es zu simulieren, es gab mir die folgende Meldung "Ports können nicht namentlich verbunden werden, wenn ein Modul unbenannte Ports enthält" – TSP

+0

Ich aktualisierte meine Antwort. – toolic

1

sollten Dies könnte für Sie für Port Erklärungen und Portverbindungen

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 

Achten Sie auf die Syntax arbeiten.

Verwandte Themen