Basic I/O System Design: Department of Computer Science & Engineering BRAC University
Basic I/O System Design: Department of Computer Science & Engineering BRAC University
Input-Output devices (or peripherals) such as Keyboards, Mouse, LEDs etc. are
essential components of the microprocessor-based or microcontroller-based
systems.
Input Devices
Receive data from peripheral (i.e., device)
Send data to processor
Output Devices
Receive data from processor
Send data to peripheral (i.e., device)
Basic I/O System
8086 processor uses address bus pins AD[15:0] to locate an I/O port
Data transfer between ports and the processor occurs over data bus
AL (or AX) is the processor register that takes input data (or provide output data)
Data bus
AL
8086
Address bus AD[15:0]
Basic I/O System
I/O devices serve two main purposes :
• To communicate with outside world
• To store and transfer data
I/O Controller is a microchip that acts as an interface between the systems bus
and I/O device and helps to facilitate the flow of data between these devices. For
e.g., 8255
Relieve the processor of low-level details
Takes care of electrical interface
I/O Controller Chips have three types of registers : Data, Command and
Status
Basic I/O System
Read Operation: To receive binary data from an input peripheral
MPU places the address of an input port on the address bus to locate the
I/O device, then it enables the input port by asserting the RD signal, and
reads data using the data bus.
Important Points:
Writing to the port : When the MPU sends out or transfers data to an output port
Reading from the port : When the MPU receives data from an input port
Data transfer takes place between the microprocessor accumulator (AL or AX)
and the I/O device .
• Variable address – Register DX holds a 16 bit I/O address. Because this can be
changed.
I/O Instructions
IN AX, 25 - Here 25 (p8) refers to port 25 which is an 8 bit address
(direct format)
If p8 is used, only 8 bits are used thus the address or port number appears
on lines A0-A7.
Hence, the first 28 or 256 I/O port addresses (00H – FFH) are accessed
by both fixed and variable I/O instructions.
If DX is used, then 16 bits are used thus the address or port number appears on
lines A0-A15
Hence the addresses 0100H-FFFFH (257th address to 65535th address) are
accessed only by variable I/O Address instructions.
Accessing I/O Devices
To establish a stable passage of communication between the CPU
and the I/O devices, the peripherals must first be mapped to
specific addresses so that they can accessed. Also to enable the
flow of data the help of the system bus (address, data and control)
is also required. This allocation of the system bus and mapping the
I/O devices to addresses is performed in two different ways :
Memory-mapped I/O
Isolated I/O
I/O Address Mapping
Memory Mapped I/O
A part of the memory is used to map I/O
devices
A device is mapped to a memory location. Memory
Sending data to the particular location addressing
FFFFF
causes interaction with the device. space
y
I/O
Common address, data and control lines for x
both memory and I/O
00000
Uses same memory read and write
signals for memory and I/O
Advantages :
Less complication
Less circuitry
Same instructions such as MOV can be used for both memory and I/O
Less decoding
Disadvantages :
A portion of the memory system is used as the I/O Map
I/O Address Mapping
Isolated I/O FFFFF
Separate I/O address space Memory
addressing
Common data and address bus for space
peripherals, CPU and memory
Advantages:
In this system no memory is wasted for I/O mapping.
Disadvantages:
Separate signals are also needed to interact with the I/O devices which
separate it from normal memory access instructions.
Instructions IN and OUT need to be used to perform data transfer.
Accessing I/O Devices in 8086
Addressing Space
❑ Accessing directly by instructions
FFFF
IN AL, 80 H
IN AX, 6H
OUT 3C H, AL
Accessed
OUT A0 H, AX
through DX
❑ Accessing through DX
00FF IN AX, DX
00F8 Accessed OUT DX, AL
directly by OUT DX, AX
instructions
0000
I/O Data Transfer Techniques
Programmed I/O
Interrupt-driven I/O
Direct memory access (DMA)
Programmed I/O
Transfer of data between CPU and I/O using programmed I/O:
Now to improve this situation to some extent, we will use Interrupt-Driven I/O
Interrupt-driven I/O
Transfer of data between CPU and I/O using programmed I/O:
But there is still room for making CPU performance more efficient
Why do we require an alternate?
Direct Memory Access (DMA) is a process of data transfer between the memory
and I/O devices. An external device takes over the control of system bus from the
CPU and facilitates with the data transfer.
The basic idea of DMA is to transfer blocks of data directly between memory
and peripherals. The data does not have to go through the microprocessor.
DMA controller can perform this task, relieving the CPU from the burden of
transferring data.
The CPU just issues the command for data transfer and shift its focus on actual
data processing while the DMA handles the transfer of data
Can be used for high-speed data transfer between memory and peripherals
such as HDD, magnetic tape etc.
Nowadays, DMA can transfer data as fast as 40-60 M byte per second.
DMA Controller
A DMA controller is connected with several
peripherals that may request DMA.
The peripherals when ready sends a DMA request (DREQ) signal to the DMA
controller
The DMA controller sends a Hold Request (HRQ) signal to the CPU to gain control of
the system bus
The CPU replies with a Hold Acknowledgement signal to the DMA giving the DMA
controller total control over the system bus
The DMA controller then sends a DMA Acknowledgement signal to the peripherals in
reply to the previous DMA request signal
Data can now be transferred between Memory and I/O with the help of the DMA
controller
DMA controller sends interrupt signal to the CPU when finished with data transfer.
The DMA disables the DMA Acknowledgement signal and the CPU disables the Hold
Acknowledgement signal taking back control of the system bus.
DMA Operation