# How do you fill this circuit-table correctly (digital comparator)?

The following task is from an old exam and because the new exam will be similar to this one, I'm trying to understand it. Unfortunately there are no solutions or hints given and I got nothing to understand it really (I can provide source that this is really from an old exam and NOT homework.)

Given is a comparator that compares 4-bit binary numbers A[3...0] and B[3...0] (aka A_3, A_2, A_1, A_0 ..). The result is the output signal C_i which has the value 1 if A > B.

The arithmetic-circuit is supposed to be made up by connecting 4 identical 1-bit arithmetic-modules. Each of these 1-bit modules have the inputs A_i, B_i and C_i-1 and the output C_i with i= 0, 1, 2, 3. So, the carry outputs will be taken of the less significant digit i-1.

Given is A=0100 and B=0010. Fill the following table whereby C_-1-bit is supposed to be chosen by you in a reasonable way. The carry C_i is 1 exactly when A > B

I have filled the table as good as I could but I have no idea how to do it with C_i-1. The fields I have filled, are they correct at all?

I also hope I have explained clear enough please do tell me if I did not. You guys are really my last chance, got no one and nothing else to understand this I'm totally serious : /

**Edit: I would fill C(i-1) in table like that: 0 0 1 0 it's right now?

• So A_3 is an input as well as an output? – Andy aka Sep 23 '16 at 17:45
• Oh, it's only an input, corrected, ty! – cnmesr Sep 23 '16 at 18:01
• Isn't the C(i-1) row just the C(i) row shifted left by one? – C. Towne Springer Sep 23 '16 at 18:16
• If you understand why you need C(i-1) you will see how to fill it in. – Brian Drummond Sep 23 '16 at 18:17
• Sorry for removing my comment, i'v figured out that i was totally wrong, im posting an answer right now – Elbehery Sep 23 '16 at 20:19

Based on the facts you mentioned, we are given an module of inputs A,B,C and output Y such that the output Y is high if A>B we want to build a bigger module that compares 3-bit such that if A bit string is bigger than B the output will be 1.

My approach for solving this problem was as the following

In this combination if A > B or A==B the first OR gate output will be 1 while if A < B the first OR gate output will be 0, the OR output is connected to the second comparator C_i input, so basicly im using the C_i input as if it was a confimation that the previous A was not smaller than B.

So as long as the input C for any of those single bit comparators is 1 the comparator output will be 1 or 0 based on which is bigger A or B, while if this input C is 0, the comparator output will always be 0!

Lets do some test cases

A=010
B=001


The first comparator [The one of the LEFT] has inputs A=0, B=0, C=1 the output of this comparator is 0 since A2 is not bigger than B2 while the XNOR gate [XOR followed by a not gate] output is 1 since A is equal to B this means that the second comparator will work and we still not sure if A is bigger than B or not

The second comparator now has inputs A=1, B=0, C=1 the output of this comparator is now 1 since A3 > B3 both the inputs of the second OR gate are 1

The third comparator now has inputs A=0, B=1, C=1 the output of this comparator is now 0 since A[0]

The final result is taken by a big OR gate that checks if any of the comparators output was equal to one

Now your back to filling your table assuming the same values of A and B your table should look like this

You can play around the values of A and B and check out the values of C_i using this simple Python Script

I hope this answer is not confusing and please if you think i am missing anything let me know

EDITED

What is meant by "big comparator output"?

I mean the whole circuit, in the image above its the 3-bit comparator which is made from 3x 1bit comparators and its output is the last or gate output

what is C(i-1) in your description?

based on what you mentioned above

Each of these 1-bit modules have the inputs A_i, B_i and C_i-1

So in my case its the carry input for any of the comparators which should be 1 if A > B or A=B

Seems like your question requires comparing the numbers from right to left [based on the less significant digit] while my answer compares the numbers from left to right [based on the last significant digit] which means that this answer is not what you are looking for.

If this answer is not the proper answer for your question please let me know in the comments, Ill delete it asap

• Omg thank you so much for your time to make this for me. I need sleep tomorrow I read everything and will understand it hopefully. Thank a lot very much appreciated man! – cnmesr Sep 23 '16 at 22:31
• What is meant by "big comparator output"? and what is C(i-1) in your description? – cnmesr Sep 24 '16 at 9:40
• Following your description, I did my table correctly, right? But still no idea how to fill C(i-1) – cnmesr Sep 24 '16 at 10:06
• Edited, please let me know if this is not the proper answer for your question, if so ill delete it asap – Elbehery Sep 24 '16 at 14:43