今天看到书上有个8位乘法,是用加法原理累加而成,一时兴起,和cpld组的16位乘法移位原理比较了一下。
当8*8乘法时,消耗了134个LE;程序如下:
用CPLD组的16*16 代码,编译后消耗了146个LE.
当把SIZE = 16后,要消耗惊人的526个LE。
/*********************************************/
module mult_repeat(outcome,a,b);
parameter size = 16;
output[2*size:1] outcome;
input[size:1] a,b;
reg[2*size:1] outcome;
reg[2*size:1] temp_a;
reg[size:1] temp_b;
always @(a or b)
begin
outcome = 0;
temp_a = a;
temp_b = b;
repeat(size)
begin
if (temp_b[1])
outcome = outcome+ temp_a;
temp_a = temp_a <<1;
temp_b = temp_b >>1;
end
end
endmodule |