注塑机厂家
免费服务热线

Free service

hotline

010-00000000
注塑机厂家
热门搜索:
技术资讯
当前位置:首页 > 技术资讯

一种新的基于FPGA的数据格式转换方法

发布时间:2020-07-21 18:18:25 阅读: 来源:注塑机厂家

摘要:针对目前多数的FPGA都支持浮点IP核,却较少关注数据源获取的问题,提出了一种数据格式转换方法。使用VHDL语言,采用流水线处理方式将ASCII码所表示的一定范围内的实数转换为单精度浮点数。经过ModelSim功能仿真和实际下载验证,该设计的转换时间可达10-1μs量级。利用Matlab对转换结果进行分析验证,该方法的转换精度可达10-3。在此采用的设计结构合理,可为浮点IP核提供数据源。关键词:单精度浮点数;流水线处理;FPGA;IP核0 引言 随着FPGA向高集成度、大容量、高速和低功耗方向的快速发展,相应的EDA软件工具也日趋成熟,提供了更多的数字信号处理IP核,使得FPGA在高速数字信号处理领域得到了越来越广泛的应用。 浮点运算作为数字信号处理中最常见的运算之一,各大EDA软件都带有免费的浮点运算IP核。通过对IP核的生成和例化来实现浮点运算,把FPGA设计者从繁重的代码编写中解脱了出来,同时可以对IP核进行功能剪裁以避免对FPGA逻辑资源的浪费,实现最优设计。但对浮点数的获取却关注很少。在浮点运算中,单精度浮点以其极强的通用性得到了最广泛的应用。本文将目光集中在单精度浮点数的获取上,为浮点IP核提供数据源。在数据的传输上,ASCII码是经常采用的一种形式,本文以串口接收到的ASCII码所表示的实数为例,采用流水处理方式高速地将实数转换为单精度浮点数。1 实数转换为单精度浮点数的原理1.1 单精度浮点数格式 浮点数的表示遵循IEEE 754标准,它由3部分组成:符号位(sign)、阶码(exponent)和尾数(fraction)。IEEE 754标准规定的单精度浮点数格式占用32位,包含:1位符号位s、8位带偏移量的指数e[30:23]和23位尾数f[22:0],如图1。单精度的指数使用正偏值形式表示,指数值的大小从1~254(0和255是特殊值)。采用该种形式表示是为了有利于比较大小,浮点小数在计算时,指数值减去偏正值即是实际的指数大小。其中偏移值(bias)为127,尾数有1位隐藏位。

本文引用地址:

单精度浮点数包含以下几种情况: (1)规格化数:0e255, 值V=(-1)s×2e-bias×1.f; (2)(+0,-0):如果e=0且f=0,则V=(-1)s×0; (3)非规格化数:e=0但f≠0则V为非规格化数; (4)(+∞,-∞):e=255,且f=0,则V=(-1)s×∞; (5)NaN(不是一个数):e=255,且f≠0,则V=NaN。1.2 转换原理 例如有一个实数为6.91,首先将其转换为二进制形式表示:110.1110100011110101110000101000。再将其规范化为如下: 6.91=1.101110100011110101110000101000×22则可以得到基本原型: s:0; e:2+127(十进制)=129(十进制)=10000001(二进制); f:101110100011110101110000101000(注:小数部分取28位,且小数点前面的1不要)。 小数部分取28位的目的在于更为准确地表示实数,后五位用于舍入处理。在IEEE 754标准中,舍入处理提供了4种可选方法:就近舍入、朝0舍入、朝+∞舍入和朝-∞舍入,本文采用就近舍入原则。就近舍入的实质就是通常所说的“四舍五入”。例如:尾数超过规定的23位的多余数字是10010,多余位的值超过规定的最低有效值的一半。故最低有效位应增1,若多余的5位是01111则简单地截尾即可,对多余的5位100 00这种特殊情况:若最低有效位现为0,则截尾;若最低有效位现1,则向上进一位使其变为0。所以,此例中要将最后5位作舍弃处理。得到的结果为:0 100000011011101000111101011100001。组合后等于0100 0000 1101 1101 0001 1110 1011 1000等于40DDIEB8。至此在原理上完成一个实数到单精度浮点数的转换。

32 MySQL 存储引擎概述

递归算法之斐波那契数列

Gradle 配置详解

希尔排序