一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于VHDL的浮点数转ASCII码的方法及装置与流程

2022-03-05 00:07:23 来源:中国专利 TAG:

基于vhdl的浮点数转ascii码的方法及装置
技术领域
1.本发明属于数字技术领域,尤其是涉及一种基于vhdl的浮点数转ascii码的方法及装置。


背景技术:

2.现代通信以电为信息载体,以0和1两种状态所组成的数字化序列可用电信号的电平高低变化来表示,构造出不同的电信号。一个完善的系统由多个不同功能的设备组成,设备中还有各种芯片,如arm,cpu,fpga等构成,不同芯片负责不同功能,所应用的语言系统也不相同。而由于设备与设备之间、设备中各个芯片之间需要通信交互,通信码的格式与类型就显得尤为重要。c系列语言具备大量的成形函数,不同类型之间的转换相对于硬件语言,要简单得多,硬件语言相对底层,更关心的是时序逻辑与反应速度。
3.fpga作为硬件芯片中最常用的一类,在实际应用中担当着承上启下的角色,向上与嵌入式、上位机联动,向下与射频以及各种输入模块配合。然而上位机下达指令或者输入模块采集的数据类型多种多样,例如ascii码,bcd码、浮点数等。一般情况下,可以采用规避的方法,即不用fpga处理,而是将数据传送至上位机或嵌入式处理,但也存在需要在fpga内将不同类型的数据统一转换为统一的数据类型进行组帧上传或命令下发,在传感器器件的使用中尤其明显,而且要求精度往往为单精度浮点数。在处理浮点数的便捷程度上,fpga并不占优势,相比于c语言系列的成形函数,fpga往往需要自己根据当时的精度需求自己构造函数。vhdl语言是一种用于电路设计的高级语言。出现在80年代的后期,最初是由美国国防部开发出来供美军用来提高设计的可靠性和缩减开发周期的一种使用范围较小的设计语言。vhdl主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,vhdl的语言形式、描述风格以及语法是十分类似于一般的计算机高级语言。由于vhdl的上述特点,特别适合应用于fpga中。


技术实现要素:

4.有鉴于此,本发明旨在提出一种基于vhdl的浮点数转ascii码的方法及装置,以实现利用vhdl语言在fpga中快速准确的将浮点数转ascii码的目的。
5.为达到上述目的,本发明的技术方案是这样实现的:
6.一方面,本发明实施例提供了一种基于vhdl的浮点数转ascii码的方法,包括:
7.接收浮点数据;
8.按照浮点数据的位将所述浮点数据划分为符号位、指数部分和尾数部分;
9.对所述符号位、指数部分和尾数部分处理,分别得到符号、整数和小数部分;
10.对符号部分、整数部分和小数部分进行解析,根据解析结果对符号部分、整数部分和小数部分进行整合,得到ascii码。
11.进一步的,所述按照浮点数据的位将所述浮点数据划分为符号位、指数部分和尾数部分,包括:
12.根据十六进制float型数据组成关系划分符号位、指数部分和尾数部分;
13.所述根据十六进制float型数据组成关系划分符号位、指数部分和尾数部分,包括:
14.将最高位划分为符号位;
15.将后23位划分为尾数部分;
16.将其余部分划分为指数部分。
17.进一步的,所述对所述符号位、指数部分和尾数部分处理,分别得到符号、整数和小数部分,包括:
18.获取最高位为符号位,在为0为非负数,1为负数;
19.将尾数部分最高位补1并添加小数点;
20.将8bit转换为十进制,减去127,获取小数点平移位数index
21.判断index的正负,在index为正时,将小数点右移差值位数;
22.在index非正时,如果index为0,则保持小数点不动,否则将小数点左移差值位数。
23.进一步的,所述对符号部分、整数部分和小数部分进行解析,包括:
24.判断整数部分是否小于1000,若小于1000则减去1000后再次与1000比较,直至其小于1000,获取减去1000的次数a和剩余整数部分b;
25.判断b是否小于100,若小于100则减去100后再次与100比较,直至其小于100,获取减去100的次数b和剩余整数部分c;
26.判断c是否小于10,若小于10则减去10后再次与10比较,直至其小于10,获取减去10的次数c和剩余整数部分d;
27.计算整数部分的十进制数值为a*1000 b*100 c*10 d。
28.进一步的,所述对符号部分、整数部分和小数部分进行解析,包括:
29.获取小数部分的最高8比特位,并分开处理前4比特位和后4比特位;
30.对于前4bit位,每次加一,做判决得到对应数据n
31.对于后4bit位,每次加一,做判决,得到对应数据m;
32.m n并考虑四舍五入,获取小数部分。
33.更进一步的,所述根据解析结果对符号部分、整数部分和小数部分进行整合,得到ascii码,包括:
34.将整数部分的十进制数值转换为ascii码;
35.将小数部分的十进制数值转换为ascii码;
36.将整数部分、小数部分和符号位结合,得到ascii码。
37.另一方面,本发明实施例还提供了一种基于vhdl的浮点数转ascii码的装置,包括:
38.接收模块,用于接收浮点数据;
39.划分模块,用于按照浮点数据的位将所述浮点数据划分为符号位、指数部分和尾数部分;
40.处理模块,用于对所述符号位、指数部分和尾数部分处理,分别得到符号、整数和小数部分;
41.整合模块,用于对符号部分、整数部分和小数部分进行解析,根据解析结果对符号
部分、整数部分和小数部分进行整合,得到ascii码。
42.进一步的,所述划分模块,包括:
43.划分单元,用于根据十六进制float型数据组成关系划分符号位、指数部分和尾数部分;
44.所述划分单元,包括:
45.符号位划分子单元,用于将最高位划分为符号位;
46.尾数部分划分子单元,用于将后23位划分为尾数部分;
47.指数部分划分子单元,用于将其余部分划分为指数部分。
48.进一步的,所述处理模块,包括:
49.获取单元,用于获取最高位为符号位,在为0为非负数,1为负数;
50.添加单元,用于将尾数部分最高位补1并添加小数点;
51.获取单元,用于将8bit转换为十进制,减去127,获取小数点平移位数index;
52.右移单元,用于判断index的正负,在index为正时,将小数点右移差值位数;
53.左移单元,用于在index非正时,如果index为0,则保持小数点不动,否则将小数点左移差值位数。
54.进一步的,所述解析模块,包括:
55.整数第一判断单元,用于判断整数部分是否小于1000,若小于1000则减去1000后再次与1000比较,直至其小于1000,获取减去1000的次数a和剩余整数部分b;
56.整数第二判断单元,用于判断b是否小于100,若小于100则减去100后再次与100比较,直至其小于100,获取减去100的次数b和剩余整数部分c;
57.整数第三判断单元,用于判断c是否小于10,若小于10则减去10后再次与10比较,直至其小于10,获取减去10的次数c和剩余整数部分d;
58.计算单元,用于计算整数部分的十进制数值为a*1000 b*100 c*10 d。
59.进一步的,所述解析模块,包括:
60.获取单元,用于获取小数部分的最高8比特位,并分开处理前4比特位和后4比特位;
61.第一判决单元,用于对于前4bit位,每次加一,做判决得到对应数据n;
62.第二判决单元,用于对于后4bit位,每次加一,做判决,得到对应数据m;
63.获取单元,用于m n并考虑四舍五入,获取小数部分。
64.更进一步的,所述整合模块,包括:
65.第一转换单元,用于将整数部分的十进制数值转换为ascii码;
66.第二转换单元,用于将小数部分的十进制数值转换为ascii码;
67.结合单元,用于将整数部分、小数部分和符号位结合,得到ascii码。
68.相对于现有技术,本发明所述的基于vhdl的浮点数转ascii码的方法及装置具有以下优势:
69.本发明所述的基于vhdl的浮点数转ascii码的方法及装置,通过接收浮点数据;按照浮点数据的位将所述浮点数据划分为符号位、指数部分和尾数部分;对所述符号位、指数部分和尾数部分处理,分别得到符号、整数和小数部分;对符号部分、整数部分和小数部分进行解析,根据解析结果对符号部分、整数部分和小数部分进行整合,得到ascii码。通过将
浮点数据进行符号位、指数部分和尾数部分的划分,充分利用fpga并行计算的优势,分别对符号位、指数部分和尾数部分单独处理,提升了转换速度。同时,通过对符号位、指数部分和尾数部分的处理优化。将处理过程以简单的加减处理执行。充分利用vhdl语言的特点,可以实现快速准确的将浮点数转ascii码。特别适用于配合各种传感器的场景下使用。
附图说明
70.构成本发明的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
71.图1为现有技术中浮点数的组成规则示意图;
72.图2为本发明实施例一提供的基于vhdl的浮点数转ascii码的方法的流程示意图;
73.图3为本发明实施例一提供的基于vhdl的浮点数转ascii码的方法中整数部分获取的流程示意图;
74.图4为本发明实施例一提供的基于vhdl的浮点数转ascii码的方法中小数部分获取的流程示意图;
75.图5为本发明实施例一提供的基于vhdl的浮点数转ascii码的装置的结构示意图。
具体实施方式
76.需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
77.在本发明的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”等的特征可以明示或者隐含地包括一个或者更多个该特征。在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。
78.在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以通过具体情况理解上述术语在本发明中的具体含义。
79.下面将参考附图并结合实施例来详细说明本发明。
80.实施例一
81.图2为本发明实施例一提供的基于vhdl的浮点数转ascii码的方法的流程示意图,参考图2,对本实施例提供的基于vhdl的浮点数转ascii码的方法进行说明。
82.float型数据遵从ieee标准,并不能直接由32bit的二进制数解出,而需要一定规则的运算。一个十六进制float型数由三部分组成:符号位s,指数位e和尾数n(也称为有效位数)。如图1所示,该例中的float型数据对应的十进制数为2021.18。符号位占1bit,用以
区分数据正负,为0则为非负数,为1则为负数。尾数部分n为后23bit,实际计算中需要在首位添加1,并以小数点区分。意义是保证尾数n大于1且小于2。指数位e占8bit,表示的是尾数部分小数点需要移动的位数,再加上常数127。若指数位减去127后为正则向右移动,为零保持不动,为负则向左移动。实际上是表征了尾数n乘以(或除以)2的次数,即float型数值的绝对值为n*2e-127。
83.在本实施例中,可以按照如下方式进行转换:接收浮点数据;按照浮点数据的位将所述浮点数据划分为符号位、指数部分和尾数部分;对所述符号位、指数部分和尾数部分处理,分别得到符号、整数和小数部分;对符号部分、整数部分和小数部分进行解析,根据解析结果对符号部分、整数部分和小数部分进行整合,得到ascii码。
84.图3为本发明实施例一提供的基于vhdl的浮点数转ascii码的方法中整数部分获取的流程示意图。参见图3,仍以图1所举示例,获取整数部分后,逐步获取千位、百位、十位和个位的数值:a为整数部分(本例中小于10000),判断是否小于1000,若小于1000则减去1000后再次与1000比较,直至其小于1000,获取减去1000的次数a和剩余整数部分b;继续判断b是否小于100,若小于100则减去100后再次与100比较,直至其小于100,获取减去100的次数b和剩余整数部分c;继续判断c是否小于10,若小于10则减去10后再次与10比较,直至其小于10,获取减去10的次数c和剩余整数部分d;计算整数部分的十进制数值为a*1000 b*100 c*10 d,下一步转换为ascii码;ascii码的对应顺关系为十进制的0~9对应字节为0x30~0x39,对应转换后输出。按图1所举示例,a=2,b=21,b=0,c=21,c=2,d=1,故数值为2*1000 0*100 2*10 1,即2021。值得注意的是,若整数部分位数更多,比如大于10 000小于100 000,则可从万位开始判断,依此类推。实际上相当于对整数部分依次作除法,不断获取商和余数的过程。但由于fpga在除法上并不灵活,除法器ip核需要较多延迟,占用资源量较大,因此采用减法替代除法的方式。
85.相应的,图4为本发明实施例一提供的基于vhdl的浮点数转ascii码的方法中小数部分获取的流程示意图,仍以图1所举示例,仅考虑前两位小数,获取小数部分后,只需要最高的8比特位。由于第九比特每次加一,十进制数值加0.001953125,足够小,并不影响百分位,因此取前8bit足够。具体流程如下:获取小数部分的最高8比特位,并分开处理前4比特位和后4比特位;对于前4bit位,每次加一,相当于十进制数值上加0.0625,采用case语句,一一列举;对于后4bit位,每次加一,相当于十进制数值上加0.00390625,采用case语句,一一列举;m n并考虑四舍五入,获取小数部分并转为ascii码;同上,ascii码的对应顺关系为十进制的0~9对应字节为0x30~0x39,对应转换后输出。按图1所举示例,m为0.0546875,n为0.125,m n=0.1796875,四舍五入后得0.18,小数部分即为0.18。至此,将整数部分、小数部分和符号位结合,得到数值 2021.18。对照ascii码表,逐个翻译,可得到最终结果,十六进制显示为0x2b323032312e3138。
86.本发明实施例所述的基于vhdl的浮点数转ascii码的方法,通过接收浮点数据;按照浮点数据的位将所述浮点数据划分为符号位、指数部分和尾数部分;对所述符号位、指数部分和尾数部分处理,分别得到符号、整数和小数部分;对符号部分、整数部分和小数部分进行解析,根据解析结果对符号部分、整数部分和小数部分进行整合,得到ascii码。通过将浮点数据进行符号位、指数部分和尾数部分的划分,充分利用fpga并行计算的优势,分别对符号位、指数部分和尾数部分单独处理,提升了转换速度。同时,通过对符号位、指数部分和
尾数部分的处理优化。将处理过程以简单的加减处理执行。充分利用vhdl语言的特点,可以实现快速准确的将浮点数转ascii码。特别适用于配合各种传感器的场景下使用。
87.实施例二
88.本发明实施例二提供了一种基于vhdl的浮点数转ascii码的装置,图5为本发明实施例一提供的基于vhdl的浮点数转ascii码的装置的结构示意图,参见图5,所述基于vhdl的浮点数转ascii码的装置包括:
89.接收模块210,用于接收浮点数据;
90.划分模块220,用于按照浮点数据的位将所述浮点数据划分为符号位、指数部分和尾数部分;
91.处理模块230,用于对所述符号位、指数部分和尾数部分处理,分别得到符号、整数和小数部分;
92.整合模块240,用于对符号部分、整数部分和小数部分进行解析,根据解析结果对符号部分、整数部分和小数部分进行整合,得到ascii码。
93.本发明实施例所述的基于vhdl的浮点数转ascii码的装置,通过接收浮点数据;按照浮点数据的位将所述浮点数据划分为符号位、指数部分和尾数部分;对所述符号位、指数部分和尾数部分处理,分别得到符号、整数和小数部分;对符号部分、整数部分和小数部分进行解析,根据解析结果对符号部分、整数部分和小数部分进行整合,得到ascii码。通过将浮点数据进行符号位、指数部分和尾数部分的划分,充分利用fpga并行计算的优势,分别对符号位、指数部分和尾数部分单独处理,提升了转换速度。同时,通过对符号位、指数部分和尾数部分的处理优化。将处理过程以简单的加减处理执行。充分利用vhdl语言的特点,可以实现快速准确的将浮点数转ascii码。特别适用于配合各种传感器的场景下使用。
94.在上述实施例的基础上,所述划分模块,包括:
95.划分单元,用于根据十六进制float型数据组成关系划分符号位、指数部分和尾数部分;
96.所述划分单元,包括:
97.符号位划分子单元,用于将最高位划分为符号位;
98.尾数部分划分子单元,用于将后23位划分为尾数部分;
99.指数部分划分子单元,用于将其余部分划分为指数部分。
100.在上述实施例的基础上,所述处理模块,包括:
101.获取单元,用于获取最高位为符号位,在为0为非负数,1为负数;
102.添加单元,用于将尾数部分最高位补1并添加小数点;
103.获取单元,用于将8bit转换为十进制,减去127,获取小数点平移位数index;
104.右移单元,用于判断index的正负,在index为正时,将小数点右移差值位数;
105.左移单元,用于在index非正时,如果index为0,则保持小数点不动,否则将小数点左移差值位数。
106.在上述实施例的基础上,所述解析模块,包括:
107.整数第一判断单元,用于判断整数部分是否小于1000,若小于1000则减去1000后再次与1000比较,直至其小于1000,获取减去1000的次数a和剩余整数部分b;
108.整数第二判断单元,用于判断b是否小于100,若小于100则减去100后再次与100比
较,直至其小于100,获取减去100的次数b和剩余整数部分c;
109.整数第三判断单元,用于判断c是否小于10,若小于10则减去10后再次与10比较,直至其小于10,获取减去10的次数c和剩余整数部分d;
110.计算单元,用于计算整数部分的十进制数值为a*1000 b*100 c*10 d。
111.在上述实施例的基础上,所述解析模块,包括:
112.获取单元,用于获取小数部分的最高8比特位,并分开处理前4比特位和后4比特位;
113.第一判决单元,用于对于前4bit位,每次加一,做判决得到对应数据n;
114.第二判决单元,用于对于后4bit位,每次加一,做判决,得到对应数据m;
115.获取单元,用于m n并考虑四舍五入,获取小数部分。
116.在上述实施例的基础上,所述整合模块,包括:
117.第一转换单元,用于将整数部分的十进制数值转换为ascii码;
118.第二转换单元,用于将小数部分的十进制数值转换为ascii码;
119.结合单元,用于将整数部分、小数部分和符号位结合,得到ascii码。
120.以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献