基于fpga的单精度浮点除法器的设计内容摘要:
块可以使设计的可靠性提高 ,但其资源占用较大 ,综合后的浮点数除法器占用 299 个逻辑单元。 通过分析我们发现 ,由于浮点数尾数的特殊性 ,可以大大简化尾数除法模块。 改进的除法模块将输入的两数据进行比较 ,数据 A 大于数据 B 则输出‘ 1’ ,反之则输出‘ 0’。 将输出的‘ 1’或‘ 0’按位存储在 storage 模块中 ,组合得到除法运算结果。 在对输入数据比较后选择性的进行减法运算 ,得出的结果作为余数移位并存储到 storage1 模块中。 然后 storage1 将余数输 出 ,再与被除数同时为除法模块提供数据输入做循环运算。 经过改进后 ,顶层浮点数除法运算模块的资源占用减 8 少到 125 个逻辑单元 ,节省了 58%的资源。 图 除法器仿真波形图 ( 1) 符号位相减只需取 Sa 和 Sb 的异或,因为同号,则相除输出为正,异号相除输出为负,故输出数据的符号位为 Sa 和 Sb 的异或关系 ( 2) 指数位相减。 即输出的单精度浮点数的指数为,为 dataa和 datab 的指数位之差。 由于单精度浮点数采用的是偏移码,故, eaeb时应先对 Ea 和 Eb 先减去 127,再相减;相减 完成由于要变成规范的单精度浮点进行 输出,故需要再加一个 127 变成偏移码; ( 3) 尾数相乘即 ma/mb。 由于 am 1. aM , am 1. bM ,其中 aM 和bM 为 23 位的二进制数,而最高位 1 为隐藏位,因此两者相除后的应该为 24 位 ( 23 DOWNTO 0) 的二进制数 .所以先把 ma 和 mb 的最高位拼接上‘ 1’得到 24 位的数据,再调用 QuartusII 库里面的 24 位除法器 ,得 到 24 位的商和 24 位的余数,把商截位并按位存储,把余数反馈循环移位做为被除数。 最后取商的高 23 位为结果的 M 位即可。 ( 4) 尾数规格化,需要把尾数相乘的 48 位结果数据变成 24 位的数据,分 3 步进行: ① 两者相乘后的应该为 48 位( 47 DOWNTO 0)的二进制数, 9 且最高两位只有三种情况,即为 01, 10, 11,这可以从十进制来理解, … X 与 … Y 相乘,结果最大也就是 … Z,即整数位为 3 均有可能。 由于最终输出要规范成单精度浮点数,故,当输出的 48 位二进制最高两位为 01 时,显然结果 已经是一个规范的单精度浮点数的形式了,只需用要取 48 位数据的( 45 DOWNTO 23)作为输出即可;当输出的 48 位二进制最高两位为 10 或 11 时,显然由于整数位已经超过 1,故应向阶码进 1,进 1 以后,尾数部分相应应除以 2,即应取 48 位数据的( 46 DOWNTO 24)作为尾数的输出结果。 ② 对尾数进行舍入操作,使尾数为 24 位,包括整数的隐藏位。 ③ 把结果数据处理为 32 位符合 IEEE 浮点数标准的,包括 1位符号位, 8 位结果阶码位,结果 23 尾数位。 5 总体设计 编译与 仿真 清楚了单精度浮点数的乘法 、除法 运算规 则以后,下面将利用VHDL 语言给予描述和仿真。 并最终通过下载到 FPGA 芯片上进行实现。 根据其运算规则可知,应该将输入的 dataa 和 datab 进行分段,分解成符号位,阶码和尾数三段。 并对它们分别进行各自的运算处理。 其实现电路 总体设计数据流程图如下: 其中包括几个部分, 10 被 除 数 D A T A _ A除 数 D A T A _ B数 据 分 解做 除 法 异 或做 减 法DATA_A_MDATA_B_MDATA_A_EDATA_B_EDATA_A_SDATA_B_S数 据 整 合输 出 结 果 图 总体流程图 数据分解部分: 模块 其主要作用为,对输入的 32位单精度浮点数进行分 解成 1 位符号位, 8 位阶码位及 23 位的尾数位进行输出。 由于有两路数据输入,因此,要用到两片数据分离模块。 图 数据分解模块 设计文件如下: LIBRARY IEEE。 USE。 USE。 11 USE。 ENTITY spf32_data_div IS PORT(spfin : IN STD_LOGIC_VECTOR(31 DOWNTO 0)。 s :OUT STD_LOGIC。 e :OUT STD_LOGIC_VECTOR(7 DOWNTO 0)。 m :OUT STD_LOGIC_VECTOR(22 DOWNTO 0) )。 END spf32_data_div。 ARCHITECTURE behav OF spf32_data_div IS BEGIN PROCESS(spfin) BEGIN s=spfin(31)。 e=spfin(30 DOWNTO 23)。 m=spfin(22 DOWNTO 0)。 END PROCESS。 END behav。 阶码相减模块( ) 其主要作用为:对输入的两个 8 位二进制阶码进行求差运算。 在此模块中,采用 VHDL 硬件描述语言编写。 根据 IEEE754 标准,先对输入的阶码 Ea 和 Eb 进行减 127 的运算,其结果再进行求差运算,再进行最后加 127 的运算。 12 图 阶码想减模块 程序源代码如下: library ieee。 use。 use。 use。 entity E_SUB is port( ea:IN STD_LOGIC_VECTOR(7 DOWNTO 0)。 eb:IN STD_LOGIC_VECTOR(7 DOWNTO 0)。 ea_b:OUT STD_LOGIC_VECTOR(7 DOWNTO 0) )。 END E_SUB。 ARCHITECTURE behav of E_SUB is begin ea_b=(ea01111111)(eb01111111)+01111111。 end behav。 end behav。 尾数相除部分 : 模块 其主要作用为:对输入的两个 23 位的尾数进行规范化,即在其前面均加一个‚ 1‛变成 24 位的二进制数。 然后元件例化一个现成的 13 除法器模块进行运算。 其设置为两路输出数据宽度为 24,结果输出宽度为 24。 图 尾数相处模块 程序源代码如下: LIBRARY IEEE。 USE。 USE。 USE。 LIBRARY lpm。 USE。 ENTITY m_divider IS PORT(ma : IN STD_LOGIC_VECTOR(22 DOWNTO 0)。 mb : IN STD_LOGIC_VECTOR(22 DOWNTO 0)。 m。基于fpga的单精度浮点除法器的设计
相关推荐
........... 5 系统 总体功 能需求 分析 ............................... 5 系统 软件目 标 ....................................... 5 系统 功能需 求 ....................................... 6 系统 界面需 求 ..........................
庭网络无需人工参与,网络设置可自动完成。 (2) MIDP MIDP 定义了一套完整的用户界面接口,全部定义在 . lcdui 包中。 MIDP 用户界面程序包的核心抽象是类 Displayable。 根据用户的交互,应用程序在完成任务的每一步不断设置和重设在 Display 对象上的当前Displayable 对象。 用户任务(指与用户界面的交互)通过 Command 对象来实现。
引用 等等 [7]。 开发语言介绍 JSP JSP 全称 Java server pages。 是一种动态网页技术的标准。 该技术用于在传统的静态网页 HTML 中加入 JSP 标记和 JS( JavaScript) [8][9],其中 Java 片段用于实现数据的发送和交互等操作,所有的操作都集成在服务器端进行,这样使得客户端免去了对 JAVA 等技术支持的要求
1、高中物理资源下载平台世昌的博客 V,这表示 ()C 电荷量,电源能把 2J 电池两极间的电压为 s 内将 2 J 电动势为 )= = 适用于纯电阻电路.(2014武汉 11 月调考)为了保证行车安全和乘客身体健康,动车上装有烟雾报警装置,烟雾传感器,其阻值 c 随着烟雾浓度的改变而变化,电阻 R 雾的浓度增大,导致警报装置 S 两端的电压增大, )于某处出现了故障,导致电路中的 A、B
1、高中物理资源下载平台世昌的博客 固体、列说法正确的是() )个两端封闭、粗细均匀的玻璃管,管内的空气被一段水银柱隔开,按图中标明的条件,当玻璃管水平放置时,水银柱处于静止状态,如果管内两端的空气都升高相同的温度,则水银柱向左移动的是()4.(2013 海南卷)下列说法正确的是()细管中的液面有的升高,有的降低,垂直于玻璃板的方向很难将玻璃板拉开,)根上细下粗、粗端与细端都粗细均匀的玻璃管
发)。 CP/ 捕获 /重装载选择。 CP/ =1 时,如 EXEN2=1,且 T2EX 端出现负跳变脉冲时发生捕获操作。 CP/ =1 时,若定时器 2 溢出或EXEN2=1 条件下, T2EX 端出现负跳变脉冲,都会出现自动重装载操作。 当 RCLK=1 或 TCLK=1 时,该位无效,在定时器 2 溢出时强制其自动重装载。 表 4 定时器 2 工作方式 RCLK+TCLK CP/ TR2