cours/digital logic sim computer.md
oscar.plaisant@icloud.com a2ee0fa5ca from github to this gitea
2023-10-23 23:09:51 +02:00

83 lines
2.3 KiB
Markdown

up:: [[Logique séquentielle]]
#informatique #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