diff --git a/content/.obsidian/workspace.json b/content/.obsidian/workspace.json index cddfa30..569265f 100644 --- a/content/.obsidian/workspace.json +++ b/content/.obsidian/workspace.json @@ -4,21 +4,33 @@ "type": "split", "children": [ { - "id": "da1c1c5ba8d6b94f", + "id": "929b0fcada89ed0e", "type": "tabs", "children": [ { - "id": "ab03f7100c1ce0fb", + "id": "28c9848f88828495", "type": "leaf", "state": { "type": "markdown", "state": { - "file": "posts/notes-update.md", + "file": "notes/ready/how_to_computer/index.md", "mode": "source", "source": false }, "icon": "lucide-file", - "title": "notes-update" + "title": "index" + } + }, + { + "id": "5b5978f088ca6b22", + "type": "leaf", + "state": { + "type": "image", + "state": { + "file": "notes/ready/how_to_computer/input_selector.png" + }, + "icon": "lucide-image", + "title": "input_selector" } } ] @@ -78,7 +90,7 @@ } ], "direction": "horizontal", - "width": 200 + "width": 289.5 }, "right": { "id": "f049c1d8215eafd9", @@ -141,13 +153,13 @@ "state": { "type": "outline", "state": { - "file": "posts/notes-update.md", + "file": "notes/ready/how_to_computer/index.md", "followCursor": false, "showSearch": false, "searchQuery": "" }, "icon": "lucide-list", - "title": "Outline of notes-update" + "title": "Outline of index" } } ], @@ -155,7 +167,7 @@ } ], "direction": "horizontal", - "width": 200 + "width": 249.5 }, "left-ribbon": { "hiddenItems": { @@ -169,40 +181,42 @@ "table-editor-obsidian:Advanced Tables Toolbar": false } }, - "active": "ab03f7100c1ce0fb", + "active": "b73f137a8a755c19", "lastOpenFiles": [ - "_Templates/post.md", + "notes/ready/how_to_computer/input_selector.png", + "notes/ready/how_to_computer/index.md", + "notes/ready/how_to_computer/bit_switch.png", + "notes/ready/how_to_computer/bus.png", + "notes/ready/how_to_computer/signed_negator.png", + "notes/ready/how_to_computer/full_adder_8bit.png", + "notes/ready/how_to_computer/full_adder.png", + "notes/ready/how_to_computer/half_adder.png", + "notes/ready/binary_operations/index.md", + "notes/ready/how_to_computer/image.png", + "notes/ready/how_to_computer/OR_gates_big.png", + "notes/ready/how_to_computer/image4.png", + "TODO.md", + "notes/ready/transistors/index.md", + "notes/ready/diodes.md", + "notes/drafts/nvim.md", + "notes/drafts/linux/index.md", "posts/notes-update.md", + "_Templates/post.md", "_Templates/note.md", "posts/personal-web.md", "posts/linux-starter-guide.md", "posts/local-llm.md", "posts/nix-starter-guide.md", "posts/dotfiles.md", - "notes/drafts/linux/index.md", - "TODO.md", "notes/ready/flask.md", "notes/ready/gdb.md", "notes/ready/git.md", "notes/ready/http.md", "notes/ready/html.md", - "notes/ready/binary_operations/d1.png", - "notes/ready/binary_operations/index.md", - "notes/ready/binary_operations/d6.png", - "notes/ready/binary_operations/d5.png", - "notes/ready/binary_operations/d4.png", - "notes/ready/binary_operations/d3.png", - "notes/ready/binary_operations/d2.png", - "notes/ready/binary_operations/multiplication.png", "notes/ready/firewall.md", "drafts/nvim.md", "drafts/rust.md", "drafts/swift.md", - "drafts/TODO.md", - "drafts/Untitled.md", - "drafts/hardware-tools.md", - "drafts/macOS.md", - "ready/algorithms_and_data/index.md", - "ready/binary_operations/index.md" + "drafts/TODO.md" ] } \ No newline at end of file diff --git a/content/TODO.md b/content/TODO.md index 13f152a..8901b8f 100644 --- a/content/TODO.md +++ b/content/TODO.md @@ -19,5 +19,6 @@ In draft folder? (checkbox) - [x] Neovim, vim bindings, text editor - [x] Hardware Debug/Repair Tools (maybe integrate JCionx page?) - [ ] Android and custom ROMs +- [ ] netcat ### Enhancements diff --git a/content/notes/drafts/nvim.md b/content/notes/drafts/nvim.md index 8a966dc..bbf649a 100644 --- a/content/notes/drafts/nvim.md +++ b/content/notes/drafts/nvim.md @@ -1,14 +1,18 @@ --- -title: "nvim" +title: nvim description: draft: true -tags: +tags: + - tools + - nvim + - vim author: TrudeEH showToc: true --- ## VIM Bindings + ## Using Neovim ## Configuring Neovim diff --git a/content/notes/ready/binary_operations/image68.png b/content/notes/ready/binary_operations/image68.png deleted file mode 100644 index 48c541a..0000000 Binary files a/content/notes/ready/binary_operations/image68.png and /dev/null differ diff --git a/content/notes/ready/diodes.md b/content/notes/ready/diodes.md deleted file mode 100644 index 7354795..0000000 --- a/content/notes/ready/diodes.md +++ /dev/null @@ -1,109 +0,0 @@ ---- -title: Diodes -description: -draft: false -tags: - - electronics -author: TrudeEH -showToc: true ---- - - - -A diode allows current to only flow in one direction in a circuit. - -## Schematic - -```Plain -Anode (+) --|>|-- Cathode (-) -``` - -## Examples - -```Plain -[Conventional Current (+) -> (-)] -(+)------|>|------(-) Current can flow - The diode is now a conductor. -(+)------|<|------(-) Current can't flow - The diode is now an insulator. -``` - -## Use Cases - -- Protect a circuit (if a battery is connected incorrectly, for example) -- Convert AC to DC current -Fun fact: An LED, for example, is a Light-Emitting Diode. - -## How a Diode Works - -### Conductors and Insulators - -An atom contains the following elements: -- Nucleus (Protons - Neutrons) -- Orbital Shells (Holds the electrons, which orbit around the nucleus) -- Conduction band -The electrons closest to the nucleus hold the most energy. -The outermost shell is the valence shell. A conductor has 1-3 electrons in the valence shell. -If an electron reaches the conduction band, it can break free and move to another atom. -An insulator, however, has a conduction band that is far from the valence shell, making it difficult for an electron to escape. -For example, for copper (a great conductor), the valence shell and conduction band overlap, so it's very easy for an electron to jump between atoms. -Semiconductors have a conduction band close to the valence shell, but have one extra electron in it, making it an insulator. However, given some external energy, some electrons will gain enough energy to reach the conduction band and become free. - -### P-Type and N-Type Doping - -Silicon is a good semiconductor, having 4 electrons in its valence shell. When close to other `Si` atoms, they share 4 electrons with their neighbors, thus, having 8, each, and becoming stable. - -```Plain -Silicon: -Si Si Si Si Si Si Si Si Si Si Si -Si Si Si Si Si Si Si Si Si Si Si -Si Si Si Si Si Si Si Si Si Si Si -Si Si Si Si Si Si Si Si Si Si Si -Si Si Si Si Si Si Si Si Si Si Si -Si Si Si Si Si Si Si Si Si Si Si -``` - -#### N-Type - -Some Phosphorus is added to the Silicon. ==`p`== has one extra electron in its valence shell. -These electrons are not needed, and so, they flow freely from atom to atom. - -```Plain -Si Si p Si Si Si Si Si Si Si p -p Si Si Si Si p Si Si Si Si Si -Si Si Si p Si Si Si Si p Si Si -Si p Si Si p Si Si Si Si Si Si -Si Si Si Si Si Si p Si Si p Si -Si p Si Si Si Si Si Si p Si Si -``` - -#### P-Type - -Some Aluminum is added to the Silicon. `Al` is missing one electron, so it can't provide its 4 neighbors with an electron to share. - -```Plain -Si Si Al Si Si Si Si Si Si Si Al -Al Si Si Si Si Al Si Si Si Si Si -Si Si Si Al Si Si Si Si Al Si Si -Si Al Si Si Al Si Si Si Si Si Si -Si Si Si Si Si Si Al Si Si Al Si -Si Al Si Si Si Si Si Si Al Si Si -``` - -### Combining both Types - -When an N-Type is combined with a P-Type, some electrons from the N-Type side will move over to the P-Type side and occupy the missing electrons there. This creates a barrier between both types, creating an electric field that prevents more electrons from switching sides. - -#### Forward Bias - -If energy is provided to the Cathode, the electrons flow, as the voltage is superior to the barrier's. - -```Plain -(-)-----[P|N]-----(+) -``` - -#### Reverse Bias - -If energy is provided to the Anode, the electrons can't flow, as the barrier expands. - -```Plain -(-)--[P] [N]--(+) -``` diff --git a/content/notes/ready/logic_gates/image51.png b/content/notes/ready/how_to_computer/AND_electronics.png similarity index 100% rename from content/notes/ready/logic_gates/image51.png rename to content/notes/ready/how_to_computer/AND_electronics.png diff --git a/content/notes/ready/logic_gates/image52.png b/content/notes/ready/how_to_computer/AND_electronics_transistors.png similarity index 100% rename from content/notes/ready/logic_gates/image52.png rename to content/notes/ready/how_to_computer/AND_electronics_transistors.png diff --git a/content/notes/ready/how_to_computer/AND_gates.png b/content/notes/ready/how_to_computer/AND_gates.png new file mode 100644 index 0000000..b438c86 Binary files /dev/null and b/content/notes/ready/how_to_computer/AND_gates.png differ diff --git a/content/notes/ready/how_to_computer/AND_gates_big.png b/content/notes/ready/how_to_computer/AND_gates_big.png new file mode 100644 index 0000000..f1a3953 Binary files /dev/null and b/content/notes/ready/how_to_computer/AND_gates_big.png differ diff --git a/content/notes/ready/how_to_computer/NAND_circuit.png b/content/notes/ready/how_to_computer/NAND_circuit.png new file mode 100644 index 0000000..2c24d71 Binary files /dev/null and b/content/notes/ready/how_to_computer/NAND_circuit.png differ diff --git a/content/notes/ready/how_to_computer/NOR_gates.png b/content/notes/ready/how_to_computer/NOR_gates.png new file mode 100644 index 0000000..658563b Binary files /dev/null and b/content/notes/ready/how_to_computer/NOR_gates.png differ diff --git a/content/notes/ready/logic_gates/image50.png b/content/notes/ready/how_to_computer/NOT_electronics.png similarity index 100% rename from content/notes/ready/logic_gates/image50.png rename to content/notes/ready/how_to_computer/NOT_electronics.png diff --git a/content/notes/ready/how_to_computer/NOT_gates.png b/content/notes/ready/how_to_computer/NOT_gates.png new file mode 100644 index 0000000..561204a Binary files /dev/null and b/content/notes/ready/how_to_computer/NOT_gates.png differ diff --git a/content/notes/ready/logic_gates/image53.png b/content/notes/ready/how_to_computer/OR_electronics.png similarity index 100% rename from content/notes/ready/logic_gates/image53.png rename to content/notes/ready/how_to_computer/OR_electronics.png diff --git a/content/notes/ready/how_to_computer/OR_gates.png b/content/notes/ready/how_to_computer/OR_gates.png new file mode 100644 index 0000000..3f87340 Binary files /dev/null and b/content/notes/ready/how_to_computer/OR_gates.png differ diff --git a/content/notes/ready/how_to_computer/OR_gates_big.png b/content/notes/ready/how_to_computer/OR_gates_big.png new file mode 100644 index 0000000..5a508c6 Binary files /dev/null and b/content/notes/ready/how_to_computer/OR_gates_big.png differ diff --git a/content/notes/ready/how_to_computer/XNOR_gates.png b/content/notes/ready/how_to_computer/XNOR_gates.png new file mode 100644 index 0000000..c71054e Binary files /dev/null and b/content/notes/ready/how_to_computer/XNOR_gates.png differ diff --git a/content/notes/ready/how_to_computer/XOR_gates.png b/content/notes/ready/how_to_computer/XOR_gates.png new file mode 100644 index 0000000..dd57c6a Binary files /dev/null and b/content/notes/ready/how_to_computer/XOR_gates.png differ diff --git a/content/notes/ready/how_to_computer/bit_switch.png b/content/notes/ready/how_to_computer/bit_switch.png new file mode 100644 index 0000000..f3f5844 Binary files /dev/null and b/content/notes/ready/how_to_computer/bit_switch.png differ diff --git a/content/notes/ready/how_to_computer/bus.png b/content/notes/ready/how_to_computer/bus.png new file mode 100644 index 0000000..09c1f42 Binary files /dev/null and b/content/notes/ready/how_to_computer/bus.png differ diff --git a/content/notes/ready/how_to_computer/full_adder.png b/content/notes/ready/how_to_computer/full_adder.png new file mode 100644 index 0000000..d3587e2 Binary files /dev/null and b/content/notes/ready/how_to_computer/full_adder.png differ diff --git a/content/notes/ready/how_to_computer/full_adder_8bit.png b/content/notes/ready/how_to_computer/full_adder_8bit.png new file mode 100644 index 0000000..2401130 Binary files /dev/null and b/content/notes/ready/how_to_computer/full_adder_8bit.png differ diff --git a/content/notes/ready/how_to_computer/half_adder.png b/content/notes/ready/how_to_computer/half_adder.png new file mode 100644 index 0000000..54088dd Binary files /dev/null and b/content/notes/ready/how_to_computer/half_adder.png differ diff --git a/content/notes/ready/transistors/image.png b/content/notes/ready/how_to_computer/image.png similarity index 100% rename from content/notes/ready/transistors/image.png rename to content/notes/ready/how_to_computer/image.png diff --git a/content/notes/ready/transistors/image1.png b/content/notes/ready/how_to_computer/image1.png similarity index 100% rename from content/notes/ready/transistors/image1.png rename to content/notes/ready/how_to_computer/image1.png diff --git a/content/notes/ready/transistors/image2.png b/content/notes/ready/how_to_computer/image2.png similarity index 100% rename from content/notes/ready/transistors/image2.png rename to content/notes/ready/how_to_computer/image2.png diff --git a/content/notes/ready/transistors/image3.png b/content/notes/ready/how_to_computer/image3.png similarity index 100% rename from content/notes/ready/transistors/image3.png rename to content/notes/ready/how_to_computer/image3.png diff --git a/content/notes/ready/transistors/image4.png b/content/notes/ready/how_to_computer/image4.png similarity index 100% rename from content/notes/ready/transistors/image4.png rename to content/notes/ready/how_to_computer/image4.png diff --git a/content/notes/ready/logic_gates/image42.png b/content/notes/ready/how_to_computer/image42.png similarity index 100% rename from content/notes/ready/logic_gates/image42.png rename to content/notes/ready/how_to_computer/image42.png diff --git a/content/notes/ready/logic_gates/image43.png b/content/notes/ready/how_to_computer/image43.png similarity index 100% rename from content/notes/ready/logic_gates/image43.png rename to content/notes/ready/how_to_computer/image43.png diff --git a/content/notes/ready/logic_gates/image44.png b/content/notes/ready/how_to_computer/image44.png similarity index 100% rename from content/notes/ready/logic_gates/image44.png rename to content/notes/ready/how_to_computer/image44.png diff --git a/content/notes/ready/logic_gates/image45.png b/content/notes/ready/how_to_computer/image45.png similarity index 100% rename from content/notes/ready/logic_gates/image45.png rename to content/notes/ready/how_to_computer/image45.png diff --git a/content/notes/ready/logic_gates/image46.png b/content/notes/ready/how_to_computer/image46.png similarity index 100% rename from content/notes/ready/logic_gates/image46.png rename to content/notes/ready/how_to_computer/image46.png diff --git a/content/notes/ready/logic_gates/image47.png b/content/notes/ready/how_to_computer/image47.png similarity index 100% rename from content/notes/ready/logic_gates/image47.png rename to content/notes/ready/how_to_computer/image47.png diff --git a/content/notes/ready/logic_gates/image49.png b/content/notes/ready/how_to_computer/image49.png similarity index 100% rename from content/notes/ready/logic_gates/image49.png rename to content/notes/ready/how_to_computer/image49.png diff --git a/content/notes/ready/how_to_computer/index.md b/content/notes/ready/how_to_computer/index.md new file mode 100644 index 0000000..de8cb1f --- /dev/null +++ b/content/notes/ready/how_to_computer/index.md @@ -0,0 +1,666 @@ +--- +title: Building a Computer From Scratch +description: +draft: false +tags: + - electronics + - computer-science +author: TrudeEH +showToc: true +weight: "1" +--- + +## Diodes + +A diode allows current to only flow in one direction in a circuit. + +### Schematic + +```Plain +Anode (+) --|>|-- Cathode (-) +``` + +### Examples + +```Plain +[Conventional Current (+) -> (-)] +(+)------|>|------(-) Current can flow - The diode is now a conductor. +(+)------|<|------(-) Current can't flow - The diode is now an insulator. +``` + +### Use Cases + +- Protect a circuit (if a battery is connected incorrectly, for example) +- Convert AC to DC current +Fun fact: An LED, for example, is a Light-Emitting Diode. + +### How a Diode Works + +#### Conductors and Insulators + +An atom contains the following elements: +- Nucleus (Protons - Neutrons) +- Orbital Shells (Holds the electrons, which orbit around the nucleus) +- Conduction band +The electrons closest to the nucleus hold the most energy. +The outermost shell is the valence shell. A conductor has 1-3 electrons in the valence shell. +If an electron reaches the conduction band, it can break free and move to another atom. +An insulator, however, has a conduction band that is far from the valence shell, making it difficult for an electron to escape. +For example, for copper (a great conductor), the valence shell and conduction band overlap, so it's very easy for an electron to jump between atoms. +Semiconductors have a conduction band close to the valence shell, but have one extra electron in it, making it an insulator. However, given some external energy, some electrons will gain enough energy to reach the conduction band and become free. + +#### P-Type and N-Type Doping + +Silicon is a good semiconductor, having 4 electrons in its valence shell. When close to other `Si` atoms, they share 4 electrons with their neighbors, thus, having 8, each, and becoming stable. + +```Plain +Silicon: +Si Si Si Si Si Si Si Si Si Si Si +Si Si Si Si Si Si Si Si Si Si Si +Si Si Si Si Si Si Si Si Si Si Si +Si Si Si Si Si Si Si Si Si Si Si +Si Si Si Si Si Si Si Si Si Si Si +Si Si Si Si Si Si Si Si Si Si Si +``` + +##### N-Type + +Some Phosphorus is added to the Silicon. ==`p`== has one extra electron in its valence shell. +These electrons are not needed, and so, they flow freely from atom to atom. + +```Plain +Si Si p Si Si Si Si Si Si Si p +p Si Si Si Si p Si Si Si Si Si +Si Si Si p Si Si Si Si p Si Si +Si p Si Si p Si Si Si Si Si Si +Si Si Si Si Si Si p Si Si p Si +Si p Si Si Si Si Si Si p Si Si +``` + +##### P-Type + +Some Aluminum is added to the Silicon. `Al` is missing one electron, so it can't provide its 4 neighbors with an electron to share. + +```Plain +Si Si Al Si Si Si Si Si Si Si Al +Al Si Si Si Si Al Si Si Si Si Si +Si Si Si Al Si Si Si Si Al Si Si +Si Al Si Si Al Si Si Si Si Si Si +Si Si Si Si Si Si Al Si Si Al Si +Si Al Si Si Si Si Si Si Al Si Si +``` + +#### Combining both Types + +When an N-Type is combined with a P-Type, some electrons from the N-Type side will move over to the P-Type side and occupy the missing electrons there. This creates a barrier between both types, creating an electric field that prevents more electrons from switching sides. + +##### Forward Bias + +If energy is provided to the Cathode, the electrons flow, as the voltage is superior to the barrier's. + +```Plain +(-)-----[P|N]-----(+) +``` + +##### Reverse Bias + +If energy is provided to the Anode, the electrons can't flow, as the barrier expands. + +```Plain +(-)--[P] [N]--(+) +``` + +## Transistor + +Transistors are electronic components that behave like a `switch`, or `amplifier`. + +### Schematic + +```Plain + .--.,-- Collector +Base --(--|<) + `--`'-- Emitter +``` + +### Examples + +#### Switch + +If the `base` pin is provided with energy, the transistor allows current to flow in the main circuit. +![[image.png]] + +#### Amplifier + +Altering the voltage given to the `base` pin allows us to control a larger voltage in the main circuit. +![image1](image1.png) + +### Types of Transistor + +#### NPN + +An NPN transistor combines the `base` pin and `collector` pin. +![image2](image2.png) + +> Note: Even if the collector pin is disconnected from the circuit, a small amount of current still passes through. ![image3](image3.png) + +#### PNP + +A PNP transistor receives energy through the `emitter` pin, and then divides it to the remaining pins. + + +![image4](image4.png) + +## Basic Logic + +A logic gate is a device that performs one boolean operation: Two binary inputs produce a single binary output. These building blocks are the foundations of modern computing. +Each gate has its own truth table, which shows every possible input and output variations. + +### NAND + +A NAND gate, although not the simplest one, can be used to build all other basic gates. + +![image45](image45.png) + +#### Truth Table + +|A|**B**|**Output**| +|---|---|---| +|0|0|1| +|0|1|1| +|1|0|1| +|1|1|0| + +#### Implementation + +##### Electronics + +Implementation using switches and a pull-up resistor: +![[NAND_circuit.png]] + +### NOT + +Invert any given input. + +![image42](image42.png) + +#### Truth Table + +|**Input**|**Output**| +|---|---| +|0|1| +|1|0| + +#### Implementation + +##### Logic Gates + +![[NOT_gates.png]] + +##### Electronics + +![image50](NOT_electronics.png) + +### AND + +Outputs `1` only when both inputs are `1`. + +![image43](image43.png) + +#### Truth Table + +|A|**B**|**Output**| +|---|---|---| +|0|0|0| +|0|1|0| +|1|0|0| +|1|1|1| + +#### Implementation + +##### Logic Gates + +![[AND_gates.png]] + +##### Electronics + +![image51](AND_electronics.png) +![image52](AND_electronics_transistors.png) + +#### Bigger AND Gate + +AND gates can be chained to accept more inputs. + +![[AND_gates_big.png]] + +##### Truth Table + +| A | **B** | C | **Output** | +| --- | ----- | --- | ---------- | +| 0 | 0 | 0 | 0 | +| 0 | 1 | 0 | 0 | +| 1 | 0 | 0 | 0 | +| 1 | 1 | 0 | 0 | +| 0 | 0 | 1 | 0 | +| 0 | 1 | 1 | 0 | +| 1 | 0 | 1 | 0 | +| 1 | 1 | 1 | 1 | + +### OR + +Outputs `1` if at least one input is `1`. + +![image44](image44.png) + +#### Truth Table + +|A|**B**|**Output**| +|---|---|---| +|0|0|0| +|0|1|1| +|1|0|1| +|1|1|1| + +#### Implementation + +##### Logic Gates + +![[OR_gates.png]] + +##### Electronics + +![image53](OR_electronics.png) + +#### Bigger OR Gate + +![[OR_gates_big.png]] + +##### Truth Table + +| A | **B** | C | **Output** | +| --- | ----- | --- | ---------- | +| 0 | 0 | 0 | 0 | +| 0 | 1 | 0 | 1 | +| 1 | 0 | 0 | 1 | +| 1 | 1 | 0 | 1 | +| 0 | 0 | 1 | 1 | +| 0 | 1 | 1 | 1 | +| 1 | 0 | 1 | 1 | +| 1 | 1 | 1 | 1 | + +### NOR + +An OR gate followed by a NOT gate. + +A NOR gate is can also be used to build every other gate, just like NAND. However, NAND gates are preferred over NOR gates, as, in modern computers, they occupy less area and have less delay. + +![image46](image46.png) + +#### Truth Table + +|A|**B**|**Output**| +|---|---|---| +|0|0|1| +|0|1|0| +|1|0|0| +|1|1|0| + +#### Implementation + +##### Logic Gates + +![[NOR_gates.png]] + +### XOR + +Either input is `1`, exclusively. (OR, but if both inputs are on, it turns off.) + +![image47](image47.png) + +#### Truth Table + +| A | **B** | **Output** | +| --- | ----- | ---------- | +| 0 | 0 | 0 | +| 0 | 1 | 1 | +| 1 | 0 | 1 | +| 1 | 1 | 0 | + +#### Implementation + +##### Logic Gates + +![[XOR_gates.png]] + +### XNOR + +Inverted `XOR`. + +![image49](image49.png) + +#### Truth Table + +|A|**B**|**Output**| +|---|---|---| +|0|0|1| +|0|1|0| +|1|0|0| +|1|1|1| + +#### Implementation + +##### Logic Gates + +![[XNOR_gates.png]] + +## Binary + +Binary is a base-2 numeral system: A simple way to represent numbers using only two states. + +|Binary|Decimal|Hexadecimal| +|---|---|---| +|0000|00|00| +|0001|01|01| +|0010|02|02| +|0011|03|03| +|0100|04|04| +|0101|05|05| +|0110|06|06| +|0111|07|07| +|1000|08|08| +|1001|09|09| +|1010|10|0A| +|1011|11|0B| +|1100|12|0C| +|1101|13|0D| +|1110|14|0E| +|1111|15|0F| + +![Binary Calculations](binarycalc.png) + +## Arithmetic Operations + +### Addition + +Adding two numbers can be done using a simple, manual algorithm: By adding the last bit of both numbers first, carry if necessary, then move on to the next number, and so on. + +| **+** | 0 | 1 | +| ------- | --- | ---- | +| 0 | 0 | 1 | +| 1 | 1 | 10 | + +![addition](addition.png) + +#### Half Adder + +Add 2, single-digit binary numbers. + +| **A** | **B** | **Carry** | **Sum** | +| ----- | ----- | --------- | ------- | +| 0 | 0 | 0 | 0 | +| 0 | 1 | 0 | 1 | +| 1 | 0 | 0 | 1 | +| 1 | 1 | 1 | 0 | + +![[half_adder.png]] + +#### Full Adder (ADD) + +When adding 2 binary numbers, one operation might return a carry value, which the `half adder` can't accept, as it only has 2 inputs. + +![image69](image69.png) + +To solve this issue, a `full adder` accepts 3 inputs. + +![[full_adder.png]] + +#### 8-Bit Adder + +To add two bytes, chain 8 full-adders. +(The dark blue lines are buses: 8 bits in parallel, simplified for better readability) + +![[full_adder_8bit.png]] + +### Two's Complement + +The most common solution to represent negative numbers is to interpret the last bit as a negative value. For a byte, the last bit changes its value from 128 to -128. + +> A negative number is often called a *signed* number. + +The main advantage of the Two's Complement system is that the adder built previously also works with it. + +#### Invert Sign + +To switch between negative and positive numbers, flip all bits, then add 1. + +![[signed_negator.png]] + +--- + +### Subtraction + +Subtraction can result in negative numbers. Like how additions need a carry, subtraction needs a borrow. + +#### Half Subtractor + +Subtract 2, single-digit binary numbers. + +| **A** | **B** | Diff | **Borrow** | +| ----- | ----- | ---- | ---------- | +| 0 | 0 | 0 | 0 | +| 0 | 1 | 1 | 1 | +| 1 | 0 | 1 | 0 | +| 1 | 1 | 0 | 0 | + +![image72](image72.png) + +#### Full Subtractor + +A `full subtractor` accepts the borrow value, allowing us to chain results. + +| **A** | **B** | **B**in | **Diff** | **B**out | +| ----- | ----- | ------- | -------- | -------- | +| 0 | 0 | 0 | 0 | 0 | +| 0 | 0 | 1 | 1 | 1 | +| 0 | 1 | 0 | 1 | 1 | +| 0 | 1 | 1 | 0 | 1 | +| 1 | 0 | 0 | 1 | 0 | +| 1 | 0 | 1 | 0 | 0 | +| 1 | 1 | 0 | 0 | 0 | +| 1 | 1 | 1 | 1 | 1 | + +![image73](image73.png) + +#### 8-Bit Subtractor + +![image74](image74.png) + +### Multiplication + +Multiplication is also similar to its decimal counterpart, but because binary is so small compared to decimal, the steps are also much simpler. + +First, multiply the top number to every digit of the bottom one, and then add the results together. + +| X | 0 | 1 | +| --- | --- | --- | +| 0 | 0 | 0 | +| 1 | 0 | 1 | + +![multiplication](multiplication.png) + +#### 2-Bit By 2-Bit Multiplier + +![image75](image75.png) + +### Division + +1. Find the smallest part of the dividend greater than or equal to the **divisor**.![d1](d1.png) + + +2. Write the first digit of **the answer**, and **copy the original divisor down**.![d2](d2.png) + + +3. Subtract the **aligned dividend digits** by **the digits under the dividend**.![d3](d3.png) + +4. Lower **the next dividend digit**.![d4](d4.png) + +5. Is **the total** greater or equal to the **divisor**? If so, add a `1` to the answer. If not, **add a `0` to the answer and return to step 4**.![d5](d5.png) + + +6. Return to step 2, until you reach the end of the number. If you reached the end, you found **the answer**.![d6](d6.png) + +## Memory + +### Byte Switch (SWC) + +A bit switch, also known as transistor, toggles a given input, using a separate bit. + +![[bit_switch.png]] + +If 8 transistors are controlled by the same bit in parallel a Byte Switch is created. + +### Input Selector + +Using a switch, we can select which input to use. + +![[input_selector.png]] + +### Bus + +A Bus is useful to simplify wiring. One bit controls which input should be selected, and a second one, the output. This way, a single wire can transfer twice as much information. + +![[bus.png]] + +### ASCII + +Binary can also be used to represent characters. + +| Dec | Hex | Binary | HTML | Char | Description | +| --- | --- | -------- | -------- | ----------- | ------------------------- | +| 0 | 00 | 00000000 | `�` | NUL | Null | +| 1 | 01 | 00000001 | `` | SOH | Start of Heading | +| 2 | 02 | 00000010 | `` | STX | Start of Text | +| 3 | 03 | 00000011 | `` | ETX | End of Text | +| 4 | 04 | 00000100 | `` | EOT | End of Transmission | +| 5 | 05 | 00000101 | `` | ENQ | Enquiry | +| 6 | 06 | 00000110 | `` | ACK | Acknowledge | +| 7 | 07 | 00000111 | `` | BEL | Bell | +| 8 | 08 | 00001000 | `` | BS | Backspace | +| 9 | 09 | 00001001 | ` ` | HT | Horizontal Tab | +| 10 | 0A | 00001010 | ` ` | LF | Line Feed | +| 11 | 0B | 00001011 | ` ` | VT | Vertical Tab | +| 12 | 0C | 00001100 | ` ` | FF | Form Feed | +| 13 | 0D | 00001101 | ` ` | CR | Carriage Return | +| 14 | 0E | 00001110 | `` | SO | Shift Out | +| 15 | 0F | 00001111 | `` | SI | Shift In | +| 16 | 10 | 00010000 | `` | DLE | Data Link Escape | +| 17 | 11 | 00010001 | `` | DC1 | Device Control 1 | +| 18 | 12 | 00010010 | `` | DC2 | Device Control 2 | +| 19 | 13 | 00010011 | `` | DC3 | Device Control 3 | +| 20 | 14 | 00010100 | `` | DC4 | Device Control 4 | +| 21 | 15 | 00010101 | `` | NAK | Negative Acknowledge | +| 22 | 16 | 00010110 | `` | SYN | Synchronize | +| 23 | 17 | 00010111 | `` | ETB | End of Transmission Block | +| 24 | 18 | 00011000 | `` | CAN | Cancel | +| 25 | 19 | 00011001 | `` | EM | End of Medium | +| 26 | 1A | 00011010 | `` | SUB | Substitute | +| 27 | 1B | 00011011 | `` | ESC | Escape | +| 28 | 1C | 00011100 | `` | FS | File Separator | +| 29 | 1D | 00011101 | `` | GS | Group Separator | +| 30 | 1E | 00011110 | `` | RS | Record Separator | +| 31 | 1F | 00011111 | `` | US | Unit Separator | +| 32 | 20 | 00100000 | ` ` | space | Space | +| 33 | 21 | 00100001 | `!` | ! | exclamation mark | +| 34 | 22 | 00100010 | `"` | " | double quote | +| 35 | 23 | 00100011 | `#` | # | number | +| 36 | 24 | 00100100 | `$` | $ | dollar | +| 37 | 25 | 00100101 | `%` | % | percent | +| 38 | 26 | 00100110 | `&` | & | ampersand | +| 39 | 27 | 00100111 | `'` | ' | single quote | +| 40 | 28 | 00101000 | `(` | ( | left parenthesis | +| 41 | 29 | 00101001 | `)` | ) | right parenthesis | +| 42 | 2A | 00101010 | `*` | * | asterisk | +| 43 | 2B | 00101011 | `+` | + | plus | +| 44 | 2C | 00101100 | `,` | , | comma | +| 45 | 2D | 00101101 | `-` | - | minus | +| 46 | 2E | 00101110 | `.` | . | period | +| 47 | 2F | 00101111 | `/` | / | slash | +| 48 | 30 | 00110000 | `0` | 0 | zero | +| 49 | 31 | 00110001 | `1` | 1 | one | +| 50 | 32 | 00110010 | `2` | 2 | two | +| 51 | 33 | 00110011 | `3` | 3 | three | +| 52 | 34 | 00110100 | `4` | 4 | four | +| 53 | 35 | 00110101 | `5` | 5 | five | +| 54 | 36 | 00110110 | `6` | 6 | six | +| 55 | 37 | 00110111 | `7` | 7 | seven | +| 56 | 38 | 00111000 | `8` | 8 | eight | +| 57 | 39 | 00111001 | `9` | 9 | nine | +| 58 | 3A | 00111010 | `:` | : | colon | +| 59 | 3B | 00111011 | `;` | ; | semicolon | +| 60 | 3C | 00111100 | `<` | < | less than | +| 61 | 3D | 00111101 | `=` | = | equality sign | +| 62 | 3E | 00111110 | `>` | > | greater than | +| 63 | 3F | 00111111 | `?` | ? | question mark | +| 64 | 40 | 01000000 | `@` | @ | at sign | +| 65 | 41 | 01000001 | `A` | A | | +| 66 | 42 | 01000010 | `B` | B | | +| 67 | 43 | 01000011 | `C` | C | | +| 68 | 44 | 01000100 | `D` | D | | +| 69 | 45 | 01000101 | `E` | E | | +| 70 | 46 | 01000110 | `F` | F | | +| 71 | 47 | 01000111 | `G` | G | | +| 72 | 48 | 01001000 | `H` | H | | +| 73 | 49 | 01001001 | `I` | I | | +| 74 | 4A | 01001010 | `J` | J | | +| 75 | 4B | 01001011 | `K` | K | | +| 76 | 4C | 01001100 | `L` | L | | +| 77 | 4D | 01001101 | `M` | M | | +| 78 | 4E | 01001110 | `N` | N | | +| 79 | 4F | 01001111 | `O` | O | | +| 80 | 50 | 01010000 | `P` | P | | +| 81 | 51 | 01010001 | `Q` | Q | | +| 82 | 52 | 01010010 | `R` | R | | +| 83 | 53 | 01010011 | `S` | S | | +| 84 | 54 | 01010100 | `T` | T | | +| 85 | 55 | 01010101 | `U` | U | | +| 86 | 56 | 01010110 | `V` | V | | +| 87 | 57 | 01010111 | `W` | W | | +| 88 | 58 | 01011000 | `X` | X | | +| 89 | 59 | 01011001 | `Y` | Y | | +| 90 | 5A | 01011010 | `Z` | Z | | +| 91 | 5B | 01011011 | `[` | [ | left square bracket | +| 92 | 5C | 01011100 | `\` | \|backslash | | +| 93 | 5D | 01011101 | `]` | ] | right square bracket | +| 94 | 5E | 01011110 | `^` | ^ | caret / circumflex | +| 95 | 5F | 01011111 | `_` | _ | underscore | +| 96 | 60 | 01100000 | ``` | ` | grave / accent | +| 97 | 61 | 01100001 | `a` | a | | +| 98 | 62 | 01100010 | `b` | b | | +| 99 | 63 | 01100011 | `c` | c | | +| 100 | 64 | 01100100 | `d` | d | | +| 101 | 65 | 01100101 | `e` | e | | +| 102 | 66 | 01100110 | `f` | f | | +| 103 | 67 | 01100111 | `g` | g | | +| 104 | 68 | 01101000 | `h` | h | | +| 105 | 69 | 01101001 | `i` | i | | +| 106 | 6A | 01101010 | `j` | j | | +| 107 | 6B | 01101011 | `k` | k | | +| 108 | 6C | 01101100 | `l` | l | | +| 109 | 6D | 01101101 | `m` | m | | +| 110 | 6E | 01101110 | `n` | n | | +| 111 | 6F | 01101111 | `o` | o | | +| 112 | 70 | 01110000 | `p` | p | | +| 113 | 71 | 01110001 | `q` | q | | +| 114 | 72 | 01110010 | `r` | r | | +| 115 | 73 | 01110011 | `s` | s | | +| 116 | 74 | 01110100 | `t` | t | | +| 117 | 75 | 01110101 | `u` | u | | +| 118 | 76 | 01110110 | `v` | v | | +| 119 | 77 | 01110111 | `w` | w | | +| 120 | 78 | 01111000 | `x` | x | | +| 121 | 79 | 01111001 | `y` | y | | +| 122 | 7A | 01111010 | `z` | z | | +| 123 | 7B | 01111011 | `{` | { | left curly bracket | +| 124 | 7C | 01111100 | `|` | \| | vertical bar | +| 125 | 7D | 01111101 | `}` | } | right curly bracket | +| 126 | 7E | 01111110 | `~` | ~ | tilde | +| 127 | 7F | 01111111 | `` | DEL | delete | diff --git a/content/notes/ready/how_to_computer/input_selector.png b/content/notes/ready/how_to_computer/input_selector.png new file mode 100644 index 0000000..bc2beb6 Binary files /dev/null and b/content/notes/ready/how_to_computer/input_selector.png differ diff --git a/content/notes/ready/how_to_computer/signed_negator.png b/content/notes/ready/how_to_computer/signed_negator.png new file mode 100644 index 0000000..386fe0a Binary files /dev/null and b/content/notes/ready/how_to_computer/signed_negator.png differ diff --git a/content/notes/ready/logic_gates/image48.png b/content/notes/ready/logic_gates/image48.png deleted file mode 100644 index 8de799a..0000000 Binary files a/content/notes/ready/logic_gates/image48.png and /dev/null differ diff --git a/content/notes/ready/logic_gates/index.md b/content/notes/ready/logic_gates/index.md deleted file mode 100644 index 76a2131..0000000 --- a/content/notes/ready/logic_gates/index.md +++ /dev/null @@ -1,122 +0,0 @@ ---- -title: Logic Gates -description: -draft: false -tags: - - electronics - - computer-science -author: TrudeEH -showToc: true ---- - -## NOT - -Invert the input. -![image42](image42.png) - -### Truth Table - -|**Input**|**Output**| -|---|---| -|0|1| -|1|0| - -## AND - -Output `1` only when both inputs are `1`. -![image43](image43.png) - -### Truth Table - -|A|**B**|**Output**| -|---|---|---| -|0|0|0| -|0|1|0| -|1|0|0| -|1|1|1| - -## OR - -Output `1` if at least one input is `1`. -![image44](image44.png) - -### Truth Table - -|A|**B**|**Output**| -|---|---|---| -|0|0|0| -|0|1|1| -|1|0|1| -|1|1|1| - -## NAND - -An `AND` gate followed by a `NOT` gate. -![image45](image45.png) - -### Truth Table - -|A|**B**|**Output**| -|---|---|---| -|0|0|1| -|0|1|1| -|1|0|1| -|1|1|0| - -## NOR - -An `OR` gate followed by a `NOT` gate. -![image46](image46.png) - -### Truth Table - -|A|**B**|**Output**| -|---|---|---| -|0|0|1| -|0|1|0| -|1|0|0| -|1|1|0| - -## XOR - -Either input is `1`, exclusively. -![image47](image47.png) -![image48](image48.png) - -### Truth Table - -|A|**B**|**Output**| -|---|---|---| -|0|0|0| -|0|1|1| -|1|0|1| -|1|1|0| - -## XNOR - -Inverted `XOR`. -![image49](image49.png) - -### Truth Table - -|A|**B**|**Output**| -|---|---|---| -|0|0|1| -|0|1|0| -|1|0|0| -|1|1|1| - -## Implementation Examples - -### NOT - -![image50](image50.png) - -### AND - -![image51](image51.png) -![image52](image52.png) - -### OR - -![image53](image53.png) diff --git a/content/notes/ready/transistors/index.md b/content/notes/ready/transistors/index.md deleted file mode 100644 index c780791..0000000 --- a/content/notes/ready/transistors/index.md +++ /dev/null @@ -1,49 +0,0 @@ ---- -title: Transistors -description: -draft: false -tags: - - electronics -author: TrudeEH -showToc: true ---- - - - -Transistors are electronic components that behave like a `switch`, or `amplifier`. - -## Schematic - -```Plain - .--.,-- Collector -Base --(--|<) - `--`'-- Emitter -``` - -## Examples - -### Switch - -If the `base` pin is provided with energy, the transistor allows current to flow in the main circuit. -![image](image.png) - -### Amplifier - -Altering the voltage given to the `base` pin allows us to control a larger voltage in the main circuit. -![image1](image1.png) - -## Types of Transistor - -### NPN - -An NPN transistor combines the `base` pin and `collector` pin. -![image2](image2.png) - -> Note: Even if the collector pin is disconnected from the circuit, a small amount of current still passes through. ![image3](image3.png) - -### PNP - -A PNP transistor receives energy through the `emitter` pin, and then divides it to the remaining pins. - - -![image4](image4.png)