返回首页

8051算术逻辑运算单元设计

开发语言:其它 数据库:其它 论文:35 页 运行环境:Win2003,WinXP,Win2000,Win9X 软件等级:☆☆☆☆☆ 发布时间:2010-04-15 购买方式:银行汇款方式 联系QQ:530083379 咨询QQ客服 官方网址:www.bysjlw.net
软件介绍

1.2  研究内容及设计目标
本文主要研究如何在熟悉FPGA设计的基础上,利用Verilog HDL(硬件描述语言)编码实现MCS51算术逻辑运算单元的所有功能,并利用仿真工具对所实现的运算器进行仿真验证和综合。
课题的设计目标为利用编码实现MCS51算术逻辑运算单元,并对所设计的单元进行行为仿真、功能仿真以及综合验证,同时对设计单元进行针对性的测试,以证明其健壮性和实用性。
第2章  定点运算器研究现状
定点运算器部件主要包括:加法器、乘法器和除法器。本章将对乘法器和除法器设计的相关技术以及国内外研究状况进行详细介绍,而为了便于后续章节的具体说明,加法器设计的技术将在后面应用时介绍。
2.1  乘法器设计的研究现状
乘法器是定点处理器的主要组成部分,其速度是影响CPU速度的关键因素。同时,乘法器也是数字信号处理(DSP)、系统级芯片(SOC)的关键部件。在最新的处理器中,乘法器除了直接作为运算部件外,还用于加速地址转换、数组寻址和其他整数操作。随着科研生产对运算速度要求的提高,对乘法器性能的要求也在不断地提升。BOOTH算法、WALLACE树、CLA等技术的出现也使得乘法器设计的技术日益成熟。而不同的应用背景又要求在不同的算法和实现之间进行选择,权衡电路规模和性能,达到特定条件下的最优设计。
1. 乘法器的体系结构
所有的乘法器都有同样的处理过程,首先生成部分积,然后把这些部分积相加得到乘积。不同的乘法算法之间的差别在于它们是怎样产生部分积,然后怎么样把这些部分积相加得到最终的乘积。在这些方案之间选择是一个对性能和实现代价的取舍过程。最简单的方法是使用一个如图2.1所示的迭代结构逐个把一系列的部分积相加。
在这个结构中,每一个时钟周期产生一个部分积,然后把不同的时钟周期产生的部分积累加得到最终结果,这个结构中的部分积产生的电路一般用与门构成,乘数有多少位就产生多少个部分积。这个结构中的部分积累加电路由一个移位器和一个累加器构成,通过移位器把以前周期累加的结果移位,然后用累加器把当前周期产生的部分积和移位后的以前周期累加的结果累加。由于这个结构每次只能产生和累计一个部分积,并且部分积的个数就等于操作数的个数,所以使用这个结果得到的部分积的周期数比较多,但是由于实现起来比较简单,所以每个周期所需要的时间少,比较容易得到高的频率。如果乘法器是作为系统的一个部件并且整个系统使用同样的时钟信号,那么乘法器的频率就受制于系统的其他部分,这时只剩下实现电路简单这个优点了,高的时钟频率就没法表现出来。
由于乘法器单独使用的概率很小,很多情况下都是作为大系统的一个部件,因此首先需要减少一次乘法所需要的周期数。最直接的方法就是在图2.1中设置多套部分积生成电路和加法器,在一个周期中并行的产生多个部分积,然后把这些部分积串行的和以前周期累加的结果相加,具体的结构如图2.2所示。实际上,这个结构就是对上一结构的迭代过程进行部分展开,所以它需要更多的硬件资源,它也会在一个周期内产生更多的延时。如果合适的选择迭代展开的规模,使乘法器的频率和整个系统的频率相匹配,这样可以在不降低整个系统频率的前提下,提高乘法器的性能,从而提高整个系统的性能,惟一的代价就是多增加部分积的生成和加法器电路。把上面的迭代展开思想发挥到极致就是在并行产生所有的部分积,然后把这些部分积串行的相加。这个过程可以在一个周期内完成,这样就把整个乘法过程所需要的周期数减少到1。由于部分积的产生过程是并行,而部分积的累加过程是串行的,所以一次乘法所需要的时间大致上和部分积的个数成正比。由于这一系列串行的相加过程会产生很长的延时才能完成,使乘法器只能运行在很低的频率上,从而降低系统的性能,成为提高系统频率的瓶颈。解决这个问题的关键在于提高部分积的累加速度,既然所有的部分积都是并行产生的,那么它们的相加过程也是可以同时进行的。图2.3  树形的加法器阵列
事实上可以不增加硬件代价,只是改变加法器之间的连接状态,设法在同一时刻把尽可能多的部分积相加。具体的实现结构如图2.3所示的树形结构。使用树形加法器阵列就可以把N个部分积累加过程的时间复杂度从N降低到lgN,当N值比较大时,效果就相当明显了。
2. 部分积的生成
采用上文所述的任意结构,都首先需要产生部分积。最简单的方法是对一个N位的操作数生成N个部分积。这样的部分积产生电路实现简单、性能高,只要把被乘数和乘数的各个位进行与操作就可以了。但是由于乘法器的速度很大程度上是由部分积累加部分决定的,而部分积累加部分的硬件规模和执行速度很大程度上受部分积个数的影响,所以减少部分积的个数是提高乘法器性能的有效方法。Booth在1951年提出的一种编码方法(Booth编码)可以把部分积的个数减少一半。在最初的Booth编码中把两位乘数编为一组,然后根据编码后的值生成部分积,这里的部分积属于集合{0,M,2M,3M},M是被乘数。这样的实现方案可以把部分积的个数减少一半,但是在部分积的生成过程中需要加法器来得到被乘数的三倍。为了得到被乘数的三倍,不可避免的要使用加法器,由于加法器需要把进位信息从最低位传递到最高位,所以部分积的生成速度就下降了。
为了克服这个障碍,就要避免使用到三倍的被乘数。通过修改对乘数的编码,改进的Booth算法可以把部分积的个数减小一半的同时,避免使用三倍的被乘数。改进的Booth算法的编码原则如图2.4所示。

购买说明

☉此设计为本站原创作品,版权归“毕业设计论文网-www.bysjlw.net”所有,请尊重作者劳动,你若发现侵权行为,请向本站举报,谢谢合作!
☉欲获得完整设计,请与本站联系(QQ:530083379 Email:530083379@qq.com),观看程序演示录像,满意后购买!

顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
验证码:点击我更换图片
推荐毕业设计