带进位的数字比较器 - 如何正确填充 table?
Digital Comparator with Carry - How to fill the table correctly?
我们得到了一个比较器,它比较 4 bit
个二进制数(A_3, A_2, A_1, A_0
和 B_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_i
和 i=0,1,2,3
。因此,进位输出将采用较低有效数字 i-1
.
给出的是 A=0100
和 B=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 其中 -B是 B.
的补码
反过来 -B 执行为 ~B + 1 其中 ~B 是 B.
因此 A - B = A + ~B + 1。
从 B 得到 ~B 很简单,只需要使用一堆非门(实际上它们是 XOR门)。然而,加法器只在两个数字(A 和 B)之间执行加法,而不是三个(A, B 和 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.
我们得到了一个比较器,它比较 4 bit
个二进制数(A_3, A_2, A_1, A_0
和 B_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_i
和 i=0,1,2,3
。因此,进位输出将采用较低有效数字 i-1
.
给出的是 A=0100
和 B=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 其中 -B是 B.
的补码
反过来 -B 执行为 ~B + 1 其中 ~B 是 B.
因此 A - B = A + ~B + 1。
从 B 得到 ~B 很简单,只需要使用一堆非门(实际上它们是 XOR门)。然而,加法器只在两个数字(A 和 B)之间执行加法,而不是三个(A, B 和 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.