Arithmetic and Logic Calculator

Thread Starter

JekasG

Joined Sep 21, 2014
10
Build an arithmetic and logic calculator that has:
1) Four input bits of data, stored in a single-bit register (D-type latch)
2) One carry-in bit, stored in a register (D-type latch)
3) Six instruction bits, each stored in a register (D-type latch).
a. The first and second bits of the instruction (B1 and B2) specify the
operation to be performed.
- 00 is a NOR operation
- 01 is a AND operation
- 10 is an NAND operation
- 11 is an ADD operation
b. The third and fourth bits of the instruction (B3 and B4) specify one
input data register which will be used in your calculation.
- Register 0 is addressed as 00
- Register 1 is addressed as 01
- Register 2 is addressed as 10
- Register 3 is addressed as 11.
c. The fifth and sixth bits of the instruction (B5 and B6) specify the
second input data register which will be used in your calculation.
- Register 0 is addressed as 00
- Register 1 is addressed as 01
- Register 2 is addressed as 10
- Register 3 is addressed as 11.
4) Each operator will perform a calculation on the input data from the registers
identified by bits B3, B4, B5 and B6.
5) ADD operations will also use the carry-in register.
6) If you perform a logical operation (NOR, AND or NAND), the output should
be stored in an output register (D-type latch).
7) If you perform an ADD, you should store the trailing bit in the output register,
and the leading bit in a carry-out register (D-type latch).


I have problems understand this problem i have to solve.
So i am to make a four single-bit register, but i don't know what i have to do for it.
I also have to make a six instruction bit, each stored in a register.
So how does B3 + B4 and B5 + B6 relate to the input bits ?
How am i supposed to make this curcuit

Thank you in advance.
 

MrChips

Joined Oct 2, 2009
30,802
I have moved your thread from The Project Forum to Homework Help.

The instructions seem very clear to me.
What exactly do you not understand?
 
Last edited:

Thread Starter

JekasG

Joined Sep 21, 2014
10
What do i do with the four inputs ?

How doesn't the four input relate to the six instruction bits ?

How do i perform the calculation ?

Can you please provide a outline as how i would have to approach this problem ?
 

MrChips

Joined Oct 2, 2009
30,802
What do i do with the four inputs ?
What you are asked to design is a classic ALU, Arithmetic-Logic Unit. The four inputs are your data bits. These go to the inputs of the ALU.
How doesn't the four input relate to the six instruction bits ?
The four inputs have nothing to do with the 6-bit instruction.
Four of the six bits only select which inputs are routed to the calculation engine.

How do i perform the calculation ?
That is for you to design. I cannot do your homework for you.

Can you please provide a outline as how i would have to approach this problem ?
Again, you have to show us your ideas first otherwise you're not learning to think for yourself.

Begin by asking and stating what is the big picture?
Then see if you can find the functions in the big picture.
What functional blocks would be required to make up the picture?
For the moment, ignore parts, gates, ICs, components etc.
This is called "Top-Down Design".
 
Last edited:

Thread Starter

JekasG

Joined Sep 21, 2014
10
Yes of course .
So this is what i have thought for the assignment.

Does the four inputs represent as a binary number system ?
8 4 2 1
1 0 1 1
But if i think this way , how does it relate to the six instruction bit ?

I also thought of having the four input bits to be exactly as B3 B4 B5 B5.
This is compulsory because it of the registers value.
But i don't see the point of doing this because since both the input and B3 B4 B5 B6 are needed.

I just don't get why the four input bit is required.
Is what determines what is added B3 B4 B5 B6 ?
Or is it by the four inputs ?
But how ?
 

MrChips

Joined Oct 2, 2009
30,802
B3 B4 B5 B6 are not your data bits.
They select where the data bits are coming from. They specify the container. You don't know what is in the container.
Go by the specifications given in your instructions.

Here is the rationale for such a design. You will create a computer instruction that looks something like this:

ADD R1 R2

You do not know what values are held in registers R1 and R2.

The instruction is not

ADD 1 2
 
Last edited:

Thread Starter

JekasG

Joined Sep 21, 2014
10
I don't get what you mean by ,

" They select where the data bits are coming from. "

Can you be more specific ? I really don't get the question .
I don't understand what its trying to ask. So i can't see an opening to approach the question.
 

Thread Starter

JekasG

Joined Sep 21, 2014
10
If you have an input of
1 0 1 1
Operator of ADD
How is B2 B4 B5 B6 defined ?
Or do i just put a random value
Maybe Register 1 for B3 and B4 and Register 0 for B5 and B6
So what does this mean ?
Do i have a perform an add value of each of the input value ?
So would i mean , 1 + 0 + 1 + 1 = 3 ?
In this case how can i show it in the output result with a carry ? And is the output in binary ?
I only know there are two outputs so the output is 1 and carry is 2. So end result would be 3 with both output and carry as 1.
But if this is the way to solve the question.
I haven't used B3 B4 B5 B6.

Sorry. I just so clueless.
Is the question this hard to understand ?
 

MrChips

Joined Oct 2, 2009
30,802
The question is not that difficult.
You cannot see the forest but the leaves.
You fall into the trap of attempting to use a bottom-up approach.
Draw a block diagram like I asked you.

One does not ADD 1 and 2, because you know the answer is 3.

You are going to ADD the contents of two registers. Ignore the contents of the registers.

Data and results are always in binary. As an example only,
the sum of 10 and 11 is
01 with carry = 1.

I present this only as an example but don't focus on this.

Get the big picture first.
 

Thread Starter

JekasG

Joined Sep 21, 2014
10
So what you are saying , the four inputs contains two numbers.
If the input is 0010 then the two numbers are 00 and 10 , right ?
And so in this case, it would be 00 + 10 and the output would be 10 without a carry.
Is this what you mean ?
But this still doesn't make sense.

Sorry i really don't understand the big picture. No one explain it to me in detail.
 

Thread Starter

JekasG

Joined Sep 21, 2014
10
Hi Bertus ,

Ive looked through the other ALU Adders , they are just the simple ones which have two inputs , an output and a carry output.
But in my situation its different. I have six instruction bit , four input bits, carry in , carry out, and an output.
I don't even know what B1 and B2 is operated on. Is it the four input bit or B3 B4 B5 B5 ?
No matter which either one is used the other will be left out unused. Well at least, to my knowledge i think its unused.
 

bertus

Joined Apr 5, 2008
22,276
Hello,

The B1 and B2 are for selecting the operation to perform.
The B3 abd B4 are for selecting the first register where one value is stored.
The B5 and B6 are for selecting the second register where the other value is stored.

Bertus
 

MrChips

Joined Oct 2, 2009
30,802
You don't store the values of B3 B4 B5 B6. You don't do anything with them.
These are not values. They are like your house number. They are addresses. It says so in post #1.

Your assignment is a straight forward one and is fully explained in the instructions given to you.

You are not going to get any more help from me until you show a functional block diagram.
 

shteii01

Joined Feb 19, 2010
4,644
You have 2 registers.

Register 1 is Data register, this register is 4 bits long: D4, D3, D2, D1.

Register 2 is Control register, it is 6 bits long: B6, B5, B4, B3, B2, B1.

Data register contains data that you want to manipulate.

Control register tells you two things:
1) What operation to perform.
- 00 is a NOR operation
- 01 is a AND operation
- 10 is an NAND operation
- 11 is an ADD operation
2) Which cells of Data register to use as inputs to the operation.

Example.
I want decimal 9 to be my data. What is decimal 9 in binary, it is 1001. What is my Data register going to contain?
D4 is 1
D3 is 0
D2 is 0
D1 is 1
So
D4D3D2D1
1001
Now. What do I want to do with the data stored in my Data register? I want to AND two bits. What is the code/address for AND? The code for AND is binary 10 in cells B2 and B1, so B2 will contain 1, B1 will contain 0. What does control register looks like so far?
B6B5B4B3B2B1
xxxx10
Which cells of Data register do I want to AND? I want to AND cells D1 and D2. What is the code/address for cell D1? The code/address for cell D1 is binary 00. Where do I store this code/address? I store it in cells B4 and B3 of Control register. What does my Control register look like now?
B6B5B4B3B2B1
xx0010
What is code/address for cell D2? It is binary 01. I store this code/address in cells B6 and B5. What does my Control register looks like now?
B6B5B4B3B2B1
010010
So
Data register: 1001
Control register: 010010
Together they tell us: Take 1 from Data register D1 AND it to 0 from Data register D2.
 

Thread Starter

JekasG

Joined Sep 21, 2014
10
Hi shteii01 ,

Thanks for you example that you gave me.
But i have some question.

From what i can see, what you did is enter values in the four inputs.
Inputs :
D4D3D2D1
1001
And from B3B4B5B6 you determined from which D4D3D2D1 to perform the B2B1 operator on.
So in this case, you made B3B4 to Register 0 which is 00.
And you made B5B6 to Register 1 which is 01.

So what you're trying to say is depending on which Register.
The register will select which input is used.
So in this case Register 0 and Register 1 perform AND operator , which means.

0 & 1 and the result would be 0

If in another case.
Input:
D4D3D2D1
1011
B2B1
11 - ADD
B4B3
Register 2 - 10
B6B5
Register 3 - 11
Result
0 + 1 = 1
No carry.

Is this what you're to get at ?
But when will i be using the carry ? Is what im saying is right ?
 

shteii01

Joined Feb 19, 2010
4,644
What I am getting at is that you, the user, decide what goes into Data Register (4 bits) and what goes into Control Register (6 bits).

The instructor put some constraints on you. Like your data will always be 4 bits, no matter what you want, no matter what you need, your data ALWAYS will be 4 bits. Your other constraint is the control, you have two bits to select the operation, two bits to select first input, two bits to select second input, and you can only select one bit for each input, that is IT.
 

Thread Starter

JekasG

Joined Sep 21, 2014
10
But how do you make it to work ?
Is what i wrote earlier a working example ?
Like , is that what the question is asking for it to do ?
 
Top