乘法器的FPGA实现

        乘法在数字信号处理中被广泛应用,二进制的乘法与十进制的乘法类似,也是将乘数的每一位分别与被乘数相乘后叠加起来。二进制数由0和1组成,因此它的乘法又有其自身的特点,可以分解为被乘数的移位的累加,这大大便利了乘法器的硬件实现,二进制的乘法如下图所示,下图为3*6的计算过程。

1.基于移位相加的乘法器

1.1组合逻辑并行实现 

module multiply_parallel(
        input [3:0]         a,
        input [3:0]         b,
        output [7:0]        c
);

wire [7:0]  a1;
wire [7:0]  a2;
wire [7:0]  a3;
wire [7:0]  a4;

assign a1 = b[0] ?{ 4'd0, a }       : 8'd0;
assign a2 = b[1] ?{ 3'd0, a, 1'b0 } : 8'd0;
assign a3 = b[2] ?{ 2'd0, a, 2'b0 } : 8'd0;
assign a4 = b[3] ?{ 1'b0, a, 3'b0 } : 8'd0;

assign c = a1 + a2 + a3 + a4;
endmodule

  仿真:

1.2 时序逻辑串行实现

乘法器串行结构如下图所示 ,其中 SL 为左移,SR为右移

时序图如下

时序图说明 :

1.vld拉高,表示开始进行计算,接收到vld高电平,将a_in和b_in的值寄存到a_in_r1和b_in_r1,拉高cal_en, 开始进行乘法计算

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值