diff --git a/docs/1b/ece124.md b/docs/1b/ece124.md
index 5061091..9955689 100644
--- a/docs/1b/ece124.md
+++ b/docs/1b/ece124.md
@@ -58,6 +58,34 @@ $$\overline{A+B}$$
(Source: Wikimedia Commons)
+The **XOR** operator returns true if and only if the inputs are not equal to each other.
+
+$$A\oplus B$$
+
+(Source: Wikimedia Commons)
+
+The **XNOR** operator is equivalent to **NOT XOR**.
+
+$$\overline{A\oplus B}$$
+
+(Source: Wikimedia Commons)
+
+### Buffer gates
+
+The **buffer** gate returns the input without any changes, and is usually used for adding delays into circuits.
+
+(Source: Wikimedia Commons
+
+A **tri-state buffer** gate controls whether the input affects the circuit at all. When the controlling input is off, the input is disconnected from the rest of the system, leaving the output of the buffer as a third state **Z** (high impedance).
+
+One example of a tri-state buffer is a switch.
+
+(Source: Wikimedia Commons)
+
+!!! example
+ Tri-state buffers are often used to implement **select inputs** or **multiplexers** — setting the mux switch in one direction or another only allows signals from one input to pass through.
+ (Source: Wikimedia Commons)
+
### NAND/NOR completeness
NAND and NOR are **universal gates** — some combination of them can form any other logic gate. Constructions of other gates using only these gates are called **NAND-NAND realisations** or **NOR-NOR realisations**.
@@ -209,7 +237,23 @@ A transistor has three inputs/outputs:
A **negative logic** transistor uses a NOT bubble to represent that it is closed while the voltage is **below** a threshold.
-(Source: Wikimedia Commons)
+(Source: Wikimedia Commons)
+
+## Hardware
+
+!!! definition
+ - A **programmable logic gate**
+ - A **programmable logic array**
+ - **Programmable array logic**
+
+### FPGAs
+
+A **field-programmable gate array** (FPGA) is hardware that does not come with factory-fabricated AND and OR gates, requiring the user to set them up themselves. It contains:
+
+- input/output pads
+- routing channels (to connect with physical wires and switches)
+- logic blocks (that are user-programmed to behave like gates)
+ - lookup tables (LUTs) inside the logic gates, which are a small amount of memory
## VHDL