基于 FPGA的32位除法器设计汇总Word格式.docx

上传人:b****1 文档编号:12977719 上传时间:2022-10-01 格式:DOCX 页数:10 大小:232.34KB
下载 相关 举报
基于 FPGA的32位除法器设计汇总Word格式.docx_第1页
第1页 / 共10页
基于 FPGA的32位除法器设计汇总Word格式.docx_第2页
第2页 / 共10页
基于 FPGA的32位除法器设计汇总Word格式.docx_第3页
第3页 / 共10页
基于 FPGA的32位除法器设计汇总Word格式.docx_第4页
第4页 / 共10页
基于 FPGA的32位除法器设计汇总Word格式.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

基于 FPGA的32位除法器设计汇总Word格式.docx

《基于 FPGA的32位除法器设计汇总Word格式.docx》由会员分享,可在线阅读,更多相关《基于 FPGA的32位除法器设计汇总Word格式.docx(10页珍藏版)》请在冰豆网上搜索。

基于 FPGA的32位除法器设计汇总Word格式.docx

附录1源程序10

 

摘要

介绍了一种使用可编程逻辑器件FPGA和VHDL语言实现32位除法器的设计方法。

该除法器不仅可以实现有符号数运算,也可以实现无符号数的运算。

除法器采用节省FPGA逻辑资源的时序方式设计,主要由移位、比较和减法三种操作构成。

由于优化了程序结构,因此程序浅显易懂,算法简单,不需要分层次分模块进行。

并使用Altera公司的QuartusⅡ软件对该除法器进行编译、仿真,得到了完全正确的结果。

关键词:

FPGA;

VHDL;

除法器;

减法;

移位

第1章绪论

EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言VHDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。

EDA技术的出现,极大地提高了电路设计的效率和可操作性,减轻了设计者的劳动强度。

VHDL是一种全方位的硬件描述语言,包括系统行为级、寄存器传输级和逻辑门级多个设计层次,支持结构、数据流和行为3种描述形式的混合描述,因此VHDL几乎覆盖了以往各种硬件描述语言的功能,整个自顶向下或自底向上的电路设计过程都可以用VHDL来完成。

另外,VHDL还有以下优点:

VHDL的宽范围描述能力使它成为高层次设计的核心,将设计人员的工作重心转移到了系统功能的实现和调试上,只需要花较少的精力用于物理实现;

VHDL可以用简洁明确的代码描述来进行复杂控制逻辑的设计,灵活且方便,而且也便于设计结果的交流、保存和重用;

VHDL的设计不依赖于特定的器件,方便了工艺的转换。

VHDL是一个标准语言,为众多的EDA场上支持,因此移植性好[2]。

本次课程设计通过利用QuartusII软件实现32位除法器。

从而对EDA技术进一步的熟悉、了解和掌握。

通过本课程的学习,可以了解硬件描述语言编程方法,掌握VHDL编程方法。

除法是数值计算和数据分析中最常用的运算之一,许多高级运算如平方根、指数、三角函数等都与其有关。

在FPGA中,有加、减、乘、除的算法指令,但除法中除数必须是2的幂,因此无法实现除数为任意数的除法。

然而除法器是微处理器的一个重要运算单元,除法器的运算速度、性能、功耗等都会影响系统的整体性能,相对于其他运算操作,除法很复杂且其操作的效率很低,所以研究的人很少引,但是对除法的忽视会导致系统整体性能的下降。

因此当前不但应该研究除法,而且研究的重点应该放在提升运算速度上。

如今大部分电子系统的最大位宽只有32位,因此本文用VHDL编写了实现32位数相除的除法器。

本文设计的除法器,不仅能实现有符号数的运算,也可以实现无符号数的运算。

除法器是电子技术领域的基础模块,在电子电路设计中得到广泛地应用。

然而相对于加法和乘法等其他操作,除法操作的效率很低。

出现这种情况的原因除了除法本身的复杂性外,还与人们普遍认为除法是不频繁的操作有关。

作为微处理器的一个重要的运算单元,除法器的运算速度、性能、功耗等都会影响系统的整体性能,所以对除法效率的忽视会导致系统整体性能的下降。

硬件除法器的运算速度比软件实现方法快得多,但为了提升运算速度,就要以硬件资源的消耗为代价。

第2章设计原理

2.1除法运算分析

除法器的算法可分为两类:

基于减法操作和基于乘法操作的算法。

数字循环是最简单,运用最广泛的一类算法,以减法为基本的操作,在每一次迭代中求固定位数的商。

在最早的Resorting方法中,每次尝试在余数中减去除数,然后判断得到的结果,如果结果为正就上商1,否则上商0,并恢复余数,最后移位进行下一次迭代。

Resorting方法一次迭代的框图如图1所示:

在这种方法中一次迭代需要2次加法运算,这样增加了不必要延时,Non_resorting方法把下一次迭代中和减法合并,这样在每次迭代中根据上一次上商的结果进行操作,如果上次上商为1,这次迭代用余数减去除数,否则用余数加上除数,然后和Resorting方法一样得到本次迭代的商。

还有就是基于乘法的算法,把除法看成是乘法的逆运算。

如下面的式子所示:

A=B×

Q+R其中A为被除数,B为除数,Q为商,R为余数。

这样的算法主要有SRT,Newton-Raphson和Goldschmidt算法等。

除法在很多方面与乘法不同,最重要的区别就是在乘法中所有的部分乘积都可以并行生成,而在除法中每个商的位都是以一种顺序的过程确定的,因此速度较慢。

而以FPGA为硬件基础,基于减法的除法器算法不仅节省资源,速度也较快。

2.2除法器算法的实现

2.2.1除法器无符号数的除法

本设计中的除法器,巧用VHDL语言,将有符号数和无符号数的除法结合在一起,节省了资源,也提高了速度。

其算法如下:

对于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除法器有符号数的除法

对于32位有符号数的除法,算法与上面类似,只是需要判断商和余数是正数还是负数。

令d=a(31)⊕b(31),如果d=0则被除数与除数同为正数或者负数,最终商为正数;

如果d=1说明被除数与除数一个为正一个为负,最终商为负数。

被除数是负数时余数为负,否则为正。

有符号数的除法采用的算法是将被除数与除数均变成无符号的32位数,紧接着的计算过程与无符号数除法一样。

最后根据d的值对商作处理,如果d=0商不需任何处理,如果d=1则将商取反加1才是正确的结果。

余数的调整则根据被除数的符号位进行。

32位除法器的框图如图1。

当you_wu为1时进行有符号数运算,否则进行无符号数运算。

图1除法器逻辑框图

第3章软件介绍及设计过程

3.1QuartusII简介

AlteraQuartusII作为一种可编程逻辑的设计环境,由于其强大的设计能力和直观易用的接口,越来越受到数字系统设计者的欢迎。

当前官方提供下载的最新版本是v12.1。

AlteraQuartusII(3.0和更高版本)设计软件是业界唯一提供FPGA和固定功能HardCopy器件统一设计流程的设计工具。

工程师使用同样的低价位工具对StratixFPGA进行功能验证和原型设计,又可以设计HardCopyStratix器件用于批量成品。

系统设计者现在能够用QuartusII软件评估HardCopyStratix器件的性能和功耗,相应地进行最大吞吐量设计。

Altera的QuartusII可编程逻辑软件属于第四代PLD开发平台。

该平台支持一个工作组环境下的设计要求,其中包括支持基于Internet的协作设计。

Quartus平台与Cadence、ExemplarLogic、MentorGraphics、Synopsys和Synplicity等EDA供应商的开发工具相兼容。

改进了软件的LogicLock模块设计功能,增添了FastFit编译选项,推进了网络编辑性能,而且提升了调试能力。

3.2程序设计过程

由设计原理知道本设计用的最多的操作就是移位、比较和减法。

有设计者指出分别用3个模块实现移位、比较和减法,再加上控制模块共4个模块。

可是此方法实现的仅是8位无符号数的运算,不能实现有符号数运算且程序很复杂,占用的FPGA资源也多。

也有人提出将被除数作为被减数、除数作为减数,作减法,差重新置入被减数,反复相减,直到被减数小于减数为止,记录能够相减的次数即得到商的整数部分⋯。

这样做不仅占用的逻辑资源很多,而且随着被除数与除数差值的增大、相减的次数增多,速度也就降低。

本设计不分模块,仅用两个进程,巧妙使用loop语句便可方便的实现32位有符号和无符号数除法。

另外需要注意的是,被除数与除数的临时存储单元temp_a和temp_b必须设为变量,如果设置成信号即使编译完全正确,也得不到正确的仿真结果。

循环变量n的初值不能在设定变量时设置,必须在循环开始前设置,否则程序将成为死循环,只有注意到上面两点,loop语句才能真的起到巧妙的作用。

本设计采用QuartusII编写程序代码、编译、执行结果如下两图所示:

图2程序代码

图3编译、执行结果

3.3仿真结果

利用QuartusII软件进行无符号数的运算除法器的仿真图如下:

图4无符号数的运算除法器的仿真图

利用QuartusII软件进行有符号数的运算除法器的仿真图如下:

图5有符号数的运算除法器的仿真图

图4和图5是32位除法器的仿真图。

图4中令you_wu为0,实现无符号数相除,图5中you_wu为1,实现有符号数相除。

本设计运行速度较快,当两个值相差很大的数(不管是有符号数还是无符号数)相除时,速度优势将更加明显。

另外图4和图5中没有任何毛刺,说明该除法器性能很稳定,不仅速度较快,而且没有竞争冒险,是一个成功的设计。

结论

在FPGA的设计中,要关心两个参数:

逻辑资源的占用率和速度。

本文给出的32位除法器占用的逻辑资源较少;

而速度主要取决于系统时钟,如果系统时钟为50MHz,则完成32位数除法所需时间不到1txs。

文中有关代码均经QuartusII编译通过,可以用于实际系统设计。

为期近两周的EDA课程设计就这样结束了,设计首先对EDA课程的到了复习和应用,并且对所学的知识的到了应用。

本次课程设计通过理论与实践的相结合,对理论知识的掌握更佳的熟练。

最后,感谢学校给我们这次机会,锻炼了我们的动手能力。

通过这次课程设计让我将理论知识应用到实践中,当然也让我意识到自身理论知识的缺乏和动手能力有待提高,让我明白在以后的学习中应该更应该努力钻研。

同时也感谢指导老师在设计过程中的辅导以及同学的帮助

参考文献

[1]朱卫华,郑留平.可任意设置计算精度的整数除法器的设计[J].国外电子测量技术。

2008,27

(2):

16.18.

[2]栗素娟,阎保定,朱清智.基于FPGA的快速浮点除法器IP核的实现[J].河南科技大学学报:

自然科学版,2008,29(6):

34-3%

[3]刘志刚,汪旭东,郑关东.基于SRT算法的单精度浮点除法器[J].电子技术应用,2007,33(1O):

56-58.

[4]潘明,许勇.基于加减交替法除法器的FPGA设计与实现[J].微计算机信息,2008,24(9-2):

141.143.

[5]基于VHDL的8位除法器的实现[J].微计算机信息.2006,22(12-3):

277-278.

[6]姜咏江.基于QuartusII的计算机核心设计[M].北京:

清华大学出版社,2006.

[7]张静亚.FPGA系统设计中资源分配的分析和研究[J].信息化研究,2009,35(3):

37-39.

附录1源程序

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.a

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1