用for语句实现2个8位数相乘
//
module mult_for(out,a,b);
parameter size=8;output [2*size:1] out;
reg [2*size:1] out;
input [size:1] a,b;
integer i;
always @ (a or b)
begin
out=0;
for (i=1;i<=size;i=i+1)
if (b[i]) out=out+(a<<(i-1));
end
endmodule
用repeat实现8位二进制的乘法
//
parameter size=8;
input [size:1] a,b;
output [2*size:1] out;
reg [2*size:1] temp_a,out;
reg [size:1] temp_b;
always @ (a or b)
begin
out=0;
temp_a=a;
temp_b=b;
repeat(size)
begin
if(temp_b[1]) out=out+temp_a;
temp_a=temp_a<<1;
temp_b=temp_b>>1;
end
end
endmodule
同一循环的不同实现方式
//
integer i;
initial
for (i=0;i<4;i=i+1)
begin
$display("i=%h",i);
end
endmodule
//
integer i;
initial
begin
i=0;
while(i<4)
begin
$display("i=%h",i);
i=i+1;
end
end
endmodule
//
module loop3;
integer i;
initial
begin
i=0;
repeat (4)
begin
$display("i=%h",i);
i=i+1;
end
end