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

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

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

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

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

基于FPGA的32位除法器设计汇总

目录

摘要1

第1章绪论2

第2章设计原理3

2.1除法运算分析3

2.2除法器算法的实现4

2.2.1除法器无符号数的除法4

2.2.2除法器有符号数的除法4

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

3.1QuartusII简介5

3.2程序设计过程6

3.3仿真结果7

结论8

参考文献9

附录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