当前位置:   article > 正文

FPGA的乘法运算_fpga可以直接写乘法吗

fpga可以直接写乘法吗

概述

当前的FPGA中一般都集成了硬件资源乘法器,我们可以在IP CORE 里调用,也可以直接在HDL里直接用"*"来实现乘法,EDA工具会自动综合成乘法器。

一、无符号数乘法

对于无符号数乘法,需要扩宽结果的位数,比如两个4位无符号数相乘,结果是8位的。

reg [3:0]a;
reg [3:0]b;
output reg [7:0]c;

always@(posedge clk or negedge rst_n)
if(!rst_n)
    begin
        c<=8'd0;
    end
else
    begin
        c<=a*b;
    end
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

二、有符号数乘法

可以在定义端口的时候直接将变量定义成有符号数

reg signed [3:0]data_a;
  • 1

也可以在运算的时候用$signed函数将无符号数直接转换为有符号数:

wire [3:0]data_a;
wire signed [3:0]data_b;
assign data_b=$signed(data_a);
  • 1
  • 2
  • 3

如果想将有符号数扩宽为更高位数的有符号数,可以将无符号数的最高位补充至最高位即可,举个例子-4,用四位二进制数表示为4’b1100,用八位二进制表示-4,只需在其前面补上4个符号位即可:8’b1111_1100。

wire signed [3:0]data_a;
wire signed [7:0]data_b;
assign data_b={4{data_a[3],data_a}};
  • 1
  • 2
  • 3
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/707931
推荐阅读
相关标签
  

闽ICP备14008679号