网站大量收购独家精品文档,联系QQ:2885784924

FPGA浮点运算.doc

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
FPGA浮点运算

基于FPGA技术的浮点运算器的设计与实现 摘 要:日趋进步和完善的 FPGA 现场可编程门阵列 技术推动了当前数字电路的设计。浮点运算器是计算机的一个 组成部件,结构比较复杂,利用 FPGA 技术设计浮点运算器可以缩短产品的开发周期。介绍了基于 FPGA 技术的浮点 运算器的设计与实现。描述了采用 VHDL(VHSIC 硬件描述语言)和原理图方式设计完成浮点运算器的方法和步骤。 利用 FPGA 技术,能方便灵活地设计出浮点运算器。 关键词:FPGA; 浮点运算器; VHDL;原理图 1 引 言 FPGA 现场可编程门阵列 技术的理论研究和实际应用正越来越受到人们的重视。FPGA 技术常常使一些原来比较难解决的技术瓶颈得以轻松实现,从而使产品的开发周期大为缩短,性能价格比大幅提高。运算器作为计算机的加工处理部件,是 CPU(中央处理器)的重要组成部分。作为典型的PC机一般都至少具有一个定点运算器。在 586 之前的机型中,由于当时硬件条件和工艺的限制,浮点运算器一般以协处理器的形式出现。进入 20 世纪 90 年代后,随着工艺水平的提高,一个芯片上集成度不断提高,如今浮点运算所要求的一些硬件已可以集成到 CPU 中,因此,作为浮点运算器的代表的协处理器也逐渐被集成度很高的 CPU 中的一部分所代替。 2 浮点运算 定点运算器主要是用于实现对定点整数和定点小数的算术运算、对逻辑数据的逻辑运算以及对主存的地址计算等。浮点数比定点数的表述范围宽,有效精度高,更适合于科学计算与工程计算。浮点运算可分为两类:非规格化和规格化浮点运算。非规格化浮点运算,不要求操作数是规格化数,对运算结果也不要求规格化处理。而规格化浮点运算只能对规格化的浮点数进行操作,并且要求对运算结果加以规格化处理。由于规格化浮点数具有惟一的表示形式,而且在计算机中尾数能获得最大的有效数字,所以在一般的计算机中一般选用规格化浮点运算。 2.1 浮点加、减运算 2.1.1 浮点加减法运算规则 2.1.2 浮点加减法运算步骤 完成两个浮点数加法或减法运算,需要以下几个步骤完成。 2.2.2 浮点乘除法运算步骤 两个浮点数乘除运算步骤为:1完成两浮点数阶码的加减运算,并判断结果是否溢出;2完成两浮点数尾数的乘除运算;3根据结果的阶码判断溢出,如果上溢则置溢出标志。 3 浮点运算器的设计与实现 3.1 硬件平台 浮点运算器的设计与实现都是在开发的多功能 EDA 实验台上完成的。该 EDA 实验台采用 FPGA-XC4010EPC84、62256CPLD 和其它外围芯片(例如 74LS244,74LS275)组成。XILINX 公司 XC4000系列是高容量、高成本的 FPGA,能够进行无限次重新编程,配合公司的相应软件 FOUNDATION 3.1用户可以设计和调试出具有相当功能的控制逻辑。根据不同的要求,规划不同控制逻辑,通过把控制逻辑下载到FPGA芯片中构成自己的硬件平台。 3.2 基于 VHDL 语言方式 VHDL 语言具有极强的描述覆盖能力,在使用 VHDL 语言实现的过程中,我们采用自顶向下的方法来实现浮点运算器。步骤如下: (1)分析系统的内部结构并进行系统划分,确定各个模块的功能和接口。在设计中,根据浮点运算器的功能,将其划分为时序产生模块、浮点数输入模块、浮点运算模块和结果输出模块 4个模块来实现。浮点运算器逻辑框图如图1 所示。 将这4个模块组合成顶层设计float_alu,该顶层设计的端 口定义分别为 entity float_alu is ( port ( ) data_1 :in std_logic_vector 7 downto 0 ; 第1组 输入数的8 位尾数; ( ) data_2 :in std_logic_vector 7 downto 0 ; 第 2组输 入数的 8 位尾数; sel_1 :in std_logic; 第1 组数的输入触发开关; sel_2 :in std_logic; 第2 组数的输入触发开关; ( ) exp_1 :in std_logic_vector 3downto 0 ; 第1组 输入数的4 位阶码; ( ) exp_2 :in std_logic_vector 3downto 0 ; 第2组 输入数的4 位阶码; func_add :in std_logic; 浮点运算功能加; func_sub :in std_logic; 浮点运算功能减; func_mul :in std_logic; 浮点运算功能乘; func_div :in std_logic; 浮点运算功能除; start_clk :in std_logic; 浮点运算启动开关; clk ;in std_logic; 系统工作时钟; ( ) data_o

文档评论(0)

pangzilva + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档