0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

FPGA有符号数乘法操作指南

汽车玩家 来源:科学计算technomania 作者:猫叔 2020-03-08 17:14 次阅读

FPGA中乘法器是很稀缺的资源,但也是我们做算法必不可少的资源。7系列及之前的FPGA都是25x18的DSP,UltraScale中是27x18,我们可以通过调IP Core的方式或者原语的方式来进行乘法操作。在里面可以设置有符号还是无符号数乘法。

FPGA有符号数乘法操作指南

FPGA有符号数乘法操作指南

当然,我们也可以直接使用*符合来进行乘法,对于无符号的乘法

reg [7:0] ubyte_a;
reg [7:0] ubyte_b;
(* use_dsp48="yes" *)
output reg[15:0] u_res;

always @ ( posedge clk ) begin 
    if(rst)
        u_res <= 'b0;
    else
        u_res <= ubyte_a * ubyte_b;
end

有符号乘法可以在Verilog中使用signed来标注。

reg signed [7:0] byte_a;
reg signed [7:0] byte_b;
(* use_dsp48="yes" *)
reg signed [15:0] res;

always @ ( posedge clk ) begin 
    if(rst)
        res <= 'b0;
    else
        res <= byte_a * byte_b;
end

当然我们也要理解有符号数乘法的原理,其实就是扩位乘法,把高位都补充为符号位。

有符号数乘法:

reg [7:0] ubyte_a;
reg [7:0] ubyte_b;
(* use_dsp48="yes" *)
reg [15:0] res_manul;

always @ ( posedge clk ) begin
    if(rst)
        res_manul <= 'b0;
    else
        res_manul <= {{8{byte_a[7]}},ubyte_a} * {{8{ubyte_b[7]}},ubyte_b};
end

关于乘法输出的位宽,我们知道,两个8bits的无符号数乘法,结果的位宽是16bits,但对于两个8bits有符号数的乘法,只要两个数不同时为-128,即二进制0b1000_0000,那么输出结果的高两位都是符号位,我们只需要取低15bits即可。因此,如果我们可以保证两个输入的乘数不会同时为有符号数所能表示的负数最小值,那么乘法结果的高两位都是符号位,只取其中一位即可。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • dsp
    dsp
    +关注

    关注

    551

    文章

    7824

    浏览量

    346834
  • FPGA
    +关注

    关注

    1620

    文章

    21510

    浏览量

    598938
收藏 人收藏

    评论

    相关推荐

    FPGA Verilog HDL什么奇技巧?

    今天给大侠带来在FPAG技术交流群里平时讨论的问题答疑合集(九),以后还会多推出本系列,话不多说,上货。 交流问题(一) Q:Verilog 什么奇技淫巧? A:在 Verilog 中,以下这些
    发表于 09-12 19:10

    EasyGo 实时仿真 NetBox 操作指南

    ▍基于FPGA自定义模型的控制与仿真 02 操作指南     首先,找到NetBox的电源接口,接入电源。 短按「开关」
    的头像 发表于 09-04 18:30 303次阅读

    LM70 SPI/MICROWIRE 10位带符号数字温度传感器数据表

    电子发烧友网站提供《LM70 SPI/MICROWIRE 10位带符号数字温度传感器数据表.pdf》资料免费下载
    发表于 08-14 09:28 0次下载
    LM70 SPI/MICROWIRE 10位带<b class='flag-5'>符号数</b>字温度传感器数据表

    LM12454/LM12458/LM12H458 12位符号数据采集系统数据表

    电子发烧友网站提供《LM12454/LM12458/LM12H458 12位符号数据采集系统数据表.pdf》资料免费下载
    发表于 07-22 09:25 0次下载
    LM12454/LM12458/LM12H458 12位<b class='flag-5'>符号数</b>据采集系统数据表

    matlab与FPGA数字信号处理系列 Verilog 实现并行 FIR 滤波器

    能涉及到对符号数的处理问题 https://zhuanlan.zhihu.com/p/342108822 作者:FPGA探索者,
    发表于 05-24 07:48

    易灵思FPGA flash操作原理

    易灵思FPGA flash操作原理分享
    的头像 发表于 04-09 15:03 807次阅读

    常用的电气元件符号哪些?

    以上是一些常见的电气元件符号,它们在电路图和设计中起着至关重要的作用。通过使用标准化的电气元件符号,可以确保电路图的准确性和可靠性,从而提高工程设计的效率和质量。
    的头像 发表于 04-01 13:24 1471次阅读

    char是符号类型还是无符号类型?

    看一个C语言的笔试题,题目很简单,问char是符号类型还是无符号类型?
    的头像 发表于 03-17 10:15 955次阅读

    国产高端fpga芯片哪些

    国产高端FPGA芯片多种,以下是一些知名的国产FPGA芯片,
    的头像 发表于 03-15 14:01 2043次阅读

    Versal FPGA中的浮点计算单元DSPFP32介绍

    Versal FPGA中最新的DSP原语DSP58,它在最新的DSP48版本上已经了许多改进,主要是从27x18符号乘法器和48位后加法
    的头像 发表于 02-22 09:22 1250次阅读
    Versal <b class='flag-5'>FPGA</b>中的浮点计算单元DSPFP32介绍

    verilog中数据的符号属性(符号数和无符号数)探究根源

    为了省流,还是先甩结论。符号数和无符号数的最本质区别就是:符号位的识别和高位拓展。除此之外,另一个区别就是从人的角度如何如何读这个数,或者说$display(%d)打印时打印的值是什
    的头像 发表于 12-10 10:50 1122次阅读
    verilog中数据的<b class='flag-5'>符号</b>属性(<b class='flag-5'>有</b><b class='flag-5'>符号数</b>和无<b class='flag-5'>符号数</b>)探究根源

    verilog中有符号数和无符号数的本质探究

    不知道有没有人像我一样,长久以来将verilog中的符号数视为不敢触碰的禁区。
    的头像 发表于 12-04 16:13 776次阅读
    verilog中有<b class='flag-5'>符号数</b>和无<b class='flag-5'>符号数</b>的本质探究

    FPGA与ADC数字数据输出的接口指南

    电子发烧友网站提供《FPGA与ADC数字数据输出的接口指南.pdf》资料免费下载
    发表于 11-28 09:40 0次下载
    <b class='flag-5'>FPGA</b>与ADC数字数据输出的接口<b class='flag-5'>指南</b>

    Altera FPGA内置的乘法器为何是18位的?

    Altera的FPGA内置的乘法器为何是18位的?
    发表于 10-18 07:01

    RF射频无线终端技术操作指南

    RF射频无线终端技术操作指南,包含测试方案和电路图集
    发表于 09-26 06:53