Hdl和定点运算
规则:简短和文字
-
如果所有类型的参数都是无符号的,则结果类型是无符号的。 否则,结果类型为标志性的。
-
类型宽度不限于8/16/32/64位,而是可以是直至并包括128的任何自然数。
-
选择结果类型,以便没有溢出。
运作 |
结果类型 |
例子: |
|---|---|---|
此外 |
可容纳整个可能结果值范围的最小所需类型 |
|
乘法运算 |
结果类型的宽度是参数类型宽度的总和,与小数部分相同。 |
|
定点
与浮点数一起,在软件和硬件开发中使用定点数。 它们不如浮点数灵活,但具有定点数的操作通常更快。 下面介绍了定点数的基本概念。
| *Engee*目前使用的是定点数的二进制点(power-of-two)变体,而不是斜率偏差。 |
| 阅读文章中有关在*Engee*计算环境中使用定点工作的信息 Engee中的定点算术. |
二元点
整数以二进制表示为2的幂和。 例如,二进制中的9是 :
从MSB(最高有效)到LSB(最低有效)的位数 |
3 |
2 |
1 |
0 |
意义 |
1 |
0 |
0 |
1 |
二*位值的功率 |
|
|
|
|
对回应的贡献 |
8 |
0 |
0 |
1 |
为了用二进制表示非整数,你可以在精神上在零位后面放一个点,并开始用2的负幂计数。 例如, 9.625 编码为 :
从MSB(最高有效)到LSB(最低有效)的位数 |
3 |
2 |
1 |
0 |
-1 |
-2 |
-3 |
意义 |
1 |
0 |
0 |
1 |
1 |
0 |
1 |
二*位值的功率 |
|
|
|
|
|
|
|
对回应的贡献 |
8 |
0 |
0 |
1 |
0.5 |
0 |
0.125 |
定义
-
类型宽度是编码类型值的位数。
-
"分数"位的数目是分数部分的长度(Fraction Length),它也将被指定为二进制点(BP)。
-
十进制的值称为真实世界值(RWV)。
-
如果位从LSB编号到MSB,从零开始(即使对于非整数实值),将获得的整数表示为存储整数SI。 例如,存储整数 -这是9,并为 — 77.
在这种情况下,执行以下操作 .
而且,小数部分的长度可以是负的。 在这种情况下,存储的整数乘以小数部分长度的模数。 因此,数字112可以仅使用三个位和缩放来表示。 :
从MSB(最高有效)到LSB(最低有效)的位数 |
6 |
5 |
4 |
意义 |
1 |
1 |
1 |
二*位值的功率 |
|
|
|
对回应的贡献 |
64 |
32 |
16 |
另请注意,小数部分的长度可能超过类型的宽度。 例如, 它可以在宽度3和BP11的类型中表示为 :
从MSB(最高有效)到LSB(最低有效)的位数 |
-9 |
-10 |
-11 |
意义 |
0 |
1 |
0 |
二*位值的功率 |
|
|
|
对回应的贡献 |
0 |
0.0009765625 |
0 |
指定名称
最一般的形式表示为 fixdt(S,W,f) 根据文章 Engee中的定点算术。 这里:
-
S-0表示无符号类型,1表示有符号类型; -
W-类型宽度; -
f-小数部分(BP)的长度。
特定名称类型的示例:
| 指定;指定 | 意义 |
|---|---|
|
宽度为32位的无符号整数类型 |
|
宽度为123的无符号整数类型 |
|
宽度为16的有符号整数类型 |
|
定点字符类型,宽度(总长度)32,小数长度5 |
|
无符号定点类型,宽度32,小数部分长度5 |
|
无符号定点类型,宽度3,小数部分长度-4 |
从算术的角度来看,以下类型是等价的: uint42, ufix42, ufix42_En0, ufix42_E0.
|
算术
在操作之前,将自变量的二进制点对齐,然后将自变量相加/相乘。 例如,对于添加 从 ufix4_En3 和 从 ufix2_En1 您必须首先在第二个数字中的虚点之后添加两个零。:
1001 (ufix4_En3)
+ 01 (ufix2_En1)
= 1.001
+ 0.100
= 1.101
但是 小数部分长度为3,这是 .
规则:详细
| 运作 | 论证类型1 | 论证类型2 | 结果类型 |
|---|---|---|---|
此外 |
|
|
在简单情况下,可容纳整个可能结果值范围的最小所需类型+
|
乘法运算 |
|
|
|
此外
选择宽度以适应添加参数结果的可能值范围。
算法:
-
我们找到通过添加操作数可以获得的最小可能和最大可能值。
-
要计算结果的最小可能值,请添加参数类型的最小值(无符号数为0和 为标志性人物)。
-
为了计算结果的最大可能值,我们添加参数类型的最大值。
-
-
我们找到保留结果范围所需的最小位数。
例子:
-
当添加两个
sfix5_En2它会奏效的sfix6_En2,因为我们需要将结果类型扩展一位,以便从某处的最高位保存可能的传输。 加起来时ufix8_En1和ufix8_En3它会奏效的ufix11_En3:1111111.1 + 11111.111 = 1111111.100 + 0011111.111 = 11011111.001由于bit_width .
其他例子:
| 论证类型1 | 论证类型2 | 结果类型 |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
向量元素之和
对于块 Sum(传入向量元素的求和,*Add*块的特殊模式)优化应用于避免循环中的计算(如*Add*中发生的那样),并且快速确定结果的类型。 也就是说,由于所有元素的类型都是相同的 fixdt(S,W,f),可以注意到:
同样,确定结果的最小值,然后选择所需的类型宽度。
可以估计 .
乘法运算
推断乘法结果类型的规则在规则:详细部分的表格中有充分的描述,并通过归纳和关联性应用于任意数量的参数。 没有例外或任何额外的困难。