Skip to content

Commit f22e7f0

Browse files
committed
docs(notes): add io interface notes
1 parent 00cb554 commit f22e7f0

File tree

1 file changed

+185
-0
lines changed

1 file changed

+185
-0
lines changed

Diff for: notes/2025-04-15-io-interface-en.md

+185
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,185 @@
1+
---
2+
title: I/O and Interface Technology
3+
lang: en
4+
layout: post
5+
audio: false
6+
translated: false
7+
generated: true
8+
---
9+
10+
Great! Here's a **comprehensive tutorial** for **Part 4: I/O and Interface Technology**, based on your course outline. This tutorial is structured to explain concepts clearly, provide practical examples, and show how components like 8255A, 8253/8254, and 8251A work together in a microcomputer system.
11+
12+
---
13+
14+
## 📘 Part 4: I/O and Interface Technology
15+
16+
---
17+
18+
### **1. Basics of I/O Interfaces**
19+
20+
#### ✅ Port Addressing
21+
22+
I/O interfaces allow a microprocessor to communicate with external devices. There are **two main addressing schemes**:
23+
24+
- **Memory-Mapped I/O**:
25+
- I/O devices are treated like memory locations.
26+
- Uses the same instructions as memory access (e.g., `MOV`).
27+
- Pros: Larger address space, can use all CPU instructions.
28+
- Cons: Consumes memory address space.
29+
30+
- **Isolated I/O (Port-Mapped I/O)**:
31+
- Special instructions like `IN` and `OUT`.
32+
- Limited address space (usually 256 ports).
33+
- Separate address space from memory.
34+
35+
| Type | Instruction Set Used | Address Space |
36+
|------------------|----------------------|-------------------|
37+
| Memory-Mapped | `MOV`, etc. | Part of memory |
38+
| Isolated (I/O-Mapped) | `IN`, `OUT` | Separate I/O space|
39+
40+
---
41+
42+
#### ✅ Data Transfer Modes
43+
44+
1. **Program-Controlled I/O**:
45+
- CPU checks device status and reads/writes data directly.
46+
- Simple but inefficient (busy waiting).
47+
48+
2. **Interrupt-Driven I/O**:
49+
- Device notifies CPU when it's ready via an **interrupt**.
50+
- CPU executes an Interrupt Service Routine (ISR).
51+
- Improves efficiency.
52+
53+
3. **DMA (Direct Memory Access)**:
54+
- Device transfers data directly to/from memory.
55+
- Bypasses CPU for large/fast data transfer.
56+
- Used for high-speed devices like disks.
57+
58+
---
59+
60+
### **2. Interrupt Systems**
61+
62+
#### ✅ Interrupt Vector Table
63+
64+
- Stores addresses of **Interrupt Service Routines (ISRs)**.
65+
- Each interrupt type has a **unique vector** (e.g., INT 0x08 for Timer).
66+
- The CPU looks up the table to jump to the correct ISR.
67+
68+
#### ✅ Priority Handling
69+
70+
- When multiple interrupts occur simultaneously, **priority** determines which gets handled first.
71+
- Priority can be **fixed** or **programmable**.
72+
73+
#### ✅ 8259A Programmable Interrupt Controller
74+
75+
- Manages multiple interrupt sources (up to 8).
76+
- Can be **cascaded** for 64 interrupt inputs.
77+
- Key functions:
78+
- Interrupt masking.
79+
- Priority setting.
80+
- Sending interrupt vector to CPU.
81+
82+
**Registers**:
83+
- IMR (Interrupt Mask Register)
84+
- ISR (In-Service Register)
85+
- IRR (Interrupt Request Register)
86+
87+
**Example**: Keyboard and Timer both trigger interrupts — 8259A prioritizes them based on configured priority.
88+
89+
---
90+
91+
### **3. Common Interface Chips**
92+
93+
---
94+
95+
#### ✅ 8255A Programmable Peripheral Interface (PPI)
96+
97+
Used to interface with external parallel devices like switches, LEDs, etc.
98+
99+
- Has 3 ports: **Port A**, **Port B**, and **Port C**.
100+
- Controlled via **Control Word**.
101+
102+
**Modes of Operation**:
103+
104+
- **Mode 0** – Simple I/O
105+
- Each port can be input/output.
106+
- **Mode 1** – Handshaking I/O
107+
- Supports synchronization with peripheral.
108+
- **Mode 2** – Bidirectional I/O (only for Port A)
109+
- Two-way data transfer with handshaking.
110+
111+
**Example**:
112+
- Port A: output to LED display
113+
- Port B: input from DIP switches
114+
- Port C: used for control signals
115+
116+
---
117+
118+
#### ✅ 8253 / 8254 Programmable Interval Timer
119+
120+
Used for generating delays, baud rates, etc.
121+
122+
- Has 3 independent 16-bit counters.
123+
- Each counter has modes (0–5), e.g.:
124+
125+
| Mode | Description |
126+
|------|---------------------------|
127+
| 0 | Interrupt on terminal count |
128+
| 2 | Rate generator (e.g., for clock) |
129+
| 3 | Square wave generator |
130+
131+
**Applications**:
132+
- Delay generation
133+
- Real-time clock
134+
- Baud rate generation for serial ports
135+
136+
**Typical Use**:
137+
- Counter 0: OS timer tick
138+
- Counter 1: DRAM refresh
139+
- Counter 2: Speaker tone
140+
141+
---
142+
143+
#### ✅ 8251A USART (Universal Synchronous/Asynchronous Receiver Transmitter)
144+
145+
Used for **serial communication**.
146+
147+
- Converts between parallel and serial data.
148+
- Supports both:
149+
- **Synchronous**: requires clock signal
150+
- **Asynchronous**: uses start/stop bits
151+
152+
**Key Features**:
153+
- Baud rate control (via 8253/8254)
154+
- Configurable character length, stop bits, parity
155+
- Supports transmit and receive buffering
156+
157+
**Application**: Serial port communication with PC or microcontroller.
158+
159+
---
160+
161+
## ✅ Summary Table
162+
163+
| Chip | Function | Key Features |
164+
|--------|----------------------------|----------------------------------------|
165+
| 8255A | Parallel I/O | 3 ports, 3 modes, handshaking |
166+
| 8253/54| Timing/counting | 3 counters, multiple modes |
167+
| 8251A | Serial communication | Sync/Async, baud control |
168+
| 8259A | Interrupt control | Priority, masking, ISR vectoring |
169+
170+
---
171+
172+
## 🧠 Real-World Example Scenario
173+
174+
You want to design a simple microcomputer system to:
175+
176+
- Control an LED matrix via Port A (8255A Mode 0)
177+
- Receive keyboard input via interrupts (8259A)
178+
- Generate a periodic system tick every 1ms (8253 Mode 2)
179+
- Send sensor data to PC via serial (8251A in async mode)
180+
181+
Each chip would be configured and connected to the CPU through address decoding and control signals, with appropriate software written to manage communication.
182+
183+
---
184+
185+
Let me know if you want example code, simulation diagrams, or a quiz for this chapter!

0 commit comments

Comments
 (0)