FPGA-阵列乘法器的设计(利用全加器 基于CRA阵列乘法器)

       在计算机中,乘法是数字信号处理中的重要角色。 

       四位无符号数相乘的手算运算可以提炼出最简单的乘法器的计算算法,利用手算乘法的思想,算出每次的部分积然后求和。这样的方法思想较为容易理解前面的(FPGA-定点乘法器)已经给出具体的代码的设计,代码中设计的是4位,则需要4个时钟周期,如果是N位则会需要N个时钟周期进行运行,这样运行的乘法器运行效率不高(也可以看做是串行的),所以为了提高效率采用硬件的叠加和流水线设计

附代码:

全加器:

module adder(dina,dinb,c,ci,dout
    );
	input dina;
	input dinb;
	input c;
	
	output reg ci;
	output reg dout;
	always@(*)begin
		{ci,dout}=dina+dinb+c;
	end

endmodule

累加器module

module add_demo(dina,xi,yi,dinb,out_1,out_2,out_3,out_4
    );
	input  dina ;//部分积输入
	input  xi ;//Xi
	input  yi ;//Yi
	input  dinb ;//进位输入
    
	output reg out_1;//Xi
	output out_2;//进位输出
	output reg out_3;//Yi
	output out_4;//部分积输出
	
	wire din1=xi&yi;
	
	always@(*)begin
		out_1=yi;
		out_3=xi;
	 end
	
	adder u_adder(
	.dina(dina),
	.dinb(din1),
	.c(dinb),
	.ci(out_2),
	.dout(out_4)
    );

endmodule

阵列乘法器:

module array_multiplier_1(X,Y,P
    );
	input  [3:0] X;
	input  [3:0] Y;
    
	output [7:0] P;
	
	wire out_1_00,out_2_00,out_3_00;
	add_demo ad_00(
	.dina(1'b0),.xi(X[0]),.yi(Y[0]),.dinb(1'b0),
	.out_1(out_1_00),.out_2(out_2_00),.out_3(out_3_00),.out_4(P[0])
    );
	
	wire out_1_01,out_2_01,out_3_01,out_4_01;
	add_demo ad_01(
	.dina(1'b0),.xi(X[1]),.yi(out_1_00),.dinb(out_2_00),
	.out_1(out_1_01),.out_2(out_2_01),.out_3(out_3_01),.out_4(out_4_01)
    );
	
	wire out_1_02,out_2_02,out_3_02,out_4_02;
	add_demo ad_02(
	.dina(1'b0),.xi(X[2]),.yi(out_1_01),.dinb(out_2_01),
	.out_1(out_1_02),.out_2(out_2_02),.out_3(out_3_02),.out_4(out_4_02)
    );
	
	wire out_2_03,out_3_03,out_4_03;
	add_demo ad_03(
	.dina(1'b0),.xi(X[3]),.yi(out_1_02),.dinb(out_2_02),
	.out_2(out_2_03),.out_3(out_3_03),.out_4(out_4_03)
    );

	wire out_1_10,out_2_10,out_3_10;
	add_demo ad_10(
	.dina(out_4_01),.xi(out_3_00),.yi(Y[1]),.dinb(1'b0),
	.out_1(out_1_10),.out_2(out_2_10),.out_3(out_3_10),.out_4(P[1])
    );
	
	wire out_1_11,out_2_11,out_3_11,out_4_11;
	add_demo ad_11(
	.dina(out_4_02),.xi(out_3_01),.yi(out_1_10),.dinb(out_2_10),
	.out_1(out_1_11),.out_2(out_2_11),.out_3(out_3_11),.out_4(out_4_11)
    );
	
	wire out_1_12,out_2_12,out_3_12,out_4_12;
	add_demo ad_12(
	.dina(out_4_03),.xi(out_3_02),.yi(out_1_11),.dinb(out_2_11),
	.out_1(out_1_12),.out_2(out_2_12),.out_3(out_3_12),.out_4(out_4_12)
    );
	
	wire out_2_13,out_3_13,out_4_13;
	add_demo ad_13(
	.dina(out_2_03),.xi(out_3_03),.yi(out_1_12),.dinb(out_2_12),
	.out_2(out_2_13),.out_3(out_3_13),.out_4(out_4_13)
    );
	
	wire out_1_20,out_2_20,out_3_20;
	add_demo ad_20(
	.dina(out_4_11),.xi(out_3_10),.yi(Y[2]),.dinb(1'b0),
	.out_1(out_1_20),.out_2(out_2_20),.out_3(out_3_20),.out_4(P[2])
    );
	
	wire out_1_21,out_2_21,out_3_21,out_4_21;
	add_demo ad_21(
	.dina(out_4_12),.xi(out_3_11),.yi(out_1_20),.dinb(out_2_20),
	.out_1(out_1_21),.out_2(out_2_21),.out_3(out_3_21),.out_4(out_4_21)
    );
	
	wire out_1_22,out_2_22,out_3_22,out_4_22;
	add_demo ad_22(
	.dina(out_4_13),.xi(out_3_12),.yi(out_1_21),.dinb(out_2_21),
	.out_1(out_1_22),.out_2(out_2_22),.out_3(out_3_22),.out_4(out_4_22)
    );
	
	wire out_2_23,out_3_23,out_4_23;
	add_demo ad_23(
	.dina(out_2_13),.xi(out_3_13),.yi(out_1_22),.dinb(out_2_22),
	.out_2(out_2_23),.out_3(out_3_23),.out_4(out_4_23)
    );
	
	wire out_1_30,out_2_30;
	add_demo ad_30(
	.dina(out_4_21),.xi(out_3_20),.yi(Y[3]),.dinb(1'b0),
	.out_1(out_1_30),.out_2(out_2_30),.out_4(P[3])
    );
	
	wire out_1_31,out_2_31;
	add_demo ad_31(
	.dina(out_4_22),.xi(out_3_21),.yi(out_1_30),.dinb(out_2_30),
	.out_1(out_1_31),.out_2(out_2_31),.out_4(P[4])
    );
	
	wire out_1_32,out_2_32;
	add_demo ad_32(
	.dina(out_4_23),.xi(out_3_22),.yi(out_1_31),.dinb(out_2_31),
	.out_1(out_1_32),.out_2(out_2_32),.out_4(P[5])
    );
	
	add_demo ad_33(
	.dina(out_2_23),.xi(out_3_23),.yi(out_1_32),.dinb(out_2_32),
	.out_2(P[7]),.out_4(P[6])
    );
endmodule

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Vuko-wxh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值