带进位的数字比较器 - 如何正确填充 table?

Digital Comparator with Carry - How to fill the table correctly?

我们得到了一个比较器,它比较 4 bit 个二进制数(A_3, A_2, A_1, A_0B_3, B_2, B_1, B_0)。结果是输出信号 C_i 如果 A > B.

其值为 1

运算电路应该是由4个相同的1 bit个运算模块连接而成。每个 1 bit 模块都有输入 A_i, B_i, C_i-1 和输出 C_ii=0,1,2,3。因此,进位输出将采用较低有效数字 i-1.

给出的是 A=0100B=0010。填写以下 table ,其中 C_i-1 位应该由您以合理的方式选择。当我们有 A > B.

时,进位 C_i 就是 1

我尽我所能填满了 table 但我不知道如何使用 C_i-1...

我已经阅读了我们的阅读材料以及其中关于 C_i-1 的内容: 对于比较操作 <, ≤, ≥, > 执行减法,结果从进位 C_i-1

中读取

所以请告诉我我是否正确填写了table?因为这是旧考试的任务,它还有许多其他子任务。如果我一开始(table)做错了,那么其他一切都将是错误的! :(

我选择 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 但这里有问题,如果它完全正确的话:/不知道请帮助我..

常见的算术谓词<、≤、≥、>、=一般都是用减法来实现的。

有两种主要的减法方法:A)使用减法模块或B)使用加法器。

你没有说明你使用的是哪种1位模块,但是从文中可以看出

The carry C_i is 1 exactly when we have A > B

注意应该是A≥B

我们可以推断他们一定是加法器(全加器是吹毛求疵的)。 如果它们是减法模块,则当 A≥B 时进位输出将为 0,因为当 A≥B 时 MSb 没有借位。

减法 A - B 执行为 A + -B 其中 -BB.
的补码 反过来 -B 执行为 ~B + 1 其中 ~BB.
因此 A - B = A + ~B + 1

B 得到 ~B 很简单,只需要使用一堆非门(实际上它们是 XOR门)。然而,加法器只在两个数字(AB)之间执行加法,而不是三个(AB 和 1).
我们可以通过注意 如果我们设置 C-1 来克服这个问题,第一个全加器的进位,到 1 (当加法通常为 0 时)我们可以将 1 添加到结果中。

因此table是

        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 

C3 是 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 

此处 C3 为 0,因为 2 < 4(结果为 -2)。
最后如果 A = B 我们有 Cn = 1 因为 A + ~ A + 1 = 2n-1 + 1 = 2n 其中 n是比较器的位数。 2n 是一个 n+1 位数字,仅设置了 MSb,而 MSb 是 Cn.