Tengo un problema al conectar diferentes módulos en un módulo superior. Quiero hacer un PWM muy simple usando un contador y un comparador.
Contador:
module counter
#(parameter N = 6)
(
input wire clk,
input wire enable,
output wire [N-1:0] q
);
reg [N-1:0] r_reg=0, r_next=0;
always @(posedge clk) begin
r_reg <= r_next;
end
always @(*) begin
if (enable)
r_next = r_reg +1;
else
r_next = r_reg;
end
assign q = r_reg;
endmodule
comparador:
module pwm
#(parameter N = 6)
(
input wire [N-1:0] cin,
output wire pwmsig
);
reg [N-1:0] threshold;
reg d = 0;
initial threshold = 6'b011111;
always @(*) begin
if (threshold > cin)
d = 1'b1;
else
d = 1'b0;
end
assign pwmsig = ~d;
endmodule
Los módulos funcionan bien y si pongo todo en un módulo, funciona según lo previsto. Pero si intento conectarlos en un módulo superior:
module top
#(parameter N=6)
(
input wire clk, enable,
output wire pwmled
);
wire [N-1:0] connection;
counter cnt1(
.clk(clk),
.enable(enable),
.q(connection)
);
pwm pwm1(
.cin(connection),
.pwmsig(pwmled)
);
endmodule
Recibo un mensaje de error:
ERROR - El puerto 'clk' está desconectado. ERROR: el puerto 'habilitar' no está conectado.
La simulación RTL funciona bien (solo estoy incluyendo el módulo superior en mi banco de pruebas). Simplemente no me deja conectar 'clk' y 'habilitar' a los pines reales.
Estoy usando Lattice Diamond 3.1.
Editar: recibo las siguientes advertencias en el informe del mapa:
ADVERTENCIA: mapa: falta el búfer de IO para el puerto de nivel superior ena ... la lógica será descartado. ADVERTENCIA: mapa: falta el búfer IO para el puerto de nivel superior clk ... la lógica será descartado.
Ejecuté el diseño a través de Quartus II y obtuve resultados de trabajo ... ¿Ideas en las que me estoy equivocando con Diamond?