阅读有感——Verilog对数据进行四舍五入(round)与饱和(saturation)截位

2023-11-14

思考1:FPGA中只能定义定点数吗?

首先,我没有搞清楚定点数与浮点数的定义。定点数就是小数位固定不变的数叫做定点数,也就是小数点是定在某个位置不变的数。

结论:FPGA中的信号可以是定点型也可以是浮点型,这只是一种数据表示形式,各有优缺点。

(1)浮点数的优势

  • 更宽的动态范围。
  • 可缩短复杂算法的开发周期:采用浮点数由于其较宽的动态范围可以满足绝大多数场合的需求,较少碰到溢出的问题,因此在复杂算法开发中可以省去处理溢出问题的这些时间。
  • 统一的标准数据格式:采用定点数运算时,为满足动态范围或精度要求,算法中的某些操作需要增加字长,某些操作需要减少字长,从而使得定点数的格式根据需求而变化,就会出现一个设计中有不同的定点数格式。而浮点数采用了单精度或双精度,这也增强了代码的复用性,降低了算法建模的复杂度。

(2)定点数的优势

  • 消耗资源相对较小,并且计算速度相对浮点数更快。

从应用场合来看,很多场合采用定点数即可满足系统性能需求,但有些场合对精度要求很高,如雷达成像、医学成像、高性能计算等需要采用浮点数。

思考2:定点数只能表示整数,浮点数只能表示小数?

首先,我没有搞清楚定点数与浮点数的定义。所以这个问题本身就有问题。定点数就是小数位固定不变的数叫做定点数,也就是小数点是定在某个位置不变的数。

所以,定点数可以表示①有符号定点整数②无符号定点整数③有符号定点小数④无符号定点小数;

浮点数:小数点是浮动的,不是在一个固定的位置上的
定点数:小数点的位置是固定的
在FPGA内部只能处理定点数无法处理浮点数
当浮点数转换成定点数的时候要明确的知道小数有多少位,整数有多少位

思考3:FPGA中如何定义浮点数与定点数?

reg unsigned [15:0]a;

wire signed b;

FPGA中定义的信号类型,默认是定点型,如果转化至浮点数,需要使用floating-point IP核。

思考4:截断与强制类型转换

wire signed [7:0] b2=-3;

wire [7:0] c=255;

wire [7:0] a2;

assign a2 = b2 - c2;

运算顺序:

第一步:b2的值-3转化至补码形式fe;c2的值255转化至补码形式ff

第二步:计算b2-c2,结果是有符号数,位宽为10bit(10_1111_1110)

第三步:类型转换(有符号数转化至无符号数),截位(10位截取其中8位)。结果为1111_1110

思考5:二进制存储与实际数据之间的误差

reg signed [15:0]data;

对于16位的符号数最大可以表示的值为32767,最小值为-32768。3位整数位宽,12位的小数位宽,最高位的符号位1位。

第14,13,12位最大可以表示7,小数最大12位,计算精度的方法位1/(2的12次方)= 0.000244140625

以2.918为例:
2.918/0.000244140625=11952.128~=11952,包含小数,小数部分进行四舍五入,这个就叫做量化的误差。这个值就是定点后的2.918。

最后,在FPGA中,随着信号处理的层次加深,对信号进行乘、累加、滤波等运算后,可能输入时仅为8位位宽的信号会扩展成几十位位宽,位宽越宽,占用的硬件资源就越多,但位宽超过一定范围后,位宽的增宽并不会对处理精度带来显著的改善,这时就需要对信号进行截位。写过FPGA HDL代码的童鞋都应该知道,截位是最为经常的一种操作。其次,直接截位实际造成的效果是信号整体向负无穷方向平移了,即对于一个白噪声序列来讲,原本均值为零,截位后均值变为了负数。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

阅读有感——Verilog对数据进行四舍五入(round)与饱和(saturation)截位 的相关文章

  • DDR3学习总结(一)

    简介 DDR3 SDRAM常 简称 DDR3 是当今较为常见的一种储存器 在计算机及嵌入式产品中得到广泛应用 特别是应用在涉及到大量数据交互的场合 比如电脑的内存条 对DDR3的读写操作大都借助IP核来完成 本次实验将采用 Xilinx公司
  • 【Xilinx Vivado时序分析/约束系列6】FPGA开发时序分析/约束-IO时序输入延时

    目录 源同步FPGA输入时序分析的模型 input delay约束 极限input delay 往期系列博客 源同步FPGA输入时序分析的模型 以下为源同步FPGA输入时序分析的模型的示意图 在之前的文章中介绍过 在此介绍一下各个时钟延时的
  • Verilog:【1】时钟分频电路(clk_divider.sv)

    碎碎念 作为Basic Verilog的第一个学习笔记 打算用这种命名方式来对博客进行命名 应该有助于检索 简单阅览了部分工程的代码 发现里面有很多嵌套关系 因此决定先从基础模块开始 也是为了整个博客内容的流畅性 读者朋友有问题的话 也可以
  • 基于单光子探测的多脉冲周期符合远距离测距

    激光测距技术通过发射主动激光信号对目标进行探测 接收由目标漫反射回来的回波信号并进行统计 处理及换算 从而得到目标的距离 速度信息 实现对目标距离信息的探测 凭借其系统简单 操作灵活 高精度等特点 被广泛运用于民用 科研及军事等各类场合 基
  • DDR的VTT有源端接和无源端接(slua886a笔记)

    DDR的VTT有源端接和无源端接 slua886a笔记 背景 对于DDR的VTT端接 一直有说法是有源端接可降低功耗 之前一直没仔细理解其中原因 现在找了些相关的资料来介绍和对比有源和无源端接 理解有源端接的优点和降低功耗的原理 主要基于读
  • modelsim 关联 notepad++

    modelsim 控制窗口敲入 1 proc external editor filename linenumber exec I notepad notepad exe filename 2 set PrefSource altEdito
  • Verilog中forever、repeat、while、for四类循环语句(含Verilog实例)

    当搭建FPGA逻辑时 使用循环语句可以使语句更加简洁易懂 Verilog中存在四类循环语句 如标题 几种循环语句的具体介绍和用法如下 1 forever 连续的执行语句 语法格式 forever
  • MIPI D-PHY介绍(二) FPGA

    MIPI D PHY介绍 二 FPGA 随着移动设备的广泛普及 MIPI D PHY作为其最主要的物理层标准之一 被越来越多地使用在各种嵌入式系统中 本文将详细介绍MIPI D PHY的工作原理和在FPGA设计中的实现方法 MIPI D P
  • 【FPGA入门】第八篇、FPGA驱动VGA实现动态图像移动

    目录 第一部分 实现效果 第二部分 动态VGA显示的原理 1 将动态显示的区域提前进行赋值 2 图像块的移动是每张图片叠加后的效果 3 如何实现图像块位置的改变 第三部分 系统结构和驱动波形 1 系统的Top down结构 2 图像块移动的
  • PLL时钟约束

    方法 1 自动创建基时钟和 PLL 输出时钟 例 derive pll clocks 这一方法使您能够自动地约束 PLL 的输入和输出时钟 ALTPLL megafunction 中指定的 所有 PLL 参数都用于约束 PLL 的输入和输出
  • Matlab 高斯信道下QPSK通带通信系统的简单仿真

    1 原理 2 仿真 3 总结反思 4 参考资料 1 原理 QPSK的具体内容请参考百度 QPSK的调制jie框图大致如下 QPSK信号可以采用正交调制的方式产生 如第一张图片的左半部分 I路信号与cos 信号相乘 Q 路信号与sin信号相乘
  • 二、RISC-V SoC内核注解——译码 代码讲解

    tinyriscv这个SoC工程的内核cpu部分 采用经典的三级流水线结构进行设计 即大家所熟知的 取值 gt 译码 gt 执行三级流水线 另外 在最后一个章节中会上传额外添加详细注释的工程代码 完全开源 如有需要可自行下载 上一篇博文中注
  • FPGA零基础学习之Vivado-UART驱动教程

    FPGA零基础学习之Vivado UART驱动教程 本系列将带来FPGA的系统性学习 从最基本的数字电路基础开始 最详细操作步骤 最直白的言语描述 手把手的 傻瓜式 讲解 让电子 信息 通信类专业学生 初入职场小白及打算进阶提升的职业开发者
  • 最详细的Vivado安装教程

    V i v a d o 安 装
  • 【FPGA】:频率测量

    转载 1 FPGA频率测量的三种方法 直接测量法 间接测量法 等精度测量法
  • xilinx xdma PCIe中断bug

    xilinx xdma PCIe中断存在bug bug1 此中断虽然是msi或者msx中断 但是不中断cpu bug2 此中断不是边沿中断 而是电平中断 在驱动层需要不断地轮训查询中断事件 bug3 此中断持续时间必须长 而且在收到中断应答
  • 【DDR3 控制器设计】(3)DDR3 的写操作设计

    写在前面 本系列为 DDR3 控制器设计总结 此系列包含 DDR3 控制器相关设计 认识 MIG 初始化 读写操作 FIFO 接口等 通过此系列的学习可以加深对 DDR3 读写时序的理解以及 FIFO 接口设计等 附上汇总博客直达链接 DD
  • Verilog HDL——Modelsim仿真

    常用testbench语法 finish 和 stop finish任务用于终止仿真并跳出仿真器 stop任务则用于中止仿真 timescale time unit time precision time unit指定计时和延时的测量单位
  • Matlab图像处理系列——图像复原之噪声模型仿真

    微信公众号上线 搜索公众号 小灰灰的FPGA 关注可获取相关源码 定期更新有关FPGA的项目以及开源项目源码 包括但不限于各类检测芯片驱动 低速接口驱动 高速接口驱动 数据信号处理 图像处理以及AXI总线等 本节目录 一 图像复原的模型 二
  • TRICONEX MA2211-100 芯片上相互连接

    TRICONEX MA2211 100 芯片上相互连接 TRICONEX MA2211 100 所有相同的组件 io的电源 处理器 和内存将需要 但是 你可以看到所有这些带存储器和处理器的OO板 针不能嵌入到一个小的单片机上 现在是 普拉克

随机推荐

  • 使用 webpack 对项目进行打包发布

    打包发布 1 为什么要打包发布 项目开发完成之后 需要使用 webpack 对项目进行打包发布 主要原因有以下两点 开发环境下 打包生成的文件存放于内存中 无法获取到最终打包生成的文件 开发环境下 打包生成的文件不会进行代码压缩和性能优化
  • 复旦大学黄萱菁:自然语言处理中的表示学习

    不到现场 照样看最干货的学术报告 嗨 大家好 这里是学术报告专栏 读芯术小编不定期挑选并亲自跑会 为大家奉献科技领域最优秀的学术报告 为同学们记录报告干货 并想方设法搞到一手的PPT和现场视频 足够干货 足够新鲜 话不多说 快快看过来 希望
  • 【毕设】车牌识别系统的设计与实现

    车牌识别系统的设计与实现 毕设记录 1 前言 源码见评论区 2 开发环境 3 VS2017配置OpenCV运行第一个小程序 19 12 27 3 1 第一个小程序 3 2 参考链接汇总 4 车牌定位 19 12 27 4 1 知识点提要 4
  • python3 查看Django版本

    由于python3 与 Django存在不兼容的问题 需要用相对应的Django版本号跟python3进行匹配 Django版本号地址 https docs djangoproject com en 1 9 releases
  • nlp练习题以及答案(自用)

    2 000 IP 281470860753233 13 08 57 13 10 12 01 15 68 77 下面哪种是由多个 键 值 对组成的无序序列 列表 元组 x 字典 集合 2 000 IP 281470860753233 13 1
  • CentOS7.6安装离线编译安装Redis4.0.9

    下载地址 https redis io download 文件上传至 usr local tar xzf redis 4 0 9 tar gz cd redis 4 0 9 yum install gcc tcl y make MALLOC
  • 想知道微信怎么做指纹支付开发?看这里!

    欢迎大家前往腾讯云 社区 获取更多腾讯海量技术实践干货哦 作者简介 Henryye 叶轩 来自腾讯微信事业群 主要负责腾讯开源项目TENCENT SOTER GitHub地址 https github com Tencent soter 生
  • seaborn导入数据集报错 <;urlopen error [Errno 11004] getaddrinfo failed> 数据集链接超时,获取地址失败错误

    seaborn导入数据集报错
  • uniapp打包成H5,为什么本地访问页面空白?

    1 点击菜单栏发行 点击选择网站 H5手机版 2 在网站域名这一栏填写 网站域名 例如www xxx com或者你的服务器的IP地址47 103 XX XX 这个地址是你将项目打包之后存放放静态文件的地址 我这里为了考虑到安全因素 将自己的
  • 免费资源网站大全

    网盘类 网盘类百搭 放第一个了 推荐 盘多多 http www panduoduo net 去转盘 http www quzhuanpan com Bdsola http www 3134 cc 西林街 http www xilinjie
  • Richard Stevens的几本书

    版权声明 转载时请以超链接形式标明文章原始出处和作者信息及本声明 http stevens0102 blogbus com logs 37223648 html 博客名取为 纪念Richard Stevens 居然没有写几篇与Stevens
  • TX 和RX 代表什么

    tx是发送 transport rx是接收 receive 光纤中是成对出现的 收发是1对 收发必须同时 只收不发 只发不收都是有问题的
  • pg_dump 逻辑备份

    pg dump逻辑备份 1 单独备份表 schema database 2 除了备份为SQL文本格式 也支持压缩格式或 TAR包格式 3 导出的文件在客户端本地 导出在SERVER端 pg dump dbname gt tmp dbname
  • 什么是Java注解,如何创建和使用注解?

    首先 我们来解释一下什么是Java注解 简单来说 Java注解就是给代码加上一些注释 但是这些注释不是给编译器看的 而是给Java虚拟机 JVM 看的 这些注解可以让我们在运行时获取一些信息 或者对代码进行一些特殊的处理 那么 我们如何创建
  • ajax传值 vue_vue2.0 axios post请求传参问题(ajax请求)

    最近需要做一个项目用vue 由于之前没接触过所以也想挑战下 我不会撘项目 果断选择网上现成搭好的项目 最后我们选择了vue element admin网上项目地址放这里 axios post请求问题 项目中用的ajax请求是 axios 废
  • Qt Creater快速定义函数的快捷键

    1 简介 在Qt creator中编写函数的时候 在头文件编写了函数 需要在相应的cpp文件中编写对应的函数定义实现 如果每次都需要手动的敲击全部的代码 这会非常的耗时耗力 显得很方便 这时候就需要巧妙的利用好Qt creator这款IDE
  • DOS 常用批处理命令

    一 call 功能 在批处理中调用别的批处理或者可运行程序 命令格式 CALL 驱动盘符 路径 文件名 参数 示例 call ex bat echo off call E RDA 8955 CSDTK4 CSDTKvars bat set
  • 苍蓝誓约服务器维护什么时候结束,《苍蓝誓约》2月13日09:00停服维护公告

    原标题 苍蓝誓约 2月13日09 00停服维护公告 尊敬的指挥官您好 我们计划将于2月13日09 00 2月13日11 00对作战海域进行停服维护 届时各位指挥官将无法进入游戏 停服时间会根据维护情况提前或顺延 维护结束后 各位指挥官将会收
  • win7 扩展双屏后 双屏同时显示任务栏

    扩展屏幕下都显示任务栏 第一步 Dual Monitor Taskbar 下载 下载链接 链接 http pan baidu com s 1pKxYUFL 密码 gu5c 第二步 安装完在扩展屏幕上便会出现任务栏 第三步 在扩展屏下任务栏中
  • 阅读有感——Verilog对数据进行四舍五入(round)与饱和(saturation)截位

    思考1 FPGA中只能定义定点数吗 首先 我没有搞清楚定点数与浮点数的定义 定点数就是小数位固定不变的数叫做定点数 也就是小数点是定在某个位置不变的数 结论 FPGA中的信号可以是定点型也可以是浮点型 这只是一种数据表示形式 各有优缺点 1