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

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

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即可。因此,如果我们可以保证两个输入的乘数不会同时为有符号数所能表示的负数最小值,那么乘法结果的高两位都是符号位,只取其中一位即可。

往期文章:

FPGA时序约束教程:

matlab中de 乘法符号,FPGA 中的有符号数乘法相关推荐

  1. matlab中de 乘法符号,MATLAB中的*(乘)和.*(点乘)傻傻分不清?!

    MATLAB中点乘和乘的运算 0. 问题场景 最近,学校开始有MATLAB计算的课开课啦.很多小朋友都来问我为什么他们的程序无缘无故报错,答案基本都是没有分清*和.*.那么我这里就来讲一讲这俩运算的区 ...

  2. FPGA 中的有符号数乘法

      FPGA中乘法器是很稀缺的资源,但也是我们做算法必不可少的资源.7系列及之前的FPGA都是25x18的DSP,UltraScale中是27x18,我们可以通过调IP Core的方式或者原语的方式来 ...

  3. FPGA中值滤波实现并Modelsim仿真,与MATLAB中值滤波进行对比

    文章目录 一.中值滤波算法 二.FPGA实现中值滤波 2.1 3*3窗口的生成 2.2 排序模块 2.3中值滤波模块 2.4 整体RTL图 三.modeslim仿真 四.matlab中值滤波 五.效果 ...

  4. matlab中符号对象的数据类型是,符号对象(Symbolic Object)的使用

    符号对象是什么?符号对象是Matlab中一种特殊的数据类型, 其实质是"a data structure that stores a string representation of the ...

  5. matlab中双引号_MATLAB的21种特殊符号,总有一种你不知道的用法

    本文所指的特殊符号是指除了字母.数字.运算符以外的符号,包括:=;(), []:.{}''""%@~.../\*!?..+.我尽量先从常见的符号说起,非新手可以跳过前面的常见符号. ...

  6. fpga中求有符号数的绝对值

    fpga中求有符号数的绝对值 这是网上找到的方法 function [7:0] abs; input [8:0] data_in;if(data_in[8]) abs=1+(~data[7:0]);e ...

  7. 【MATLAB】符号数学计算(二):符号运算中的运算符和函数

    一般的这里就不再列举 1.算术运算符号 运算符号" ' "." .' "分别实现矩阵的共轭转置和非共轭转置. >> syms a b c d; &g ...

  8. matlab verilog 接口,使用SystemVerilog简化FPGA中的接口

    FPGA工程师们应该都会吐槽Verilog的语法,相当的不友好,尤其是对于有很多接口的模块,像AXI4/AXI-Lite这种常用的总线接口,动不动就好几十根线,写起来是相当费劲. 当然现在Xilinx ...

  9. fpga中例化乘法器_“安富利杯”赛灵思FPGA设计技巧与应用创新博文大赛------Spartan3硬件乘法器使用详解(4)...

    h前面已经介绍了Spartan3系列FPGA中硬件乘法器的用途.调用方法.结构特定等等,还介绍了使用一个专用硬件乘法器同时处理两个乘法的方法.接下来对它的一些具体使用方法做更深入的介绍. 1. 使用X ...

最新文章

  1. MPlayer编译步骤
  2. Appcan关闭主窗口
  3. 什么是PCB板上的鼠牙洞?
  4. 开源框架_跨平台开源框架对比介绍
  5. linux 基础命令 1
  6. ArcGIS API For JavaScript——空间查询(FindTask和IdentifyTask)
  7. superoneclick 2.2_总投资2.2亿!又一年产10万吨水性乳液项目开工
  8. costmap代价地图学习
  9. 2022新版UI聚合支付系统四方系统源码+修复漏洞完美版
  10. 银行系统总体架构\银行核心系统\常用金融名词解释
  11. 中国历史朝代歌:夏商与西周,东周分两段
  12. 「津津乐道播客」#380 津津有味:厨房重地举目皆是刚需,将就不得
  13. java BigDecimal.ROUND_UP和BigDecimal.ROUND_DOWN的用处
  14. 阿里云安全组设定(虚拟机端口打开)
  15. 笔记本linux如何降低功耗,细说如何降低笔记本电脑功耗
  16. linux下测试硬盘读写速度
  17. 听说ES6中新增了能够与众不同的Symbol数据类型
  18. 电影数据库开发设计——基于jsp(使用eclipse-jee,mysql-front)
  19. 如何用Python画一只肥肥的柯基狗狗——turtle库绘制椭圆与弧线实践
  20. 【java】个人项目:中小学数学卷子自动生成程序

热门文章

  1. 常用文本编辑器英文大小写切换
  2. 【论文阅读笔记 + 代码解读】(2018 AAAI)ST-GCN
  3. 【机器学习】凸集、凸函数、凸优化、凸优化问题、非凸优化问题概念详解
  4. Oracle 11g重建控制文件——控制文件全部丢失,从零开始
  5. 百度css3背景图代码,CSS3 实现花式背景图案
  6. linux驱动K10运算卡,NVIDIATESLA丽台K20K10C2075C2070运算加速卡
  7. 阿里云效平台使用 云效代码管理
  8. el-date-picker 日期过滤周末节假日
  9. 使用日期类和计时器模拟商品促销
  10. 将checkbox选中样式用图片替换