2.3 KiB
		
	
	
	
	
	
	
	
			
		
		
	
	
			2.3 KiB
		
	
	
	
	
	
	
	
up:: Logique séquentielle #s/informatique #s/maths/logique
ALU binary operators
| bin | operator | 
|---|---|
| 000 | COMParison | 
| 001 | zero | 
| 010 | OR | 
| 011 | AND | 
| 100 | ADD (+) | 
| 101 | SUB (-) | 
| 110 | COPY A | 
| 111 | COPY B | 
How to operate
op exec
op exec is the component that gathers the ALU and the data registers. It can :
- perform operations with the ALU
- read data : register to ALU inputs
- write data : ALU output to registers
- take input : 8 bit bus to ALU inputs
- give output : ALU output or registers to 8 bit bus
[!info] Writing data to a register It is not possible to write data directly from the 8 bit bus to the registers. If you want to register some data, you have to do the following :
- write the data to the ALU inputs (input A for example)
- set the ALU operation to copy (copy A in our example, that is
110)- write from the alu to the register (give the register address in the 8 bit bus, and set the
from ALUandto registerbits)
Binary code
The binary code of the CPU. They are stored in 2 octets.
| binary code | action | 
|---|---|
| 0000 0000  0000 0000 | NOOP | 
| SET ALU OPERATIONS | |
| XXX0 0000  0000 0001 | set X as ALU op | 
| 0000 0000  0000 0001 | COMParison | 
| 0001 0000  0000 0001 | ZERO | 
| 0010 0000  0000 0001 | OR | 
| 0011 0000  0000 0001 | AND | 
| 0100 0000  0000 0001 | A+B | 
| 0101 0000  0000 0001 | A-B | 
| 0110 0000  0000 0001 | BYPASS A | 
| 0111 0000  0000 0001 | BYPASS B | 
| READ / WRITE | |
| XXXX XXXX  0000 0010 | X --> ALU A | 
| XXXX XXXX  0000 0011 | X --> ALU B | 
| XXXX XXXX  0000 0110 | reg X --> ALU A | 
| XXXX XXXX  0000 0111 | reg X --> ALU B | 
| 0000 0000  0000 1000 | ALU --> reg | 
!digital logic sim computer 2023-07-18 09.57.52.excalidraw
| bin | operator | 
|---|---|
| 000 | COMParison | 
| 001 | zero | 
| 010 | OR | 
| 011 | AND | 
| 100 | ADD (+) | 
| 101 | SUB (-) | 
| 110 | COPY A | 
| 111 | COPY B | 
write 10 to A -> 0001010 00000100 write 11 to B -> 0001011 00001000 write 100 to op 00000100 00010000