携带数字比较器 - 如何正确填充表格?

时间:2016-10-02 11:05:32

标签: assembly logic cpu processor alu

我们有一个比较器,用于比较4 bit二进制数(A_3, A_2, A_1, A_0B_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=0100B=0010。填写下表,您应该以合理的方式选择C_i-1位。当我们C_i时,行李1正好是A > B

我尽可能地填写了表格,但我不知道如何使用C_i-1 ......

我已阅读了我们的阅读材料及其对C_i-1的评价: 对于比较操作<, ≤, ≥, >,执行减法并从结转C_i-1

读取结果

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

enter image description here

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

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