文章目录

  • 背景
  • 定点数的表示与计算

背景

首先,我们要明确的是不管是什么数字,一切数字在计算机中都是采用二进制表示的,就算你是小数点数。所以,这些概念,我们一定要屡清楚。下面,我们马上就来看看。转载需要与博主联系。
作者:ciscomonkey

定点数的表示与计算

定点数具有三种表示的形式,原码、反码、以及补码。

  • 原码

关于原码,例如二进制 0△110 表示+0.75;1△110表示的是-0.75.这一点很好理解,因为0.75*2^3(定点三位)=6 也就是二进制110.
简单的说如何将小数转换为十进制数呢。利用matlab提供的整转二进制函数dec2bin很容易获得转换结果。即需要先将十进制小数乘以一个比例因子2^B-1,并进行四舍五入操作取整。转换函数的表达式子是:

dec2bin(round(abs(D)*2^(B-1)+(2^(B-1))*(d<0)),B)

需要说明的是十进制的小数转换为二进制存在误差,其误差大小由二进制数的位数决定的。

x表示实际的数(一个浮点数), q表示它的Qn型定点小数(一个整数)。

  • 反码
    正数的反码与原码相同,负数的反码为原码除符号位的所有位取反,及得到负数的反码。例如说,十进制的-0.75的二进制原码表示为x=1△110,其反码为1△001
  • 补码
    负数的补码就是在反码的最低位加1.补码最重要的特性就是将减法用加法运算实现。同样,将十进制数转换成补码形式的二进制数也可以用dec2bin函数实现。

`

 dec2bin(round(D*2^(B-1))+ 2 ^ B*(D<0),B)

我们用数学表达式总结一下如何将小数定点化

q = (int) (x * 2^n)x = (float)q/2^n
其中n代表实际的数中,小数点后保留的位数

假设q1,q2,q3表达的值分别为x1,x2,x3
q3 = q1 + q2 若 x3 = x1 + x2

q3 = q1 - q2 若 x3 = x1 - x2

q3 = q1 * q2 / 2^n若 x3 = x1 * x2

q3 = q1 * 2^n / q2若 x3 = x1 / x2

对于加减法到比较简单,对于乘除法,我们对/ 2 ^ n和* 2^n可以简单的用移位来计算。所以定点小数的运算比浮点小数要快的多。

用Q12来计算2.1 * 2.2,先把2.1 2.2转换为Q12定点小数:
2.1 * 2^12 = 8601.6 = 8602
2.2 * 2^12 = 9011.2 = 9011
(8602 * 9011) >> 12 = 18923
18923的实际值是18923/2^12 = 4.619873046875 和实际的结果 4.62相差0.000126953125,对于一般的计算已经足够精确了。

经常有人问, fpga里小数乘法怎么搞?

如果你乐意, 按照IEEE754标准做"浮点"型运算的ip当然最好(虽然面积上不太好).
不过,很多情况下,没有这个必要.

一般我们就用"定点"了.
你得自己"定个点", 比如用16位, 分成8位整数8位小数(后面记为"(8.8)"), 即"定点"在第8位.
那么:
1 -> 16’h0100;
1.5 -> 16’h0180;
-1.5 -> -1.5256 + 65536(补码) -> 16’hFE80(其实就是-16’sh0180, 让综合器给我们算补码去~~);
1.164 -> 1.164
256 = 298 = 16’h012A

所以 signed input [15:0] a (也是"8整.8小")和 1.164相乘给 signed output [15:0] mul (也是"8整.8小"), 直接写:
assign mul = (a * 16’sh012A) >>>8;
就行了, 当然, 你的fpga里有dsp block最好, 不然也要几百个LE的.

总结:
module fixpmul
#(parameter IW = 8,parameter FW = 8
)(input signed [IW+FW-1 : 0] a,input signed [IW+FW-1 : 0] b,output signed [IW+FW-1 : 0] o
);(* multstyle = "dsp" *) wire signed [IW*2+FW*2-1 : 0] long;assign long = a * b;assign o = long >>> FW;
endmodule

FPGA实现数字信号处理的定点运算相关推荐

  1. FPGA进行数字信号处理通过DAC转化为波形的初步理解

    本思路是借鉴大佬的思路加上个人的一些总结进行汇总,由于是初学如有不足之处望各位大佬指正 FPGA是数字电路,怎么产生模拟的波形呢?如果单纯的使用FPGA是无论如何也产生不了连续不断的波形,一般都是使用 ...

  2. 新书预告:Xilix FPGA数字信号处理设计——基础版

    掌握FPGA数字信号处理设计需满足三个条件:熟悉FPGA设计方法.理解数字信号处理理论.掌握理论的工程实现方法.对初学者来讲,每个条件看似都难以逾越.杜勇老师完美融合课程教学与工程设计的需求特点,以独 ...

  3. 【 数字信号处理 】定点数的表示之定点数的字长问题

    目录 字长基本问题 溢出问题 定点数据的量化模式: 定点数据的溢出模式: 字长基本问题 字长(位宽)和小数部分字长共同构成了定点数的两个要素.以wl表示字长,fl表示小数部分字长,那么有符号定点数以F ...

  4. 【 FPGA 】数字系统设计方法的演变

    前几天无意中打开了Vivado HLS这个设计工具,并看了几眼数据手册,大概是说有种更高抽象级别的设计方式,当然我是不知道的,也没有深究,今天看到<基于FPGA的数字信号处理>这本书,提到 ...

  5. matlab pburg,现代数字信号处理——AR模型

    1. AR模型概念观 AR模型是一种线性预测,即已知N个数据,可由模型推出第N点前面或后面的数据(设推出P点),所以其本质类似于插值,其目的都是为了增加有效数据,只是AR模型是由N点递推,而插值是由两 ...

  6. qtcp多用户同时发信息的信号处理_FPGA进行数字信号处理的相关问题有哪些?来看数字信号处理系统架构分析!...

    关注并标星大同学吧 每周1次,打卡阅读 快速获取行业最新资讯 经验犹如一盏明灯的光芒 它使早已存在于头脑中 朦胧的东西豁然开朗 全文共3031字,预计阅读6分钟 笔经面经(第22期) 在2000年之后 ...

  7. 数字信号处理的fpga实现_FPGA数字信号处理:通信类I/Q信号及产生

    大侠好,欢迎来到FPGA技术江湖,江湖偌大,相见即是缘分.大侠可以关注FPGA技术江湖,在"闯荡江湖"."行侠仗义"栏里获取其他感兴趣的资源,或者一起煮酒言欢. ...

  8. (224)FPGA数字信号处理入门指导

    (224)FPGA数字信号处理入门指导 1 文章目录 1)文章目录 2)FPGA入门与提升课程介绍 3)FPGA简介 4)FPGA数字信号处理入门指导 5)技术交流 6)参考资料 2 FPGA入门与提 ...

  9. (4)FPGA面试技能提升篇(数字信号处理基础)

    1.1 FPGA面试技能提升篇4(数字信号处理基础) 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA面试技能提升篇4(数字信号处理基础): 5)结束语. 1.1 ...

最新文章

  1. NumPy 高级索引
  2. Scala Actor并发编程入门示例
  3. 阿里云伯俊软件:强强联合,共建新生态
  4. C语言使用找出二维数组所有元素中的最大值,下标
  5. 国考最热岗位报录比20602:1?还是数据库知识挑战赛适合我
  6. 项目内置广告后续:npm 禁止终端广告
  7. java程序本质,方法学之Java的本质
  8. 象棋名手手机版2019最新版_象棋名手超强版下载
  9. 为win10的todo应用配置altrun快捷键
  10. SPSS安装多次显示请输入注册的电子邮箱时,采用的解决办法。亲测有效!
  11. 在ArcCatalog10.2中改变元数据格式以及将元数据导出为HTML格式
  12. 使用QT:复刻俄罗斯方块游戏
  13. Kali linux 2016.2(Rolling)里Metasploit连接(包括默认和自定义)的PostgreSQL数据库之后的切换到指定的工作空间...
  14. adb的问题“No command ‘adb’ found, did you mean:”
  15. extern的几种用法
  16. 艺赛旗(RPA)isrpa7.0 的 IE 自动 pagedown 到我们需要操作的地方
  17. 学习python/pytorch过程中遇到的知识点
  18. 网络游戏数据同步的实现 一:状态同步、帧同步的基本原理概述
  19. 广告营销DSP和DMP概念解释
  20. Win2000/XP服务与后门技术(zz)

热门文章

  1. @JsonProperty的使用
  2. leetcode 79:simplify path
  3. nodejs 获取文件夹中所有文件、图片 名
  4. 如何判断ios设备中是否安装了某款应用
  5. 生成元(Digit Generator ,ACM/ICPC Seoul 2005 ,UVa 1583)
  6. SaltStack之salt-key管理
  7. imageView的contentMode
  8. android 简易定时器
  9. extjs用iframe的问题
  10. Matlab画线实例图