乘法运算中的有效数据位
与加法运算一样,我们同样考察乘数均是补码表示形式(有符号数)的情况,这也是FPGA进行数字符号处理最常用的数据表示方式,在讨论清楚补码的相关情况后,很容易得出无符号数的运算规律。
(1)对于字长分别为M、N的数据进行乘法运算,需要采用M+N为字长的数据才能得到准确的结果;
(2)对于乘法运算,不需要通过扩展位数来对齐乘数的小数点位置;
(3)当乘数为小数是,乘法结果的小数位位数等于两个乘数的小数位位数之和;
(4)当需要对乘法运算结果截取时,为保证得到正确的结果,只能取高位,而舍去低位数据,这样相当于降低了运算结果的精度;
(5)只有当两个乘数均为所能表示的最小负数(最高位位1,其余为均为0)时,才有可能出现最高位与次高位不同的情况。也就是说,只有在这种情况下,才需要M+N位字长的数据才存放准确的最终结果,其他情况下,实际均有两位相同的符号位,只需要M+N-1位字长即可存放准确的运算结果。
在 Quartus/ISE开发环境中,提供的乘法器IP核在选择输出数据位数时,如果选择全精度运算,则会自动生成M+N位字长的运算结果。在实际工程设计中,如果预先知道某位乘数不可能出现最小负值的情况,或者通过一些控制手段去除出现最小负值的情况,则完全可以只用M+N-1位字长存放运算结果哦,从而节约一位寄存器资源。如果乘法运算只是系统的中间环节,则后续的每个运算步骤均可节约一位寄存器资源。
摘抄自《数字调制解调技术的MATLAB与FPGA实现Altera/Verilog版》
乘法运算中的有效数据位相关推荐
- 假设有一个字类型的数值arry1,试编写程序统计arry1数值及其后若干数值,在字单元中存储时每个数据中含“1”数据位的个数,并将统计结果保存在res1数组中。数据段的代码定义如下: data seg
假设有一个字类型的数值arry1,试编写程序统计arry1数值及其后若干数值,在字单元中存储时每个数据中含"1"数据位的个数,并将统计结果保存在res1数组中.数据段的代码定义如下 ...
- 【基础知识】~ 数据位宽转换器
1. 概述 数据位宽转换器,一般常用于模块接口处,比如一个电路模块的输出数据位宽大于另一个模块的输入数据位宽,此时就需要进行数据位宽转换.比如SATA控制器中,内部数据位宽为32bit,但外部物理收发 ...
- c语言sgoto 标志位,如何在Go中设置TCP数据包的“不分段”标志位?(How to set “don't fragment” flag bit for TCP packet in Go?)...
如何在Go中设置TCP数据包的"不分段"标志位?(How to set "don't fragment" flag bit for TCP packet in ...
- uart中:起始位,停止位,就校验位,数据位,数据位的位数,波特率,数据通讯的接口定义
UART简介 通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称作UART.UART通信在工作中相当常见,项目中需要生成uart信号 ...
- sqlsugar mysql连接字符串_通用数据访问组件UniDAC最新版本v8.2.4,支持Lazarus中的macOS 64位...
UniDAC(Universal Data Access Components)是一款通用数据库访问组件,提供了多个数据库的直接访问,如针对Windows的Delphi, C++Builder, La ...
- 一些值得记录的题目(将数组中相同的数据删除、判断n 阶方阵是否对称、寻找矩阵中的马鞍点、将前面各数顺序后移 m 位,最后 m 个数变成最前m 个数并输出、将一长整型数转换为十六进制,以字符串形式输出)
1.设数组中的数据已经按照由小到大的顺序存放,请将数组中相同的数据删除,仅保留一个,然后以每行3个输出数组元素. #include<stdio.h> int main() {int arr ...
- 【FPGA】定点数 数据位宽 运算 位宽截取
在FPGA中,经常使用定点数表示小数,在进行各种运算时,定点数的位宽会发生变化,并且需要在适当地时候对数据的位宽进行截取. 运算要求和引起的位宽变化 假设存在两个数A.B,假定A位宽为m,小数位宽为a ...
- Linux中的粘滞位
Linux中的粘滞位 Sticky 位是一个访问权限标志位,可以用来标示文件和路径. 历史: 粘滞位是在1974年Unix的第5版中引入的,用来设置可执行文件.当可执行文件设置粘滞位之后,它能够指示操 ...
- java培训教程分享:Java中怎样将数据对象序列化和反序列化?
本期为大家介绍的java培训教程是关于"Java中怎样将数据对象序列化和反序列化?"的内容,相信大家都知道,程序在运行过程中,可能需要将一些数据永久地保存到磁盘上,而数据在Java ...
最新文章
- 是不是“异常”让我的脑子糊涂了?
- VS2019配置库文件
- python中return的理解-python中的return的返回与执行
- 允许网站使用相机和麦克风_手机使用应用时总是需要获取权限,这3个权限不能随意给,望周知...
- 数据挖掘——相似文章推荐
- 安卓模拟器切换横屏之后怎么返回竖屏
- 杭电4520小Q系列故事——最佳裁判
- ssis 数据转换_SSIS数据透视和SSIS数据透视转换概述
- 数学4如何用计算机画正切函数图像,正切函数图像
- 微机课设 | 基于STC15单片机的简易数字密码锁设计
- java请假系统毕业设计_基于java员工请假销假系统的设计与实现.doc
- Hyrax: Doubly-efficient zkSNARKs without trusted setup学习笔记
- Linux下qt程序部署到ARM开发板上: error: Upload of file “你的程序“ failed. The server said: “Failure
- 一键禁用windows defender
- syntastic 和 pathogen 安装使用
- navcat导入mysql bak_navcat excel数据导入mysql的方法
- 二十八. geotrellis使用 栅格数据色彩渲染(多波段真彩色)
- sts会自带maven吗_STS中Maven配置
- Mybatis使用教程
- 计算机毕业设计-Springboot+Vue大学生健康档案管理系统-JavaWeb大学生健康档案管理系统
热门文章
- Eclipse插件版本
- UNIX环境高级编程——进程关系
- Python安装Pillow时出现The headers or library files could not be found for zlib/jpeg错误
- C#数组维度转换:一维数组二维数组三维数组相互转换
- Yolo-v1~v3学习关键点整理
- NameError: name ‘XXX‘ is not defined
- 微信小程序支付流程(新手教程)
- 【机器学习基础】支持向量回归
- Verilog中repeat的用法
- linux复制与粘贴操作的快捷键