83 lines
2.3 KiB
Markdown
83 lines
2.3 KiB
Markdown
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 ALU` and `to register` bits)
|
|
|
|
|
|
|
|
# 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 |
|
|
|
|
|
|
10 + 10
|
|
|
|
write 10 to A -> 0001010 00000100
|
|
write 11 to B -> 0001011 00001000
|
|
write 100 to op 00000100 00010000
|