基于dsp乘法器设计c语言,DSP in FPGA : 乘法器(一)

该博客介绍了在FPGA中使用DSP48硬资源和逻辑实现乘法器的方法,重点讲解了全并行和半并行结构的乘法器设计,包括Verilog HDL代码实现。全并行结构乘法器通过加入流水线级提高了Fmax,而半并行结构虽然资源效率高但存在延迟。
摘要由CSDN通过智能技术生成

专题三:乘法器(一)

乘法运算在数字信号处理中也是比较常用,如常系数FIR中需要输入数据与FIR系数进行乘法运算。在FPGA实现乘法时可选择采用逻辑实现,也可使用硬资源,如Xilinx FPGA中的DSP48。相比于逻辑实现的乘法器,采用DSP48实现的乘法器速度较块,但是个数有限,如果在DSP48资源比较紧缺时,则只能采用逻辑实现乘法器。

首先介绍一下逻辑实现乘法器的方法,最常用的是移位相加法,基于此方法本文介绍全并行结构和半并行结构的乘法器。

1.全并行结构

如图1所示为两个16位无符号数a、b的全并行乘法器结构。

12073148567950.jpg

图1

全并行结构乘法器并行输入数据a、b,直接进行移位并且累加,所有操作都在一个时钟周期完成,输出的数据速率可以与输入数据的相同,并且输入与输出只有一个时钟周期的延时,Verilog HDL代码如下:

module multiply_lut_FP

(

input clk,

input rst,

input [15:0] a,

input [15:0] b,

output reg [31:0] p

);

//one path

reg [15:0] a_in,b_in;

always@(posedge clk)

if(rst)

begin

a_in<=16'd0;

b_in<=16'd0;

end

else

begin

a_in<=a;

b_in<=b;

end

wire [31:0] p_tmp[0:15];

generate

genvar i;

for(i=0;i<16;i=i+1)

begin:bit_mult

assign p_tmp[i] = (b_in[i]==1'b1) ? ({16'd0,a_in})<

end

endgenerate

always@(posedge clk)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值