Lab2实验报告¶
第一部分¶
-
行波进位加法器的不足
(相对于超前进位加法器,行波进位加法器的不足)
每一比特的进位输入必须等待前一比特完成进位输出的计算,所以这种加法器的速度慢。
超前进位加法器通过采用并行计算进位的方法,解决了行波进位加法器的进位依赖问题。
但是对于大位宽的超前进位加法器,进位逻辑计算单元面积耗费大。
-
加法器控制
-
如何让你的Adder_32计算a-b,给出a_invert b_invert和carry_in的值:
a_invert=0,b_invert=1,carry_in=1
-
如何表示运算溢出,请给出表示溢出的Bool代数(用Adder_32的输出计算)
根据invert的实现逻辑可知,操作数均为有符号,即最高位为符号位。
现讨论所有计算出现的情况:
-
-
相加:
如果是同为负数相加,结果的符号位变为0 为溢出
如果是同为正数相加,结果的符号位变为1 为溢出
所以相同符号数相加的溢出情况可总结为结果的最高位和两个操作数的最高位不同。
-
相减
不会出现溢出情况
真值表:
A_invert | B_invert | Sum[31] | OVERFLOW |
0 | 0 | 0 | 0 |
0 | 0 | 1 | 1 |
0 | 1 | 0 | 0 |
0 | 1 | 1 | 0 |
1 | 0 | 0 | 0 |
1 | 0 | 1 | 0 |
1 | 1 | 0 | 1 |
1 | 1 | 1 | 0 |
OVERFLOW = a_invert & b_invert & (~sum[31]) |
(~a_invert) & (~b_invert) & sum[31]
第二部分¶
-
时序逻辑基础
-
什么是锁存器,什么是触发器,分别有什么作用?
两者都是能达到存储效果的电路元器件;
锁存器对脉冲电平(0或1)敏感的双稳态电路,
触发器对脉冲边沿(上升沿或下降沿)敏感。
-
SR锁存器,D锁存器,SR触发器分别存在什么问题,为什么用D触发器作为时序逻辑基础?
SR锁存器:
缺点一:存在非法状态(RS同时为1)。
由于RS不可能同时变为0(电路时延不可能完全相同),存在先后问题,会给电路带来不确定性!因为我们不知道是谁先变成0,就更不知道输出会变成什么样!
缺点二:对输入信号也需要有一定的输入时长要求。
当输入信号S或R变为高电平后,输出信号Q或~ Q 需要经过一定延迟才会产生变化。这种延迟有时会影响到被其驱动的后续电路的动作,可能造成错误的逻辑输出或出现工作不稳定的情况。
D锁存器:
优化点:解决了RS不能同时为1的问题。
缺点一:对毛刺十分敏感。
当E端输入为1时,D对输入是“透明”的,和一根导线没有区别,而且由于电路延时问题,内存写入的时间并不统一。如果在时钟信号变为低之前,新的数据就已经到来,就会引起错误。
RS触发器
优化点:解决了锁存器普遍存在的有关电路延时的问题。把改变状态的时间缩短为一个时刻。
缺点:仍然存在非法状态。(RS同时为1)
D触发器
优点:
1.D触发器在工作中不存在非定义状态。
2.电路结构简单,在芯片中占用面积小。
3.除时钟边沿以外的其他时候输入的变化不会传导到输出端,去除了输入可能存在的毛刺,得到了稳定的输出。
-
如何用D触发器实现电路输出和指定下一状态,电路如何连接
-
用3个D触发器和若干逻辑门多选器实现3.1.3的有限状态机并画出电路图
-
结合你的探究谈谈时钟和时序的理解
时钟信号其实是一个固定周期的交变电信号。通过高低电平的变化和触发器对边沿敏感的性质打到在时钟周期内稳定储存,在时钟变化边沿跳变。
时序是一个个保持的状态的序列。在时钟信号跳变之后,进入下一个状态。多个状态的排列是时序。
-
-
计算电路进阶
请仿照乘法器的设计方法和我们手动计算除法的方式设计32bits无符号整数除法器,只需给出流程图