前言
就是尝试尝试这种方法,也记录一下自己的思考。
3-56
我们从(b)开始讲。
其实迭代电路的设计就像程序设计中的递归设计一样,要明确有几个输入有几个输出,每个输入是什么意思,对应的每个输出又是什么意思,哪个输出是有利于下一单元的利用,哪一个是到此为止就可以输出了的。
思路
本题是要求对4为输入求补。由于题中并没有讲是真值还是原码,所以我们按照所有为求补来解,进位舍去。我之前对数求补是符号位后全部取反再+1,显然这种思路并不利于迭代的设计。
我们采用从低位向高位找寻第一个1的方法来实现求补,第一个1的位置记位L,L前面的所有数都取反,后面和自己是不变的。
比如 1010的补码位0110.
那么该怎么设计这个迭代电路呢?要求使用的是双输入双输出单元(两个输入记为i1、i2,i1为输入的四位中的一位)。输出的一位O1必然是要给下一单元利用的,还有一个输出位O2就是我们已经处理好的那一位。
我们利用上面讲的第二种求补运算,从低位开始,看一看这一位是不是1,如果是1,这位后面的所有数都取反即可,怎么取反?这里有个技巧是用1与对应的数取异或运算,得到的就是这个数的反;如果不是1,那么就要保留原来的数不变,这也刚好是与0异或可以得到的结果。这就是O2的逻辑思路,则O2=i1⊕i2。
对于O1的话,它的意义也很明显了就是判断这个数是否是1,很明显用或运算就好了。O1=i1+i2
电路图
i2的初始值为0哦,因为默认初始从0开始。
O1=i1+i2
O2=i1⊕i2
3-60
思路
有三个输入一个输出,很显然这个输出是连接两个单元的,另外两个输入分别是A、B的对应两位。输出X
的意思是到这一位为止A与B的大小关系(有点dp的味道了啊哈哈),很显然如果我们从前向后依次比,在对于011这个输入的时候,输出是不确定的。
所以我们选择从低位向高位走,真值表如下:
电路图
后言
持续更新