基于FPGA的32位除法器设计_第1页
基于FPGA的32位除法器设计_第2页
基于FPGA的32位除法器设计_第3页
基于FPGA的32位除法器设计_第4页
基于FPGA的32位除法器设计_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、目录摘要1第1章 绪论2第2章 设计原理32.1 除法运算分析32.2 除法器算法的实现42.2.1除法器无符号数的除法42.2.2除法器有符号数的除法4第3章 软件介绍及设计过程53.1 Quartus II简介53.2 程序设计过程63.3 仿真结果7结论8参考文献9附录1 源程序10摘要介绍了一种使用可编程逻辑器件FPGA和VHDL语言实现32位除法器的设计方法。该除法器不仅可以实现有符号数运算,也可以实现无符号数的运算。除法器采用节省FPGA逻辑资源的时序方式设计,主要由移位、比较和减法三种操作构成。由于优化了程序结构,因此程序浅显易懂,算法简单,不需要分层次分模块进行。并使用Alte

2、ra公司的Quartus软件对该除法器进行编译、仿真,得到了完全正确的结果。关键词:FPGA;VHDL;除法器;减法;移位第1章 绪论EDA 技术就是以计算机为工具,设计者在 EDA 软件平台上,用硬件描述语言 VHDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。EDA 技术的出现,极大地提高了电路设计的效率和可操作性,减轻了设计者的劳动强度。 VHDL是一种全方位的硬件描述语言,包括系统行为级、寄存器传输级和逻辑门级多个设计层次,支持结构、数据流和行为 3 种描述形式的混合描述,因此 VHD

3、L几乎覆盖了以往各种硬件描述语言的功能,整个自顶向下或自底向上的电路设计过程都可以用 VHDL来完成。另外,VHDL还有以下优点:VHDL的宽范围描述能力使它成为高层次设计的核心,将设计人员的工作重心转移到了系统功能的实现和调试上,只需要花较少的精力用于物理实现;VHDL可以用简洁明确的代码描述来进行复杂控制逻辑的设计,灵活且方便,而且也便于设计结果的交流、保存和重用;VHDL的设计不依赖于特定的器件,方便了工艺的转换。VHDL 是一个标准语言,为众多的 EDA 场上支持,因此移植性好2。 本次课程设计通过利用 QuartusII 软件实现32位除法器。从而对 EDA 技术进一步的熟悉、了解和

4、掌握。通过本课程的学习,可以了解硬件描述语言编程方法 ,掌握 VHDL编程方法。除法是数值计算和数据分析中最常用的运算之一,许多高级运算如平方根、指数、三角函数等都与其有关。在FPGA中,有加、减、乘、除的算法指令,但除法中除数必须是2的幂,因此无法实现除数为任意数的除法。然而除法器是微处理器的一个重要运算单元,除法器的运算速度、性能、功耗等都会影响系统的整体性能,相对于其他运算操作,除法很复杂且其操作的效率很低,所以研究的人很少 引,但是对除法的忽视会导致系统整体性能的下降。因此当前不但应该研究除法,而且研究的重点应该放在提升运算速度上。如今大部分电子系统的最大位宽只有32位,因此本文用VH

5、DL编写了实现32位数相除的除法器。本文设计的除法器,不仅能实现有符号数的运算,也可以实现无符号数的运算。除法器是电子技术领域的基础模块, 在电子电路设计中得到广泛地应用。然而相对于加法和乘法等其他操作, 除法操作的效率很低。出现这种情况的原因除了除法本身的复杂性外, 还与人们普遍认为除法是不频繁的操作有关。作为微处理器的一个重要的运算单元, 除法器的运算速度、性能、功耗等都会影响系统的整体性能, 所以对除法效率的忽视会导致系统整体性能的下降。硬件除法器的运算速度比软件实现方法快得多, 但为了提升运算速度, 就要以硬件资源的消耗为代价。第2章 设计原理2.1 除法运算分析除法器的算法可分为两类

6、: 基于减法操作和基于乘法操作的算法。数字循环是最简单, 运用最广泛的一类算法, 以减法为基本的操作, 在每一次迭代中求固定位数的商。在最早的Resorting 方法中, 每次尝试在余数中减去除数, 然后判断得到的结果, 如果结果为正就上商 1, 否则上商 0, 并恢复余数, 最后移位进行下一次迭代。Resorting 方法一次迭代的框图如图 1 所示:在这种方法中一次迭代需要 2 次加法运算, 这样增加了不必要延时, Non_resorting 方法把下一次迭代中和减法合并, 这样在每次迭代中根据上一次上商的结果进行操作, 如果上次上商为 1, 这次迭代用余数减去除数, 否则用余数加上除数,

7、 然后和Resorting 方法一样得到本次迭代的商。还有就是基于乘法的算法, 把除法看成是乘法的逆运算。如下面的式子所示:A=B×Q+R其中 A 为被除数, B 为除数, Q 为商, R 为余数。这样的算法主要有 SRT, Newton- Raphson 和 Goldschmidt 算法等。除法在很多方面与乘法不同, 最重要的区别就是在乘法中所有的部分乘积都可以并行生成, 而在除法中每个商的位都是以一种顺序的过程确定的,因此速度较慢。而以FPGA为硬件基础,基于减法的除法器算法不仅节省资源,速度也较快。2.2 除法器算法的实现 2.2.1除法器无符号数的除法本设计中的除法器,巧用V

8、HDL语言,将有符号数和无符号数的除法结合在一起,节省了资源,也提高了速度。其算法如下:对于32位无符号被除数a,先将a转换成高32位是0低32位是a的数temp_a。在每个周期开始时temp_a向左移动一位,最后一位补零,然后判断temp_a的高32位是否大于等于除数b,如是则temp_a的高32位减去b并且加I,得到的新值仍赋给temp_a;如不是直接进入下一步。上面的移位、比较、减法(减法视情况而定)要进行32次,经过32个周期后,运算结束,所得到的temp_a的高32位为余数,低32位为商。将移位、比较和相减放在同一个循环中,去除了不必要的延时,增加了设计的可靠性。2.2.2除法器有符

9、号数的除法对于32位有符号数的除法,算法与上面类似,只是需要判断商和余数是正数还是负数。令d=a(31)b(31),如果d=0则被除数与除数同为正数或者负数,最终商为正数;如果d=1说明被除数与除数一个为正一个为负,最终商为负数。被除数是负数时余数为负,否则为正。有符号数的除法采用的算法是将被除数与除数均变成无符号的32位数,紧接着的计算过程与无符号数除法一样。最后根据d的值对商作处理,如果d=0商不需任何处理,如果d=1则将商取反加1才是正确的结果。余数的调整则根据被除数的符号位进行。32位除法器的框图如图1。当you_wu为1时进行有符号数运算,否则进行无符号数运算。图1 除法器逻辑框图第

10、3章 软件介绍及设计过程3.1 Quartus II简介Altera Quartus II 作为一种可编程逻辑的设计环境, 由于其强大的设计能力和直观易用的接口,越来越受到数字系统设计者的欢迎。当前官方提供下载的最新版本是v12.1。Altera Quartus II (3.0和更高版本)设计软件是业界唯一提供FPGA和固定功能HardCopy器件统一设计流程的设计工具。工程师使用同样的低价位工具对 Stratix FPGA进行功能验证和原型设计,又可以设计HardCopy Stratix器件用于批量成品。系统设计者现在能够用Quartus II软件评估HardCopy Stratix器件的性

11、能和功耗,相应地进行最大吞吐量设计。Altera的Quartus II可编程逻辑软件属于第四代PLD开发平台。该平台支持一个工作组环境下的设计要求,其中包括支持基于Internet的协作设计。Quartus平台与Cadence、ExemplarLogic、 MentorGraphics、Synopsys和Synplicity等EDA供应商的开发工具相兼容。改进了软件的LogicLock模块设计功能,增添了FastFit编译选项,推进了网络编辑性能,而且提升了调试能力。3.2 程序设计过程由设计原理知道本设计用的最多的操作就是移位、比较和减法。有设计者指出分别用3个模块实现移位、比较和减法,再加

12、上控制模块共4个模块。可是此方法实现的仅是8位无符号数的运算,不能实现有符号数运算且程序很复杂,占用的FPGA资源也多。也有人提出将被除数作为被减数、除数作为减数,作减法,差重新置入被减数,反复相减,直到被减数小于减数为止,记录能够相减的次数即得到商的整数部分。这样做不仅占用的逻辑资源很多,而且随着被除数与除数差值的增大、相减的次数增多,速度也就降低。本设计不分模块,仅用两个进程,巧妙使用loop语句便可方便的实现32位有符号和无符号数除法。另外需要注意的是,被除数与除数的临时存储单元temp_a和temp_b必须设为变量,如果设置成信号即使编译完全正确,也得不到正确的仿真结果。循环变量n的初

13、值不能在设定变量时设置,必须在循环开始前设置,否则程序将成为死循环,只有注意到上面两点,loop语句才能真的起到巧妙的作用。本设计采用Quartus II编写程序代码、编译、执行结果如下两图所示:图2 程序代码图3 编译、执行结果3.3 仿真结果利用Quartus II软件进行无符号数的运算除法器的仿真图如下:图4 无符号数的运算除法器的仿真图利用Quartus II软件进行有符号数的运算除法器的仿真图如下:图5有符号数的运算除法器的仿真图图4和图5是32位除法器的仿真图。图4中令you_wu为0,实现无符号数相除,图5中you_wu为1,实现有符号数相除。本设计运行速度较快,当两个值相差很大

14、的数(不管是有符号数还是无符号数)相除时,速度优势将更加明显。另外图4和图5中没有任何毛刺,说明该除法器性能很稳定,不仅速度较快,而且没有竞争冒险,是一个成功的设计。结论在FPGA的设计中,要关心两个参数:逻辑资源的占用率和速度 。本文给出的32位除法器占用的逻辑资源较少;而速度主要取决于系统时钟,如果系统时钟为50 MHz,则完成32位数除法所需时间不到1 txs。文中有关代码均经Quartus II编译通过,可以用于实际系统设计。为期近两周的 EDA 课程设计就这样结束了,设计首先对 EDA 课程的到了复习和应用,并且对所学的知识的到了应用。本次课程设计通过理论与实践的相结合,对理论知识的

15、掌握更佳的熟练。最后,感谢学校给我们这次机会,锻炼了我们的动手能力。通过这次课程设计让我将理论知识应用到实践中,当然也让我意识到自身理论知识的缺乏和动手能力有待提高,让我明白在以后的学习中应该更应该努力钻研。同时也感谢指导老师在设计过程中的辅导以及同学的帮助参考文献1朱卫华,郑留平可任意设置计算精度的整数除法器的设计J国外电子测量技术。2008,27(2):16182栗素娟,阎保定,朱清智基于FPGA的快速浮点除法器IP核的实现J河南科技大学学报:自然科学版,2008,29(6):34-33刘志刚,汪旭东,郑关东基于SRT算法的单精度浮点除法器J电子技术应用,2007,33(1O):56-58

16、4潘明,许勇基于加减交替法除法器的FPGA设计与实现J微计算机信息,2008,24(9-2):1411435基于VHDL的8位除法器的实现J微计算机信息2006,22(12-3):277-2786姜咏江基于QuartusII的计算机核心设计M北京:清华大学出版社,20067张静亚FPGA系统设计中资源分配的分析和研究J信息化研究,2009,35(3):37-39附录1 源程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;use ieee.

17、numeric_std.all;entity divide isport(you_wu:in std_logic;a,b:in std_logic_vector(31 downto 0);yshang,yyushu:out std_logic_vector(31 downto 0);end;architecture one of divide issignal tempa,tempb : std_logic_vector(31 downto 0);signal fuhao,sign,d: std_logic;begind<=(a(31)xor b(31)and you_wu;sign&l

18、t;=a(31)and you_wu;process(a,b,you_wu)beginif you_wu = '1'thenif a(31) ='1'thentempa<=not a+1;elsetempa<=a;end if;if b(31)='1'thentempb<=not b+1;elsetempb<=b;end if;else-无符号数不作变化tempa<=a ; tempb<=b;end if;end process;process(tempa,tempb,fuhao,sign)variable n:integer;variable temp_a,temp_b: std_logic_vector(63 downto 0);begin

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论