【DSP】02 定点数基础知识

本文介绍了Verilog中定点数的基本概念,包括如何将浮点数转换为定点数,以及乘法运算中的规则,如整数部分和小数部分的处理,符号扩展和加法规则。通过实例演示了如何在FPGA中应用这些基础知识。
摘要由CSDN通过智能技术生成

 视频:Fixed point basics in Verilog for Beginners! Continuation of polynomial example.

承接上一篇笔记,这篇笔记主要讲述定点数相关基础知识。

为了在FPGA中实现这些数字,我们需要将它们表示为定点值。下面将使用Excel表格来演示。

浮点数的值从0到1,我们想将其转换成定点数,可以将其乘以2的幂次。

比如想构造数字17,那么17是由16(2的4次方)和1(2的0次方)组成的。我们将第4位设为1,将第0位也设为1,因为2的4次方是16加上2的0次方是1,16加1等于17。所以使用这种方法,我们可以通过构造2的幂次来构造任何有足够位数的整数数字。如果想构造1024,我们需要11位,位0到9加上第10位。

表示小数时需要一个整数位,因为小数位是严格低于1的值。如果有一个10位小数的定点数,这意味着为了表示实际值1,你需要至少有一个整数位。所以如果你只有小数位,你只能存储小于1的数字,不能存储1本身。

所以在表示时需要一个整数位,如果处理带符号的数字,还需要一个符号位,但今天只考虑无符号数字,所以暂时不需要符号位。

想表示1024.5,可以从2的幂次构造二进制数字,可以有2的负幂次,这些负幂次的2变成了2的小数幂次。所以可以通过将0.5位,也就是-1位设置为1来构造1024.5。

这种二进制格式不仅严格适用于2的0次方及更高的幂次,还适用于2的负幂次。这就是定点数的工作原理。

在将定点数相乘时,有几条规则需要遵守。

我们现在已经取了定点值并复制了一份作为b。现在我们要构造b乘以b。将一个数乘以另一个数时,需要加上整数部分的长度和小数部分的长度。b乘以b将会有双倍的整数长度和双倍的小数长度。对于b乘以b乘以b,将会加上b的长度和b乘以b的长度。

当在两个定点数之间进行乘法运算时,你需要加上整数部分、加上小数部分,才得到结果的长度。对于加法,如果要加上b和b的平方,那么要使信号具有相同的长度。因为加法规则之一是整数长度和小数长度必须相同,才能将数字加在一起。所以如果想加这些数字,就不得不对b进行符号扩展,扩展b的小数部分或截断,以便能够将数字加在一起。如果两个带符号的数相乘,规则完全相同,将符号位算作整数的一部分,然后当你将带符号的数字相乘时,只需在计算中包含符号位。对于带符号的加法,情况也完全相同,结果就是长度加一。

如果我们将两个带符号的数字相加,那么它们结果的长度加一。对带符号数进行符号扩展的方式是复制最高有效位(MSB)(Most Significant Bit),无论它的值是什么,复制足够多的位数以将其扩展到和另一个加数相同的长度。所以如果这个位的值是零,那么扩展的位数都将是零。如果这个位是一,那么这些扩展的位也将是一。最高有效位,就是符号位,如果它是一个带符号的数,就向上进行符号扩展。如果它是一个无符号数并且不是二进制补码,那么你就用零填充。这就是定点数规则的概述。

下面是代码部分:

(未完)

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值