超前进位加法器

计算机组成与设计(五)—— 加法器的优化

允我心安 提交于 2020-03-04 18:43:28
4-bit加法器示例 先看一下上一节得到的加法器实现,可以看出改进的地方。 不难发现整个过程是从右至左依次执行,每一个进位需要等前面的运算全完成,可以在一开始得到所有的进位吗? 行波进位加法器(Ripple-Carry Adder,RCA) 像上面4-bit加法器这样实现的加法器被称作行波进位加法器,所有的进位像波浪一样向左推进。 结构特点:低位全加器的C out 连接到高一位全加器C in 优点:电路布局简单,设计方便 缺点:高位的运算必须等待低位的运算完成 4-bit RCA的门电路实现 我们考察其中的关键路径(延迟最长的路径) 总延迟时间:(T + T)*4 + T = 9T,推广到n位,总时间为(2n + 1)*T。降低总延迟时间就是我们优化的方向。 加法器的优化思路 主要思路:提前计算出“进位信号”。对进位信号进行分析: $C_{i+1} = (A_i · B_i) + (A_i · C_i) + (B_i · C_i) = (A_i · B_i) + (A_i + B_i) · C_i$ 设:生成信号( Genarate ):$G_i = A_i · B_i$,传播信号 (Propagate ):$P_i = A_i + B_i$,则:$C_{i+1} = G_i + P_i · C_i$ 如果把这看作一个递推公式,这是一个等差函数,通项可直接求出来,且只与$A_i$和

算术运算单元ALU的设计与实现

拟墨画扇 提交于 2019-12-30 13:10:27
算术运算单元ALU的设计与实现 这是2018年大三时的一个课程设计,在这里把相关技术和用到的知识分享给大家。(由于编者水平有限可能存在错误的地方,欢迎大家指正)题目给出的要求如下: 一、设计题目及要求 要求: 1.进行两个四位二进制数的运算。 2.算术运算:A+B,A-B,A+1,A-1 3.逻辑运算:A and B,A or B,A not, A xor B 注意:从整体考虑设计方案,优化资源的利用 二、设计过程及内容 2.1总体设计 ALU算术运算单元由以下几个部分构成: 图1 ALU运算单元系统结构图 为了尽可能减少资源的使用(或以相同的资源增加更多的功能),在此系统的基础上,增加基于寄存器的分时复用输入模块进行改进。 图2 基于分时复用方法的ALU运算单元结构 ①输入模块 该模块用于两个四位二进制数的输入。通过使用实验箱的拨码开关,输入高低电平,表示二进制的 1和0,四组拨码开关组合可以表示一个四位二进制数。 ②逻辑运算单元 该模块用于两个四位二级制数的逻辑运算。通过列出一位二进制数逻辑运算的真值表(含有四种不同的逻辑运算功能),得出了一位二进制数逻辑运算单元的表达式(已使用卡诺图化简)。将按照逻辑表达式连接好的多个一位二进制逻辑运算单元进行组合,可得到多位二进制数逻辑运算单元。 通过使用“真值表+卡诺图”的方法将所有的逻辑运算的表达式融合在一起进行化简

超前进位加法器

戏子无情 提交于 2019-11-26 14:50:29
概述 之前学习了一位半加器与一/四位全加器的相关知识,接着学习超前进位加法器加深认识 八位级联进位加法器 设计文件 采用硬件行为方式描述八位全加器 123456789101112131415161718192021222324252627282930313233343536373839404142434445 module qjq(co,sum,a,b,ci); input[7:0] a,b; input ci; output[7:0] sum; output co; reg[7:0] sum; reg co; reg[7:0] G,P,C; //中间变量,分别是生产函数、传递函数、和进位函数always @(a or b or ci) begin G[0] =a[0] & b[0]; //生产函数,加数相与,产生进位 P[0] =a[0] | b[0]; //传递函数,如果a或b有不为0,则将进位输入传递 C[0] =ci; //最后位的进位输入,初始化位ci sum[0] =G[0]^ P[0] ^ C[0];//输出数据 G[1] =a[1] & b[1]; P[1] =a[1] | b[1]; C[1] =G[0] |(P[0] & C[0]);//c=ab+(a+b)ci=G|(P&ci) sum[1] =G[1] ^ P[1] ^ C[1]; G[2] =a[2] &