Documentos de Académico
Documentos de Profesional
Documentos de Cultura
module cuentaceros (
int [7:0] a,
output reg[2:0] Count
);
integer i;
always @*
begin
Count= 3'b0;
for (i = 0; i < 8; i = i+1)
begin
if (!a[i])Count= Count+1;
end
end
endmodule
Cuenta Ceros
module cuentaceros (
int [7:0] a,
output reg[2:0] Count
);
integer i;
always @*
begin
Count= 3'b0;
for (i = 0; i < 8; i = i+1)
begin
if (!a[i])Count= Count+1;
end
end
endmodule
Que pas?
Que el for de C es secuencial en el tiempo, y el
de Verilog es en rea!
Es decir, la semntica es distinta!
Lo mismo ocurre con las funciones que tambin
existen en Verilog. Dos invocaciones significa dos
reas ocupadas con la misma funcin.
Ojo! XST infiere hardware para estas
construcciones, pero tenemos que tener muy
claro lo que queremos hacer.
always @ *
begin
a_next = a_reg << 1;
if (a[0]==0)
count_next=count_reg + 1 ;
else
count_next=count_reg;
end
assign count=count_reg;
endmodule
done
cuenta
clk
start