一种数据类型转换电路转让专利

申请号 : CN201110022822.6

文献号 : CN102122240B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 李松

申请人 : 东莞市泰斗微电子科技有限公司

摘要 :

一种数据类型转换电路,所述电路包括,整型数据转换预处理电路、浮点型数据转换预处理电路、指数运算电路、转换数据操作单元、转换结果选择电路以及舍入和规范化处理电路;所述指数运算电路用于根据所述前导零计数电路的计数结果或者所述移码转换电路的转换结果ES对数据的指数部分进行运算;所述转换数据操作单元包括转换数据组,所述转换数据操作单元对所述转换数据组中存放的数据进行转换操作,所述转换操作后的数据以统一的格式存放在所述转换数据组中。采用本发明的技术方案后,通过共享转换电路以及转换数据组,采用高速的前导零计数单元来实现多种数据类型的高效转换,并节省电路面积。

权利要求 :

1.一种数据类型转换电路,所述电路包括,整型数据转换预处理电路和浮点型数据转换预处理电路;所述整型数据转换预处理电路包括补码转换电路和前导零计数电路,所述补码转换电路用于将表示整型或者短整型的补码转换成原码,所述前导零计数电路用于对所述补码转换电路输出的原码进行前导零计数,得出经过整型数据转换预处理电路的运算结果;所述浮点型数据转换预处理电路包括移码转换电路和原码转换电路,所述移码转换电路用于将浮点型数据指数位移码E转换为指数原码ES,所述原码转换电路根据移码转换电路的结果和浮点型数据的尾数将所述浮点型数据的尾数转换为补码,得出经过浮点型数据转换预处理电路的运算结果;其特征在于,所述数据类型转换电路还包括指数运算电路、转换数据操作单元、转换结果选择电路以及舍入和规范化处理电路;如需要转换的数据为整型数据,指数运算电路和转换数据操作单元根据整型数据转换预处理电路的运算结果进行运算,然后将运算结果都送入到转换结果选择电路进行运算结果转换和选择,转换结果选择电路的输出选择结果到舍入和规范化处理电路进行舍入处理,最后进行规范化处理,如需要转换的数据为浮点型数据,指数运算电路和转换数据操作单元根据浮点型数据转换预处理电路的运算结果进行运算,然后将运算结果都送入到转换结果选择电路进行运算结果转换和选择,转换结果选择电路的输出选择结果到舍入和规范化处理电路进行舍入处理和规范化处理。

2.如权利要求1所述的数据类型转换电路,其特征在于,所述前导零计数电路包括高

16位计数单元和低16位计数单元,所述高16位计数单元和所述低16位计数单元分别将

16位输入数据分为4组,每组4位分别在4位前导零计数器中进行计数。

3.如权利要求2所述的数据类型转换电路,其特征在于,所述4位前导零计数器输出的计数结果包括前导零的个数CNT[1:0]以及全0标志位ALLZERO,CNT[1:0]表明前导零的个数,如果4位数据为全零,那么ALLZERO标志有效。

4.如权利要求3所述的数据类型转换电路,其特征在于,所述高16位计数单元和所述低16位计数单元在所述4位前导零计数器计数完成后,分别直接通过4组4位的计数结果得出16位数据的计数结果。

5.如权利要求1至4中任意一项所述的数据类型转换电路,其特征在于,转换数据组为

84位,其中高32位为整数部分,低52位为小数部分。

6.如权利要求5所述的数据类型转换电路,其特征在于,对于整数数据类型的32位数据,在进入所述转换数据组之前,如果需要转换为短整型数据,那么选择没有转换的补码进入所述转换数据组,如果需要转换为浮点类型,那么选择经所述补码转换电路转换的原码进入所述转换数据组。

7.如权利要求5所述的数据类型转换电路,其特征在于,对于短整型数据的16位数据,在进入所述转换数据组之前,如果需要转换为整型数据,那么选择没有转换的补码进入所述转换数据组,否则选择经所述补码转换电路转换的原码进入所述转换数据组。

8.如权利要求5所述的数据类型转换电路,其特征在于,对于双精度浮点数,进入所述转换数据组的数据为尾数M,尾数M进入到所述转换数据组的低52位,并且在高32位的最低位补隐藏的整数位1,然后根据需要转换的数据类型进行移位。

9.如权利要求5所述的数据类型转换电路,其特征在于,对于单精度浮点数,进入所述转换数据组的数据为尾数M,尾数M进入到所述转换数据组的低52位,不足部分补0。

10.如权利要求5所述的数据类型转换电路,其特征在于,如果转换为整型数据,那么所述转换数据组的高32位为转换结果,低52位用于进行舍入判断和处理;如果转换为短整型,所述转换数据组的高32位的低16位为转换结果,低52位用于舍入处理;如果转换为单精度浮点数,所述转换数据组的低52位中的高23位为转换结果的尾数,并且使用所述转换数据组的低52位中的低29位进行舍入处理,同时将前导零计数结果或者双精度浮点数的指数位通过移码在所述舍入和规范化处理电路中转换为指数;如果转换为双精度浮点数,使用所述转换数据组的低52位为尾数,如果是整型数据转换为双精度浮点数,那么根据前导零计数结果得出指数,如果是单精度浮点数转换为双精度浮点数,就根据单精度浮点数的指数位转换为双精度浮点数的指数。

说明书 :

一种数据类型转换电路

技术领域

[0001] 本发明涉及一种数据类型转换电路,特别是支持整型、短整型、单精度浮点数以及双精度浮点数几种数据类型之间互相进行格式转换的电路。

背景技术

[0002] 在现有的各种数据处理电路中,根据不同的应用需求以及精度要求主要包括有整数类型和浮点数类型的数据类型格式,其中整数类型有32位的整型和16位的短整型二种,浮点数有32位的单精度浮点数和64位的双精度浮点数二种。上述数据类型均在数据处理电路中,均使用二进制表示,下面分别对每种数据类型的标准格式进行介绍。
[0003] 整型使用32位表示带符号的整数类型,采用二进制补码表示,其中最高位表示为符号位。因此整型可表示的数据范围为-2^31 ~ 2^31-1。短整型使用16位表示带符号的整数,同样采用二进制补码表示,最高位的第15位为符号位,因此短整型可表示的数据范围为-2^15 ~ 2^15-1。整型和短整型数据类型如图1中所示。
[0004] 浮点数数据包括单精度浮点数和双精度浮点数。其中单精度浮点数使用32位表示,最高位为符号位S,中间8位为指数位E,采用移码表示,剩下的低23位为尾数位M,采用原码表示,并且在规范化浮点数格式中,隐藏了整数位的最低位1。在指数位E中,8位位宽可表示的范围为0~255,其中0和255分别保留用于表示正负0和正负无穷,因此可用于表示正常浮点数的指数E的范围为1~254,而移码127之后,指数的原码ES范围为-126~127。对于规范化的浮点数尾数,隐藏整数位1,低23位为最低位整数1之后的小数,因此尾数的范围为[1,2)。 单精度浮点数的数值表示等式为:
[0005] N = (-1)s*2(E-127)*(1.M) [0006] 在双精度浮点数中,使用64位表示浮点数。其中最高位为符号位S,中间11位用于表示使用移码表示的指数位E,剩下的低位52位为尾数位M,采用原码表示,同样在规范化的浮点数格式中,隐藏了整数的最低位1。在双精度指数位E中,11位位宽可表示的范围为0~2047,其中0和2047用于表示双精度的正负0和正负无穷,因此可表示的正常浮点数指数E的范围为1~2046,在移码1023之后,指数的原码ES的范围为-1022~1023。对于尾数位,范围同样为[1,2)。 双精度浮点数的数值表示等式为:
[0007] N = (-1)s*2(E-1023)*(1.M)
[0008] 浮点数数据类型如图2中所示。
[0009] 在实际应用中,经常需要进行各种数据类型的转换,前面描述的四种数据类型之间的数据类型转换包括12种,分别为整型转短整型、整型转单精度、整型转双精度、短整型转整型、短整型转单精度、短整型转双精度、单精度转整型、单精度转短整型、单精度转双精度、双精度转整型、双精度转短整型、双精度转单精度。根据转换的类型不同,需要的运算可能包括补码转原码、前导零计数、移位操作等,同时还需要进行舍入和规范化操作。如果对每种数据类型转换分别进行运算和处理,因为转换类型的数量和不同数据格式的表示方式会导致转换效率的降低,并且使用大量的硬件资源而增大电路面积。

发明内容

[0010] 本发明的目的是提供一种高效并且面积小的数据转换电路,能够支持多种数据类型之间的格式转换。
[0011] 本发明是这样实现的:一种数据类型转换电路,所述电路包括,整型数据转换预处理电路和浮点型数据转换预处理电路;所述整型数据转换预处理电路包括补码转换电路和前导零计数电路,所述补码转换电路用于将表示整型或者短整型的补码转换成原码,所述前导零计数电路用于对所述补码转换电路输出的原码进行前导零计数;所述浮点型数据转换预处理电路包括移码转换电路和原码转换电路,所述移码转换电路用于将浮点型数据指数位移码E转换为指数原码ES,所述原码转换电路用于将所述浮点型数据的尾数转换为补码;所述数据类型转换电路还包括指数运算电路、转换数据操作单元、转换结果选择电路以及舍入和规范化处理电路;所述指数运算电路用于根据所述前导零计数电路的计数结果或者所述移码转换电路的转换结果ES对数据的指数部分进行运算;所述转换数据操作单元包括转换数据组,所述经过整型数据转换预处理电路或浮点型数据转换预处理电路处理之后的数据存放于所述转换数据组,所述转换数据操作单元对所述转换数据组中存放的数据进行转换操作,所述转换操作后的数据以统一的格式存放在所述转换数据组中;所述转换结果选择电路用于根据需要转换的数据类型从所述转换数据组中选择转换结果;所述舍入和规范化处理电路用于对所述选择的转换结果进行舍入和规范化处理。
[0012] 更进一步,所述前导零计数电路包括高16位计数单元和低16位计数单元,所述高16位计数单元和所述低16位计数单元分别将16位输入数据分为4组,每组4位分别在4位前导零计数器中进行计数。
[0013] 更进一步,所述前导零计数器输出的计数结果包括二位的前导零的个数CNT[1:0]以及全0标志位ALLZERO。
[0014] 更进一步,所述高16位计数单元和所述低16位计数单元在所述前导零计数器计数完成后,分别直接通过4组4位的计数结果通过选择和拼接得出16位的计数结果。
[0015] 更进一步,所述高16位计数单元和所述低16位计数单元计数完成后,如果高16位计数为全0,则使用低位计数结果拼接1’b1作为32位的计数结果,否则使用高位的计数结果拼接1’b0作为计数结果。
[0016] 更进一步,所述转换数据组为84位,其中高32位为整数部分,低52位为小数部分。
[0017] 更进一步,对于整数数据类型的32位数据,在进入所述转换数据组之前,如果需要转换为短整型数据,那么选择没有转换的补码进入所述转换数据组,如果需要转换为浮点类型,那么选择经所述补码转换电路转换的原码进入所述转换数据组。
[0018] 更进一步,对于短整型数据的16位数据,在进入所述转换数据组之前,如果需要转换为整型数据,那么选择没有转换的补码进入所述转换数据组,否则选择经所述补码转换电路转换的原码进入所述转换数据组。
[0019] 更进一步,对于双精度浮点数,进入所述数据转换组的数据为尾数M,尾数M进入到所述转换数据组的低52位,并且在高32位的最低位补隐藏的整数位1,然后根据需要转换的数据类型进行移位。
[0020] 更进一步,对于单精度浮点数,进入所述数据转换组的数据为尾数M,尾数M进入到所述转换数据组的低52位,不足部分补0。
[0021] 更进一步,如果转换为整型数据,那么所述转换数据组的高32位为转换结果,低52位用于进行舍入判断和处理;如果转换为短整型,所述转换数据组的高32位的低16位为转换结果,低52位用于舍入处理;如果转换为单精度浮点数,所述转换数据组的低52位中的高23位为转换结果的尾数,并且使用所述转换数据组的低52位中的低29位进行舍入处理,同时将前导零计数结果或者双精度浮点数的指数位通过移码在所述规范化处理电路中转换为指数;如果转换为双精度浮点数,使用所述转换数据组的低52位为尾数,同时将前导零计数结果或者单精度浮点数的指数位转换为指数。
[0022] 采用本发明的技术方案后,通过共享转换电路以及转换数据组,采用高速的前导零计数单元来实现多种数据类型的高效转换,并节省电路面积。

附图说明

[0023] 图1是整型和短整型数据类型示意图;
[0024] 图2是单精度和双精度浮点数据类型示意图;
[0025] 图3是数据类型转换电路结构图;
[0026] 图4是32位前导零计数器;
[0027] 图5是转换数据组CVT示意图;
[0028] 图6是整型类型转换数据组;
[0029] 图7是短整型类型转换数据组;
[0030] 图8是双精度浮点数类型转换数据组;
[0031] 图9是单精度浮点数类型转换数据组;
[0032] 图10是数据类型转换结果选择;
[0033] 图11是数据类型转换指数运算电路。

具体实施方式

[0034] 为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0035] 本发明的数据类型转换电路结构图如图3所示,在数据类型转换电路109中,首先对需要进行数据转换的数据进行预处理,主要包括补码转换成原码电路101,前导零计数电路102,移码转换电路106,原码转换电路107。预处理完成之后,本发明为了统一各种类型的数据转换运算,并且减少硬件资源消耗,定义了一组转换数据组,所有类型转换运算的数据全部统一到转换数据组中,在转换数据操作单元103中进行数据移位和转换,转换数据操作单元103还包含了转换数据组。然后在转换结果选择单元104中根据需要转换的数据类型选择转换结果,并在舍入和规范化处理单元105进行舍入处理和规范化操作。指数运算电路108用于对数据的指数部分进行运算,详细说明见图11。因为本发明定义了统一的转换数据组,在提高了转换效率的同时,使舍入和规范化操作也变得非常简单。
[0036] 整数的数据预处理包括补码转换电路101和前导零计数器102。在补码转换电路101中,将整数类型数据操作数IN转换成原码,如果整数的补码符号位为负,那么需要将补码进行取反然后加1运算转换成原码,如果符号位为正,补码跟原码一样,因此不需要进行运算,运算结果为整数数据类型的原码INO以及操作数IN的补码INB。补码转换完成之后,将整数类型的原码INO在前导零计数电路102中进行前导零计数,计算从 高位到低位出现第一个1之前的零的个数。本发明中设计了一种快速的前导零计数电路用于提高数据转换速度和平衡路径延迟。前导零计数单元将需要计数的数据分组进行计数,以32位整数类型为例,将整数分为高16位和低16位分别进行计数,然后根据二组16位的计数结果得出
32位的计数结果。
[0037] 前导零计数器电路如图4所示,分为高16位计数单元202和低16位计数单元205。在高16位前导零计数单元202中,将16位输入数据分为4组,每组4位分别在4位前导零计数器201中进行计数。计数结果包括二位的前导零的个数CNT[1:0]以及全0标志位ALLZERO。对应关系如表1中所示。
[0038] 表1 4位前导零计数器
[0039]Bits[3:0] CNT[1:0] ALLZERO
0000 / 1
0001 11 0
001X 10 0
01XX 01 0
1XXX 00 0
[0040] 在16位计数单元202和205中,其中4组4位的前导零计数器完成之后可以直接通过4组4位的计数结果通过选择和拼接就可以得出16位的计数结果,而不需要额外的计数和运算。如图2所示,如果最高位的4位计数器计数结果不为全0,那么使用最高位的4位的计数器的计数结果拼接2’b00作为16位的计数结果;否则如果接下来的一个4位计数器结果不为全0,那么使用计数结果拼接2’b01作为计数结果;同样如果高位的三个4位计数器计数结果全为0,那么使用最低位的4位计数器计数结果拼接2’b11作为计数结果,并且在全零运算单元203和206中计算得出高16位和低16位是否全部为0。运算得出高16位计数结果CNT1和全零标志ALLZERO1以及低16位计数结果CNT0和全零标志ALLZERO0。
[0041] 以数据0000_0000_0100_1011为例,将数据分成4组分别进行计数之后,从高位到低位的计数器结果分别为0,0,1,0。全零标志ALLZERO0为1,ALLZERO1为1,ALLZERO2为0,ALLZERO3为0,也就是说高位的二组数据计数结果为全零,根据上述说明,将2’10跟第三组4位计数的结果1拼接作为整个16位计数的结果,即1001(9)。因为采用分组计数的方式可以大大减少计数的复杂度,从而减少计数的延迟,并且采用判断全零标志和拼接计数结果的方式就可以得出更多位的计数结果。相比于传统的采用全数据计数方式,不但计数延迟大大减少,而且电路简单,硬件资源消耗非常小。
[0042] 二个16位的计数器计数完成之后,通过高16位是否全0的标志ALLZERO1选择32位的结果。如果高16位计数为全0,那么使用低位计数结果拼接1’b1作为32位的计数结果,否则使用高位的计数结果拼接1’b0作为计数结果。另外在全零运算单元207中判断32位的数据是否为全0,输出标志位ALLZERO。
[0043] 浮点数的预处理电路包括移码转换电路106和原码转换电路107。在移码转换电路106中,对浮点数的指数进行移码转换,将移码E转换为指数原码ES。对于单精度的浮点数来说,进行E减去127的运算,对于双精度的浮点数来说,进行E减去1023的运算。完成之后在原码转换电路107中根据浮点数的符号位将尾数M转换为补码MB,用于在浮点数转换为整数时的转换运算,原码转换电路107中的运算结果包括MB和没有经过转换的尾数原码MO。
[0044] 对于数据类型转换运算,接下来在转换数据操作单元103中进行移位和统一化处理。在本发明中定义了一个84位的转换数据组CVT[83:0]。其中高32位为整数部分INT,低52位为小数部分FLT。如图5所示。
[0045] 对于整数数据类型的32位数据,在转换数据操作单元103中进行移位处理,如果需要转换为短整型数据,那么选择没有转换的补码INB进入数据组CVT,否则如果需要转换为浮点类型,那么选择转换为原码的INO进入数据组。并且如果转换为短整型数据,移位位数为0,因为整型数据全部从CVT高32位的最低位开始对齐。如果转换为浮点数据类型,根据前导零的计数结果,将原码INO进行右移位,直到第一个1跟高32位的最低位对齐。移位位数为前导零的计数结果CNT,并且在指数运算电路110中根据前导零计数结果计算浮点数的指数,将计数结果CNT转换为移码,也就是分别加上127(单精度)和1023(双精度)。整数类型数据转换组及移位如图6所示。
[0046] 对于短整型数据的16位数据,如果需要转换为整型,同样使用没有转换的补码INB进入转换数据组,否则使用INO进入转换数据组。跟整型数据的区别在于不管短整型转换为任何类型的数据,CVT中的高位整数全部用短整型的最高位进行扩展。短整型类型数据转换组及移位如图7所示。
[0047] 对于双精度浮点数,将尾数M在转换数据操作单元103中进行转换和移位运算,如果转换为单精度数据类型,移位数为0,否则移位数为指数原码ES。尾数M首先跟转换数据组的低52位对齐,并且在高32位的最低位补隐藏的整数位1。然后根据需要转换的数据类型在转换数据操作单元103中进行移位,如果转换为单精度数据类型,移位数为0。否则移位数为指数原码ES。双精度浮点数转换数据组和移位如图8所示。
[0048] 对于单精度浮点数在数据转换组中的转换和移位处理跟双精度浮点数类似,区别在于单精度浮点数的尾数只有23位,因此需要在CVT的低52位中补0。本发明中在单精度数据类型转换时将CVT中的低29位全部补0。单精度浮点数转换数据组和移位如图9所示。
[0049] 在指数运算电路108中,本发明统一了数据转换的指数运算,减少了电路面积。如图11所示,指数运算电路108的输入数据为整数的前导零计数结果CNT和浮点数的指数移码转换结果ES。然后根据数据转换的源转换类型是整型或者是浮点型选择CNT或者ES进行运算,分别进行加127运算和1023运算。运算完成之后,根据数据转换的目的转换类型选择加法器输出结果AS或者AD作为指数运算的结果。
[0050] 在转换数据组中的运算及移位和指数运算完成之后,本发明可以非常快速的得出转换的结果,并且可以非常简单的进行舍入和规范化处理。如图8中所示,如果转换为整型数据,那么CVT的高32位为转换结果,并且CVT的低52位用于进行舍入判断和处理,其中低52位的最高位作为舍入位RB,剩下的51位的或运算结果为跟随位SB;如果转换为短整型,CVT的高32位的低16位为转换结果,CVT的低52位用于舍入处理,同样低52位的最高位为舍入位RB,剩下的51位的或运算结果为跟随位SB;如果转换为单精度浮点数,那么CVT的低52位中的高23位为转换结果的尾数,并且使用CVT低52位中的低29位进行舍入处理,其中低29位的最高位为舍入位RB,低28位的或运算结果为跟随位SB;如果转换为双精度浮点数,使用CVT的低52位为尾数,其他数据类型转换为双精度不会出现舍入。然后根据RB和SB的值判断是否需要因为舍入而产生进位,以四舍五入方式为例。
[0051] 如果RB = 0,SB = 0,那么不需要进位。
[0052] 如果RB = 0,SB = 1,那么不需要进位。
[0053] 如果RB = 1,SB = 0,那么需要进位。
[0054] 如果RB = 1,SB = 1,那么需要进位。
[0055] 如果转换为浮点数据类型,指数运算电路的结果作为浮点数的指数结果。而对于符号位,因为在整数数据中,符号位就是最高位,而浮点数的符号位也是最高位,因此并不需要单独进行运算。
[0056] 以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。