文档介绍:第6章 FPGA设计中的基本问题
数的表示方法
计数方式
数值范围
优点
缺点
无符号整数
0~ 2N-1
最常用的计数方式,易于执行算术运算
无法表示负数
二进制补码
-2N-1~ 2N-1-1
可表示正负数,易于执行算术运算
需要一个额外比特来作为符号位
无符号小数
0~ 2N-2M
可表示大于1或小于1的正数,易于执行算术运算
无法表示负数
带符号小数的二进制补码
-2N-1~ 2N-1-2-M
(以2-M为步长)
可表示大于1或小于1的正负数,易于执行算术运算
格雷码
0~ 2N-1
相邻数字之间仅有1位不同,适用于物理系统的接口
不便于算术运算
二进制计数方式
计数方式
数值范围
优点
缺点
带符号整数
-2N-1-1~ 2N-1-1
可表示正负数,与十进制计数方式很相似
难以执行算术运算
偏移二进制补码
-2N-1~ 2N-1-1
常用于A/D和D/A变换器,易于执行算术运算
二进制反码
-2N-1-1~ 2N-1-1
易于进行逻辑“非”运算
难以执行算术运算
浮点数
---
具有很大的动态范围
执行算术运算时需要大量的硬件资源
块浮点数
---
具有很大的动态范围,所需的硬件资源最少
在给定时间内所有数都具有相同的指数
二进制计数方式(续)
例:3位二进制数在不同计数方式下所代表的十进制数值。
二进制数
无符号整数
二进制补码
格雷码
带符号整数
偏移二进制补码
二进制反码
000
0
0
0
0
-4
0
001
1
1
1
1
-3
1
010
2
2
3
2
-2
2
011
3
3
2
3
-1
3
100
4
-4
7
-0
0
-3
101
5
-3
6
-1
1
-2
110
6
-2
4
-2
2
-1
111
7
-1
5
-3
3
0
无符号整数
将一个整数用一个二进制代码序列表示,每个二进制代码的权值是2P,P为该代码在序列中的序号。
代码序号
权值
0
20
1
21
2
22
3
23
4
24
…
…
N-1
2N-1
无符号整数的权值
缺点:无法表示负数。
无符号整数
十进制数
转换关系
101
5
1*22+0*21+1*20=5
1010
10
1*23+0*22+1*21+0*20=10
1110
14
1*23+1*22+1*21+0*20=14
11011
27
1*24+1*23+0*22+1*21+1*20=27
1111111
127
1*26+1*25+ 1*24+ 1*23+1*22+1*21+1*20=127
无符号整数与十进制数的转换实例
1001
+11101
100110
=
9
+29
38
无符号整数的加法
二进制补码
特点:
与无符号整数的计数方法类似,唯一不同之处在于最高有效位的权值是-2N-1。
将整数进行正负变换时,只需将原数中“1”和“0”反相,然后再加上“1”即可。
加减运算时,最高有效位进位须舍去。
代码序号
权值
0
20
1
21
2
22
3
23
4
24
…
…
N-2
2N-2
N-1(MSB)
-2N-1
二进制补码的权值
二进制补码
十进制数
转换关系
00011101
29
0*(-27)+ 0*26+0*25+ 1*24+ 1*23+1*22+0*21+1*20=29
11100011
-29
1*(-27)+ 1*26+1*25+ 0*24+ 0*23+0*22+1*21+1*20= - 29
00100110
38
0*(-27)+ 0*26+1*25+ 0*24+ 0*23+1*22+1*21+0*20=38
10100110
-90
1*(-27)+ 0*26+1*25+ 0*24+ 0*23+1*22+1*21+0*20= - 90
01111111
127
0*(-27)+ 1*26+1*25+ 1*24+ 1*23+1*22+1*21+1*20=127
11111111
-1
1*(-27)+ 1*26+1*25+ 1*24+ 1*23+1*22+1*21+1*20= - 1
二进制补码与十进制数的转换实例(N=8)
00011101
+00100110
01000011
=
+29
+38
67
1