我们有一个比较器,用于比较4 bit
二进制数(A_3, A_2, A_1, A_0
和B_3, B_2, B_1, B_0
)。结果是输出信号C_i
,如果1
,则值为A > B
。
算术电路应该通过连接4
个相同的1 bit
算术模块来构成。这些1 bit
模块中的每一个都具有输入A_i, B_i, C_i-1
,输出C_i
具有i=0,1,2,3
。因此,进位输出将取不太重要的数字i-1
。
鉴于A=0100
和B=0010
。填写下表,您应该以合理的方式选择C_i-1
位。当我们C_i
时,行李1
正好是A > B
。
我尽可能地填写了表格,但我不知道如何使用C_i-1
......
我已阅读了我们的阅读材料及其对C_i-1
的评价:
对于比较操作<, ≤, ≥, >
,执行减法并从结转C_i-1
所以请告诉我,我是否填写了正确的表格?因为这是旧考试的任务,它还有许多其他子任务。如果我开始(这个表)错了,那么其他一切都会出错! :(
我选择C_i-1是因为我看第一行A = 0而B = 0,所以0-0 = 0表示为什么C_i-1 = 0。第二行我们有A = 1而B = 0,1-0 = 1所以C_i-1 = 1。然后我们有A = 0和B = 1,0-1 = -1但这里有问题,如果它是正确的:/不知道请帮助我..
答案 0 :(得分:3)
通常的算术谓词&lt;,≤,≥,&gt;,=通常用减法实现。
执行减法有两种主要方法: A)使用减法模块或 B)使用加法器。
您没有指定使用的是哪种1位模块,而是从文本
中指定当我们有A&gt;时,进位C_i正好是1。乙
请注意,它应A≥B
我们可以推断出它们必须是加法器(完全加法器才能被挑剔)。 如果它们是减法模块,当A≥B时,进位将为0,因为当A≥B时,MSb没有借用。
减法 A - B 以 A + -B 执行,其中 -B 是 B 的二进制补码。
反过来 -B 执行为 ~B + 1 ,其中 ~B 是 B 的NOT。
因此 A - B = A + ~B + 1 。
从 B 获取 ~B 很容易,只需要使用一堆NOT门(实际上它们是异或门)。但是,加法器仅在两个数字( A 和 B )之间执行添加,而不是三个( A , B 和1)。
我们可以通过注意如果我们将 C -1 (第一个全加器的进位)设置为1 (当添加时通常为0)我们可以在结果中加1。
因此该表是
3 2 1 0
----------------------
Ai 0 1 0 0
Bi 0 0 1 0
Ci-1 1 0 1 1
~Bi 1 1 0 1
Ri 0 0 1 0
Ci 1 1 0 1
C 3 为1,实际上为4≥2。
我们也可以尝试比较2和4:
3 2 1 0
----------------------
Ai 0 0 1 0
Bi 0 1 0 0
Ci-1 0 1 1 1
~Bi 1 0 1 1
Ri 1 1 1 0
Ci 0 0 1 1
这里 C 3 是0,因为2&lt; 4(和结果-2)。
最后,如果 A = B ,我们 C n = 1 ,因为 A + ~A + 1 = 2 n -1 + 1 = 2 n 其中 n 是比较器的位数。 2 n 是 n + 1 位数,只有MSb集,MSb C n 子>