已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于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_out :outstd_logic_vector 7 downto 0 ;输出结果8 位尾数;( )exp_out :outstd_logic_vector 3 downto 0 ; 输出结果4 位阶码;ovr :outstd_logic; 上溢出报警;zero :outstd_logic; 下溢出报警;);end float_alu;(2)根据浮点运算器各模块的功能,分别编写程序,输入VHDL 代码,并将其编译成标准的VHDL 文件。时序产生模块:该模块功能是对系统时钟进行分频产生相应的时钟信号。本模块中使用计数器级连的方法实现分频。浮点数输入模块:开关sel_1 和sel_2 为输入数据的触发信号。多功能EDA 实验台上其余开关对应于 8 位尾数和4位阶码输入。当 sel_1 开关按下,即 sel_1=1时,输入开关中的数据作为第 1 组输入数的 8 位尾数和 4位阶码;当 sel_2 开关按下,即 sel_2=1时,输入开关中的数据作为第 2 组输入数的 8位尾数和4位阶码。在该模块中用进程process(sel_1)和process(sel_2 )来实现。load_data_1:process (sel_1)beginif sel_1=1 andsel_1event thenreg_data_1=data_1;end if;浮点运算模块:该模块主要完成各种浮点运算,是整个系统的核心部分。根据输入功能选择按键,在 start_clk信号上升沿的触发下,对输入的两组浮点数进行运算。浮点运算模块的流程图如图 2 所示。规格化浮点数加减运算流程图如图 3所示,规格化浮点数乘除运算流程图如图 4所示。结果输出模块:该模块的功能是将浮点运算的结果输出至多功能 EDA 实验台相应的发光二极管,以供观测。(3)VHDL 源代码进行综合优化处理。经过上述分析后,用VHDL 语言对各个模块进行描述和实现,最后对 VHDL 源代码进行综合优化处理。(4)仿真与配置。设计的正确性可以通过仿真来验证。图 5 是浮点减法的时序仿真图。图 5 中的信号定义如表 1所示。其它各种运算的时序仿真方法相同,在此不再描述。综合优化处理后的VHDL程序经仿真正确后再将生成的位流(bit)文件配置到到FPGA 的逻辑单元阵列,以定义器件内的逻辑功能块和其互连的功能。(5)下载验证。将步骤(4)得到的器件编程文件下载到目标芯片中,进行硬件的测试。浮点运算的结果显示在多功能EDA实验台相应的发光二极管上,通过观测,可以证实所设计的浮点运算器是正确的。3.3 基于原理图方式采用原理图方式设计一个浮点运算器,首先必须分析出运算器的组成,然后使用基本的逻辑门和触发器来实现。根据前面的分析可知,浮点四则运算比起定点运算来要复杂一些。在浮点运算中,阶码和尾数是分别进行运算的,并且都是定点数(阶码为定点整数,尾数为定点小数)。因此,可以说,浮点运算器是定点运算器的扩充和强化。一般浮点运算器都至少具有两个定点数逻辑运算单元,一个用于阶码的比较和运算,另一个用于尾数的运算。从运算器结构来讲,不但要有尾数运算器,而且还要有阶码运算器。阶码运算器用来求阶差、修改阶码等操作,一般只进行加减运算。而尾数部件不但有加法器用以求和,还应有左移和右移线,以实现对尾数的操作。 我们设计的浮点运算器以尾数为 8 位,阶码为 4 位的浮点数为例,根据实验开发平台资源,其组成如图 6所示。 由于 XILINX 公司 FOUNDATION 3.1 软件本身提供的器件相当丰富,小到逻辑门,大到全加器,类型丰富,所以我们开发软件选用 XILINX 公司的 FOUNDATION 3.1。在 FOUNDA-TION 3.1 原理图编辑环境中设计出如图5 所示浮点运算器的具体原理电路,规定器件的输入/输出,并定义好相应的网络名称和总线名称。在整个浮点运算器的设计过程中,核心部件是加法器、移位寄存器和计数器。计数器选择 Foundation3.1 的标准库中 CB4CLED(4-BitLoadable Cascadable Bidirectional Binary Counter with Clock En-able and Asynchronous Clear)。移位寄存器选择 Foundation3.1(的标准库中 SR8CLED 8-BitShiftRegister with Clock Enableand)AsynchronousClear 。 计数器开始工作后,根据相应的计数器输出信号,分别对移位寄存器进行操作。当功能选择的是加法或减法时,对阶的结果是为了移位,在实现过程中,我们假定为浮点数大于浮点数 2,则对浮点数2 的尾数进行右移。当计数器中的阶码差减为0时,表示右移结束,接下去便是两浮点数的尾数相加或相减。当功能选择的是乘法或除法时,计数器的初始值是字长的值,在这里是8。开始计数过程前,乘法累计器被清零。计数开始后,乘法累加器、乘数寄存器和被乘数寄存器分别根据前面所说的定点数相乘所规定的操作进行运作。当计数器计数结束后,乘法结果分别存放于乘法累加器(高8 位)和乘数寄存器中。 当尾数计算和阶码计算都结束后,分别把结果的阶码、尾数和溢出标志送往
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 当老师演讲稿
- 2026年中国内助伸单轴膝关节项目经营分析报告
- 肝胆科肝胆相照圈教案(2025-2026学年)
- 宝安离婚协议书律师
- 幼儿园小班游戏教案鞋子真有趣含反思(2025-2026学年)
- 2025-2030中国漂洗添加剂行业数字化转型现状及未来布局策略
- 三年级鄂教版上册语文教案(2025-2026学年)
- 2025年怎么制作简易考试题目及答案
- 考试成绩的演讲稿
- 2026年中国食用菌种植项目经营分析报告
- 2025年汽车外饰件行业分析报告及未来发展趋势预测
- 储罐施工安装施工方案
- 2025年重组人促红素行业分析报告及未来发展趋势预测
- 2025消防法考试题库及参考答案
- 2025年考叉车题库1000道题及答案
- 人工智能赋能高职化学翻转课堂的创新模式研究
- 泳池安全生产岗位责任制度
- 2025年生态环境监测详细作业指导书 (水和废水第4部分)
- 2025年生态恢复工程生态评估与效果监测可行性研究报告
- 2025年10月“第一议题”学习(附有核心内容)
- 小区防寒防冻知识培训课件
评论
0/150
提交评论