基于 FPGA的32位除法器设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录
摘要 (1)
第1章绪论 (2)
第2章设计原理 (3)
2.1 除法运算分析 (3)
2.2 除法器算法的实现 (3)
2.2.1除法器无符号数的除法 (3)
2.2.2除法器有符号数的除法 (3)
第3章软件介绍及设计过程 (4)
3.1 Quartus II简介 (4)
3.2 程序设计过程 (4)
3.3 仿真结果 (6)
结论 (7)
参考文献 (8)
附录1 源程序 (9)
摘要
介绍了一种使用可编程逻辑器件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除法器有符号数的除法