/*
目的:对比for得到的乘法器最高频率
结论: 1、205M 远远高于for的80M,且资源分布均匀(加法器同时8个相加)
2、改为加法器4个相加流水线设计 频率升为211M 明显加法器不能太多
3、再改为2级加法器,375M 真是意外的惊喜
*/
module top(
input clk,
input [7:0] a,
input [7:0] b,
output reg [15:0] q
);
reg [15:0] x,y,z,h;
reg [15:0] temp0,temp1,temp2,temp3,temp4,temp5,temp6,temp7;
initial begin
$display("3+2 = %d",5);
end
always@(posedge clk)begin
if(b[0])
temp0 <= a;
else
temp0 <= 0;
end
always@(posedge clk)begin
if(b[1])
temp1 <= a<<1;
else
temp1 <= 0;
end
always@(posedge clk)begin
if(b[2])
temp2 <= a<<2;
else
temp2 <= 0;
end
always@(posedge clk)begin
if(b[3])
temp3 <= a<<3;
else
temp3 <= 0;
end
always@(posedge clk)begin
if(b[4])
temp4 <= a<<4;
else
temp4 <= 0;
end
always@(posedge clk)begin
if(b[5])
temp5 <= a<<5;
else
temp5 <= 0;
end
always@(posedge clk)begin
if(b[6])
temp6 <= a<<6;
else
temp6 <= 0;
end
always@(posedge clk)begin
if(b[7])
temp7 <= a<<7;
else
temp7 <= 0;
end
always@(posedge clk)begin
x <= temp0 + temp1;
h <= temp2 + temp3;
y <= temp4 + temp5;
z <= temp6 + temp7;
q <= x+y+z+h;
end
endmodule
///////////////////////////////////////////////////////////for/////////////////////////////////////////////
/*
目的:测试for在时序电路中 乘法器 能实现的最高频率
结论:8个循环最高跑80M ,,,7个循环90M 8 是一个分界点
*/
module top(
input clk,
input [7:0] a,
input [7:0] b,
output reg [15:0] q
);
reg [15:0] a_t;
reg [7:0] i;
always@(posedge clk)begin
q = 0;
a_t = {8'b0,a};
i = 0;
for(i = 0;i < 8;i = i+1)begin
if(b[i])begin
q = q + a_t;
end
a_t = a_t << 1;
end
end
endmodule