编辑: 笨蛋爱傻瓜悦 2019-07-05
VHDL加法器设计 设计要求: 采用QuartusII集成开发环境利用VHDL硬件描述语言设计传播进位加法器,直接进位加法器,线形进位加法器,平方根进位加法器,并比较这四种加法器的性能.

为了便于比较性能,将四种加法器都设定为28位. 全加器设计 全加器是上述四种加法器的基础部件,首先应当设计一位全加器. 设计原理: VHDL程序: 仿真结果: 传播进位加法器设计 实际上加法器就是是全加器的级联,其中的每个FA网络为一个全加器(采用上文所述的全加器) VHDL代码: 功能仿真: 延时测定: 由图中的两个时间bar的差值可看出,sum值和cout值几乎同时计算出,其Tdelay=28.332ns (cin无关) 直接进位加法器设计 设计原理: 首先将AB输入转换为PG输入,若每级的P输入都是'1'则直接将Ci传给Co,否则像传播进位加法器一样计算 其AB-PG转换网络原理: Fa全加器原理: VHDL代码: 功能仿真: 延时仿真: 当通过直接进位网络(图中testp值全部为1时),进位信号有一定提前,但由于计算所有的P值本身也需要一定时间,所以改善并不明显.下图中,第一个图为P全1的情况,进位信号延时为13.2ns,第二个图为普通情况,进位信号延时为14.31ns. 线形进位加法器设计 设计原理: 将AB分成若干块,子块之间级联,每一个子块都预先计算好cin=0和cin=1的两种情况下的sum值和co值,当真正的cin进入时,通过多路选择器选择正确的一路,从而可以通过一个计算周期完成计算一个子块的运算.即通过并行加法运算,用空间复杂度换取时间复杂度,虽然可以有效地降低延时,但牺牲了大量的空间资源. 本实验采用每个liner_adder_unit子块位长为7bits,共4个子块.子块内的全加器仍采用行波进位型.基本结构如下图所示: VHDL代码: 功能仿真: 功能仿真: 延时测定: 可见,此次加法运算经过了24ns左右的延时后,得到了sum和co,相比于行波进位的28ns有了很大程度改善.但由于基础加法器采用的不是PG型的全加器,所以和PG直接进位的方案没有可比性. 平方根进位加法器 通过调节各个加法器子单元的位数,适当调节进位链与并行的加法子单元的延时关系,使加法子单元的延时略小于每一级的进位延时. 与线形进位一样,此加法器也分成4级,但四级各个位数不再相同,分别为2,4,8,14. VHDL代码: 功能仿真: 延时测定: 由于四级权重调整,减小了1,2级等待加法器网络的延时,因此sum值20s就计算出来了,比线形进位的24秒有很大进步,因为级数仍为四位,所以进位输出并没有很大改善.

六、总结:此实验共设计了4类加法器,通过修改进位链,修改并串行结构的方式逐步实现了加法器性能的改善.希望大家在做类似设计时能有所启发.

下载(注:源文件不在本站服务器,都将跳转到源网站下载)
备用下载
发帖评论
相关话题
发布一个新话题