He tenido éxito en derivar el reloj, pero no puedo muestrear y verificar los resultados en el banco de pruebas. Adjuntando el código y el banco de pruebas escrito. Necesito encontrar una manera de eliminar el error- >
Línea 68: el objetivo de la asignación concurrente o la conexión del puerto de salida debe ser un tipo de red.
El programa-
module clk_div
#(
parameter WIDTH = 4, // Width of the register required
parameter N = 6
)
(clk,reset, clk_out);
input clk;
input reset;
output clk_out;
reg [WIDTH-1:0] reg1;
wire [WIDTH-1:0] next;
reg clk_tmp;
always @(posedge clk or posedge reset)
begin
if (reset)
begin
reg1 <= 0;
clk_tmp <= 1'b0;
end
else if (next == N)
begin
reg1 <= 0;
clk_tmp <= ~clk_tmp;
end
else
reg1 <= next;
end
assign next = reg1+1;
assign clk_out = clk_tmp;
endmodule
//-----------------------------------------------------------------------------------------------------
module sampling(clk_out, clk, result);
input clk_out;
input clk;
output reg [3:0] result;
clk_div inst (clk_out,rst,result);
reg [3:0] reg2;
always @ (posedge clk_out)
begin
if (clk==1'b1)
reg2[0]<=1;
else
reg2[0]<=0;
reg2<={reg2[2:0], clk_out};
assign result = reg2[0];
end
endmodule
Es banco de pruebas-
module tb1;
// Inputs
reg clk_out;
reg clk;
// Outputs
wire [3:0] result;
// Instantiate the Unit Under Test (UUT)
sampling uut (
.clk_out(clk_out),
.clk(clk),
.result(result)
);
initial begin
// Initialize Inputs
clk_out = 0;
clk = 0;
// Wait 100 ns for global reset to finish
#100;
// Add stimulus here
clk=1'b1;
forever #10 clk=~clk;
end
endmodule