![Page 1: Buses and Parallel Input/Outputcs2121/LectureNotes/15s1/week4_notes.pdf · 7 Computer Buses CPU is connected to memory and I/O devices via data, address and control buses. Data bus](https://reader033.vdocument.in/reader033/viewer/2022042310/5ed7eb3a17e4482306586cca/html5/thumbnails/1.jpg)
1
Buses and Parallel
Input/Output
Lecturer: Sri Parameswaran
Notes by: Annie Guo
![Page 2: Buses and Parallel Input/Outputcs2121/LectureNotes/15s1/week4_notes.pdf · 7 Computer Buses CPU is connected to memory and I/O devices via data, address and control buses. Data bus](https://reader033.vdocument.in/reader033/viewer/2022042310/5ed7eb3a17e4482306586cca/html5/thumbnails/2.jpg)
2
Lecture Overview
Buses
Computer buses
I/O Addressing
Memory mapped I/O
Separate I/O
Parallel input/output
AVR examples
![Page 3: Buses and Parallel Input/Outputcs2121/LectureNotes/15s1/week4_notes.pdf · 7 Computer Buses CPU is connected to memory and I/O devices via data, address and control buses. Data bus](https://reader033.vdocument.in/reader033/viewer/2022042310/5ed7eb3a17e4482306586cca/html5/thumbnails/3.jpg)
3
Five Components of
Computers
Processor (active)
Computer
Control (“brain”)
Datapath (“brawn”)
Memory (passive) (where programs, data live when
running)
Devices
Input
Output
Keyboard
Mouse
Disk,
Display,
Printer
Disk
![Page 4: Buses and Parallel Input/Outputcs2121/LectureNotes/15s1/week4_notes.pdf · 7 Computer Buses CPU is connected to memory and I/O devices via data, address and control buses. Data bus](https://reader033.vdocument.in/reader033/viewer/2022042310/5ed7eb3a17e4482306586cca/html5/thumbnails/4.jpg)
4
Buses A collection of wires through which data is
transmitted from one of sources to destinations
All buses consist of three parts: data bus
transfer actual data
address bus
transfer information about where the data should go.
control bus
transfer control signals
source 1
source 2
source n
dest 1
dest 2
dest n
![Page 5: Buses and Parallel Input/Outputcs2121/LectureNotes/15s1/week4_notes.pdf · 7 Computer Buses CPU is connected to memory and I/O devices via data, address and control buses. Data bus](https://reader033.vdocument.in/reader033/viewer/2022042310/5ed7eb3a17e4482306586cca/html5/thumbnails/5.jpg)
5
Characteristics of Buses
For system or higher level designs, buses
can be characterized in
Bus width (in bits)
Determines how much data can be transmitted at a
time. E.g. 16 bits, 32 bits
Clock speed in MHz
Determines how often data can be transferred on the
busses
![Page 6: Buses and Parallel Input/Outputcs2121/LectureNotes/15s1/week4_notes.pdf · 7 Computer Buses CPU is connected to memory and I/O devices via data, address and control buses. Data bus](https://reader033.vdocument.in/reader033/viewer/2022042310/5ed7eb3a17e4482306586cca/html5/thumbnails/6.jpg)
6
Data Bus
Address Bus
Control Bus
CPU
Parallel
I/O
Device
Serial
I/O
Device
Memory I/O
Interface
Typical Computer Bus
Structure
![Page 7: Buses and Parallel Input/Outputcs2121/LectureNotes/15s1/week4_notes.pdf · 7 Computer Buses CPU is connected to memory and I/O devices via data, address and control buses. Data bus](https://reader033.vdocument.in/reader033/viewer/2022042310/5ed7eb3a17e4482306586cca/html5/thumbnails/7.jpg)
7
Computer Buses
CPU is connected to memory and I/O devices via
data, address and control buses.
Data bus is bi-directional and transfers information
(memory data and instructions, I/O data) to and from
CPU.
Address bus is most often unidirectional because
the CPU is the only source of addresses.
Control bus carries all control signals required to
control the operation of the data transfer.
![Page 8: Buses and Parallel Input/Outputcs2121/LectureNotes/15s1/week4_notes.pdf · 7 Computer Buses CPU is connected to memory and I/O devices via data, address and control buses. Data bus](https://reader033.vdocument.in/reader033/viewer/2022042310/5ed7eb3a17e4482306586cca/html5/thumbnails/8.jpg)
8
Data Bus CPU
Multiple Destinations
Multiple Sources
Computer Buses (cont.)
Each line of a bus has multiple sources and
destinations. The bus transfers data from one
source each time.
![Page 9: Buses and Parallel Input/Outputcs2121/LectureNotes/15s1/week4_notes.pdf · 7 Computer Buses CPU is connected to memory and I/O devices via data, address and control buses. Data bus](https://reader033.vdocument.in/reader033/viewer/2022042310/5ed7eb3a17e4482306586cca/html5/thumbnails/9.jpg)
9
Input Interface
Connects multiple data sources
Only one source data is sent to the bus at a time
Often implemented with three-state buffers for data buses
For example,
a parallel, eight-bit input data is connected to eight three-state gates whose enable lines are tied together
When the data is to sent to the bus the eight three-state gates are enabled.
The open-collector gate is often used for control signals such as request for interrupts
Since one way switch is often required.
![Page 10: Buses and Parallel Input/Outputcs2121/LectureNotes/15s1/week4_notes.pdf · 7 Computer Buses CPU is connected to memory and I/O devices via data, address and control buses. Data bus](https://reader033.vdocument.in/reader033/viewer/2022042310/5ed7eb3a17e4482306586cca/html5/thumbnails/10.jpg)
10
A
1G
1G A Y
0 0 0
0 1 1
1 0 X
1 1 X High
Impedance
(a) Three-state
gate
Vcc
(b) Typical open-collector
gate
External
Pull-up
Resistor
Open
Collector
Data source input
Bus line
Typical Bus Interface Gates
Y
![Page 11: Buses and Parallel Input/Outputcs2121/LectureNotes/15s1/week4_notes.pdf · 7 Computer Buses CPU is connected to memory and I/O devices via data, address and control buses. Data bus](https://reader033.vdocument.in/reader033/viewer/2022042310/5ed7eb3a17e4482306586cca/html5/thumbnails/11.jpg)
11
D Q
C1
C2 CLR
Clock
74116 Dual 4-bit
Latch with Clear
Destination or
Output Device
DBn
Output Interface
The output interface between the data bus
and a destination or output device contains a
latch.
![Page 12: Buses and Parallel Input/Outputcs2121/LectureNotes/15s1/week4_notes.pdf · 7 Computer Buses CPU is connected to memory and I/O devices via data, address and control buses. Data bus](https://reader033.vdocument.in/reader033/viewer/2022042310/5ed7eb3a17e4482306586cca/html5/thumbnails/12.jpg)
12
Address Decoding
The interface must provides the ability for
CPU to select one of many sources and
destinations.
The address decoder is used.
![Page 13: Buses and Parallel Input/Outputcs2121/LectureNotes/15s1/week4_notes.pdf · 7 Computer Buses CPU is connected to memory and I/O devices via data, address and control buses. Data bus](https://reader033.vdocument.in/reader033/viewer/2022042310/5ed7eb3a17e4482306586cca/html5/thumbnails/13.jpg)
13
O1
O0
O2
O3
A0
A1
E
A1
A0
Read
Control
From
CPU
Data Bus
74LS139
2-of-4
Decoder
Info
Source
To/From
CPU
Info
Source
Info
Source
Info
Source
Address Decoding for Input
Devices
![Page 14: Buses and Parallel Input/Outputcs2121/LectureNotes/15s1/week4_notes.pdf · 7 Computer Buses CPU is connected to memory and I/O devices via data, address and control buses. Data bus](https://reader033.vdocument.in/reader033/viewer/2022042310/5ed7eb3a17e4482306586cca/html5/thumbnails/14.jpg)
14
O1
O0
O2
O3
A0
A1
E
A1
A0
Write
Control
From
CPU
Data Bus
74LS139
2-of-4
Decoder
74116
Dual 4-Bit
Latch
74116
Dual 4-Bit
Latch
74116
Dual 4-Bit
Latch
74116
Dual 4-Bit
Latch
To/From
CPU
Address Decoding for Output
Devices
![Page 15: Buses and Parallel Input/Outputcs2121/LectureNotes/15s1/week4_notes.pdf · 7 Computer Buses CPU is connected to memory and I/O devices via data, address and control buses. Data bus](https://reader033.vdocument.in/reader033/viewer/2022042310/5ed7eb3a17e4482306586cca/html5/thumbnails/15.jpg)
15
CPU Timing Signals
CPU must provide timing and synchronization
so that the transfer of information occurs at
the right time.
CPU has its own clock.
I/O devices may have a separate I/O clock.
Typical timing signals include READ and WRITE.
![Page 16: Buses and Parallel Input/Outputcs2121/LectureNotes/15s1/week4_notes.pdf · 7 Computer Buses CPU is connected to memory and I/O devices via data, address and control buses. Data bus](https://reader033.vdocument.in/reader033/viewer/2022042310/5ed7eb3a17e4482306586cca/html5/thumbnails/16.jpg)
16
CPU Clock
Address
Bus address from CPU valid
Data Bus data from device
valid
A
C
READ
Control
Signal
B
Typical CPU Read Cycle
![Page 17: Buses and Parallel Input/Outputcs2121/LectureNotes/15s1/week4_notes.pdf · 7 Computer Buses CPU is connected to memory and I/O devices via data, address and control buses. Data bus](https://reader033.vdocument.in/reader033/viewer/2022042310/5ed7eb3a17e4482306586cca/html5/thumbnails/17.jpg)
17
Typical CPU Read Cycle
CPU places the address on the address bus
at point A.
The control signal READ is asserted at point
B to signal the external device that CPU is
ready to take the data from the data bus.
CPU reads the data bus at point C whether or
not the input device has made it ready
If NOT, some form of synchronization is required.
![Page 18: Buses and Parallel Input/Outputcs2121/LectureNotes/15s1/week4_notes.pdf · 7 Computer Buses CPU is connected to memory and I/O devices via data, address and control buses. Data bus](https://reader033.vdocument.in/reader033/viewer/2022042310/5ed7eb3a17e4482306586cca/html5/thumbnails/18.jpg)
18
CPU Clock
Address
Bus address from CPU valid
Data Bus data from CPU
valid
A
B
WRITE
Control
Signal
D C
Typical CPU Write Cycle
![Page 19: Buses and Parallel Input/Outputcs2121/LectureNotes/15s1/week4_notes.pdf · 7 Computer Buses CPU is connected to memory and I/O devices via data, address and control buses. Data bus](https://reader033.vdocument.in/reader033/viewer/2022042310/5ed7eb3a17e4482306586cca/html5/thumbnails/19.jpg)
19
Typical CPU Write Cycle
CPU places the address on the address bus at point
A.
The data bits are supplied by CPU at point B.
The control signal WRITE is asserted by CPU at
point C to signal the external device that the data is
ready to be taken from the data bus.
This signal is used to create the clock to latch the data at
the correct time.
Depending on the type of latch and when WRITE is
asserted, the data may be captured on the falling
edge or rising edge.
![Page 20: Buses and Parallel Input/Outputcs2121/LectureNotes/15s1/week4_notes.pdf · 7 Computer Buses CPU is connected to memory and I/O devices via data, address and control buses. Data bus](https://reader033.vdocument.in/reader033/viewer/2022042310/5ed7eb3a17e4482306586cca/html5/thumbnails/20.jpg)
20
O1
O0
O2
O3
A0
A1
E
A1
A0
74LS139
2-of-4
Decoder
O1
O0
O2
O3
A0
A1
E
A1
A0
74116 Dual
4-Bit Latch Destination
Source
SOURCE_ADR_OK
DES_ADR_OK
Data Bus
74LS244 Octal
Buffer
READ
WRITE
Complete I/O Interface
![Page 21: Buses and Parallel Input/Outputcs2121/LectureNotes/15s1/week4_notes.pdf · 7 Computer Buses CPU is connected to memory and I/O devices via data, address and control buses. Data bus](https://reader033.vdocument.in/reader033/viewer/2022042310/5ed7eb3a17e4482306586cca/html5/thumbnails/21.jpg)
21
Complete I/O Interface (cont.)
READ and WRITE control the enable (E).
The three-state enables and the latch clock
signals are not asserted until the correct
address is on the address bus AND the
correct time in the read or write cycle has
arrived.
![Page 22: Buses and Parallel Input/Outputcs2121/LectureNotes/15s1/week4_notes.pdf · 7 Computer Buses CPU is connected to memory and I/O devices via data, address and control buses. Data bus](https://reader033.vdocument.in/reader033/viewer/2022042310/5ed7eb3a17e4482306586cca/html5/thumbnails/22.jpg)
22
I/O Addressing
If the same address bus is used for both
memory and I/O, how does hardware
distinguish between memory reads/writes
and I/O reads/writes?
Two approaches:
Memory-mapped I/O.
Separate I/O.
AVR supports both.
![Page 23: Buses and Parallel Input/Outputcs2121/LectureNotes/15s1/week4_notes.pdf · 7 Computer Buses CPU is connected to memory and I/O devices via data, address and control buses. Data bus](https://reader033.vdocument.in/reader033/viewer/2022042310/5ed7eb3a17e4482306586cca/html5/thumbnails/23.jpg)
23
Memory
I/O
Memory Mapped I/O
The entire memory address space is divided
into memory space and I/O space.
![Page 24: Buses and Parallel Input/Outputcs2121/LectureNotes/15s1/week4_notes.pdf · 7 Computer Buses CPU is connected to memory and I/O devices via data, address and control buses. Data bus](https://reader033.vdocument.in/reader033/viewer/2022042310/5ed7eb3a17e4482306586cca/html5/thumbnails/24.jpg)
24
AVR Memory Mapped I/O
In AVR, 480 I/O
registers are mapped
into memory space
$0020 ~ $01FF
1 byte each
With such memory
addresses, accesses
to the I/O registers
use memory access
type of instructions.
![Page 25: Buses and Parallel Input/Outputcs2121/LectureNotes/15s1/week4_notes.pdf · 7 Computer Buses CPU is connected to memory and I/O devices via data, address and control buses. Data bus](https://reader033.vdocument.in/reader033/viewer/2022042310/5ed7eb3a17e4482306586cca/html5/thumbnails/25.jpg)
25
Memory Mapped I/O (cont.)
Advantages:
Simpler CPU design.
No special instructions for I/O accesses.
Disadvantages:
I/O devices reduce the amount of memory space
available for application programs.
The address decoder needs to decode the full
address bus to avoid conflict with memory
addresses.
![Page 26: Buses and Parallel Input/Outputcs2121/LectureNotes/15s1/week4_notes.pdf · 7 Computer Buses CPU is connected to memory and I/O devices via data, address and control buses. Data bus](https://reader033.vdocument.in/reader033/viewer/2022042310/5ed7eb3a17e4482306586cca/html5/thumbnails/26.jpg)
26
I/O Interface for Memory-
Mapped I/O
Address
Bus
Decoder
D Q
CL
Information
Destination
Data Bus
Information
Source
READ
WRITE
ADR_OK
ADR_OK
to memory
to input devices
to output devices
ADR_OK
![Page 27: Buses and Parallel Input/Outputcs2121/LectureNotes/15s1/week4_notes.pdf · 7 Computer Buses CPU is connected to memory and I/O devices via data, address and control buses. Data bus](https://reader033.vdocument.in/reader033/viewer/2022042310/5ed7eb3a17e4482306586cca/html5/thumbnails/27.jpg)
27
Separate I/O
Two separate spaces for memory and I/O.
Less expensive address decoders than those
needed for memory-mapped I/O (Why?)
Additional control signal, called IO/M, is
required to prevent both memory and I/O
trying to place data on the bus
simultaneously.
IO/M is high for I/O use and low for memory use.
Special I/O instructions are required.
![Page 28: Buses and Parallel Input/Outputcs2121/LectureNotes/15s1/week4_notes.pdf · 7 Computer Buses CPU is connected to memory and I/O devices via data, address and control buses. Data bus](https://reader033.vdocument.in/reader033/viewer/2022042310/5ed7eb3a17e4482306586cca/html5/thumbnails/28.jpg)
28
I/O Interface for Separate I/O
Reduced
Address Bus
Decoder
Data Bus
Information Source -
memory READ
ADR_OK
IO/M
IO_READ
Information Source –
input device
![Page 29: Buses and Parallel Input/Outputcs2121/LectureNotes/15s1/week4_notes.pdf · 7 Computer Buses CPU is connected to memory and I/O devices via data, address and control buses. Data bus](https://reader033.vdocument.in/reader033/viewer/2022042310/5ed7eb3a17e4482306586cca/html5/thumbnails/29.jpg)
29
Separate I/O (cont.)
In AVR, the first 64 I/O registers can also be
addressed with separate addresses 0x00 ~
0x3F
1 byte each
With such separate addresses, the I/O
registers are accessed using I/O specific
instructions.
E.g. in and out
![Page 30: Buses and Parallel Input/Outputcs2121/LectureNotes/15s1/week4_notes.pdf · 7 Computer Buses CPU is connected to memory and I/O devices via data, address and control buses. Data bus](https://reader033.vdocument.in/reader033/viewer/2022042310/5ed7eb3a17e4482306586cca/html5/thumbnails/30.jpg)
30
I/O Synchronization
CPU is typically much faster than I/O devices.
Therefore, synchronization between CPU and
I/O devices is required.
Two synchronization approaches:
Software synchronization.
Hardware synchronization.
![Page 31: Buses and Parallel Input/Outputcs2121/LectureNotes/15s1/week4_notes.pdf · 7 Computer Buses CPU is connected to memory and I/O devices via data, address and control buses. Data bus](https://reader033.vdocument.in/reader033/viewer/2022042310/5ed7eb3a17e4482306586cca/html5/thumbnails/31.jpg)
31
Software Synchronization Two software synchronization approaches:
Real-time synchronization
Uses a software delay to match CPU to the timing
requirements of the I/O device.
The timing requirement must be known
Sensitive to CPU clock frequency.
Wastes CPU time.
Polling I/O
A status register, with a DATA_READY bit, is added to
the device. The software keeps reading the status
register until the DATA_READY bit is set.
Not sensitive to CPU clock frequency.
Still waste CPU time, but CPU can do other tasks.
![Page 32: Buses and Parallel Input/Outputcs2121/LectureNotes/15s1/week4_notes.pdf · 7 Computer Buses CPU is connected to memory and I/O devices via data, address and control buses. Data bus](https://reader033.vdocument.in/reader033/viewer/2022042310/5ed7eb3a17e4482306586cca/html5/thumbnails/32.jpg)
32
Handshaking I/O
A hardware synchronization approach with control
signal READY or WAIT.
For an input device, when CPU is asking for input data, the
input device will assert WAIT if the input data is NOT
available. When the input data is available, it will deassert
WAIT. While WAIT is asserted, CPU must wait until this
control signal is deasserted.
For an output device, when CPU is sending output data via
the data bus, the output device will assert WAIT if it is not
ready to take the data. When it is ready, it will deassert
WAIT. While WAIT is asserted, CPU must wait until this
control signal is deasserted.
![Page 33: Buses and Parallel Input/Outputcs2121/LectureNotes/15s1/week4_notes.pdf · 7 Computer Buses CPU is connected to memory and I/O devices via data, address and control buses. Data bus](https://reader033.vdocument.in/reader033/viewer/2022042310/5ed7eb3a17e4482306586cca/html5/thumbnails/33.jpg)
33
Address Bus
READ
Input Handshaking Hardware
Wait State
Logic
Data Register
INPUT DEVICE To CPU WAIT
DATA_REQUEST
INFO_ADD_OK
Data Bus
![Page 34: Buses and Parallel Input/Outputcs2121/LectureNotes/15s1/week4_notes.pdf · 7 Computer Buses CPU is connected to memory and I/O devices via data, address and control buses. Data bus](https://reader033.vdocument.in/reader033/viewer/2022042310/5ed7eb3a17e4482306586cca/html5/thumbnails/34.jpg)
34
Read Cycle with Wait States
![Page 35: Buses and Parallel Input/Outputcs2121/LectureNotes/15s1/week4_notes.pdf · 7 Computer Buses CPU is connected to memory and I/O devices via data, address and control buses. Data bus](https://reader033.vdocument.in/reader033/viewer/2022042310/5ed7eb3a17e4482306586cca/html5/thumbnails/35.jpg)
35
Parallel Input/Output in AVR
Communication through ports
There are two special instructions designed
for parallel input/output operations
in
out
![Page 36: Buses and Parallel Input/Outputcs2121/LectureNotes/15s1/week4_notes.pdf · 7 Computer Buses CPU is connected to memory and I/O devices via data, address and control buses. Data bus](https://reader033.vdocument.in/reader033/viewer/2022042310/5ed7eb3a17e4482306586cca/html5/thumbnails/36.jpg)
Source: Atmega2560
Data Sheet 36
Atmega2560 Pin Configuration
![Page 37: Buses and Parallel Input/Outputcs2121/LectureNotes/15s1/week4_notes.pdf · 7 Computer Buses CPU is connected to memory and I/O devices via data, address and control buses. Data bus](https://reader033.vdocument.in/reader033/viewer/2022042310/5ed7eb3a17e4482306586cca/html5/thumbnails/37.jpg)
37
Source: Atmega2560 Data Sheet
![Page 38: Buses and Parallel Input/Outputcs2121/LectureNotes/15s1/week4_notes.pdf · 7 Computer Buses CPU is connected to memory and I/O devices via data, address and control buses. Data bus](https://reader033.vdocument.in/reader033/viewer/2022042310/5ed7eb3a17e4482306586cca/html5/thumbnails/38.jpg)
38
AVR PORTs
Can be configured to receive data or send out data
Include physical pins and related circuitry to enable
input/output operations.
Different AVR microcontroller devices have different
port design
ATmega2560 has 100 pins, most of them form eleven
ports for parallel input/output.
Port A to Port H, Port J to Port L
Three I/O memory addresses (in data memory) are
allocated for each port
PORTx for data register
DDRx for data direction register
PINx for port input pins
![Page 39: Buses and Parallel Input/Outputcs2121/LectureNotes/15s1/week4_notes.pdf · 7 Computer Buses CPU is connected to memory and I/O devices via data, address and control buses. Data bus](https://reader033.vdocument.in/reader033/viewer/2022042310/5ed7eb3a17e4482306586cca/html5/thumbnails/39.jpg)
39
Load I/O Location to Register
Syntax: in Rd, A
Operands: 0 d 31, 0 A 63
Operation: Rd I/O(A)
Words: 1
Cycles: 1
Example:
in r25, 0x00 ; read from port A
![Page 40: Buses and Parallel Input/Outputcs2121/LectureNotes/15s1/week4_notes.pdf · 7 Computer Buses CPU is connected to memory and I/O devices via data, address and control buses. Data bus](https://reader033.vdocument.in/reader033/viewer/2022042310/5ed7eb3a17e4482306586cca/html5/thumbnails/40.jpg)
40
Store Register to I/O Location
Syntax: out A, Rr
Operands: 0 r 31, 0 A 63
Operation: I/O(A) Rr
Words: 1
Cycles: 1
Example:
out 0x02, r16 ; write to port A
![Page 41: Buses and Parallel Input/Outputcs2121/LectureNotes/15s1/week4_notes.pdf · 7 Computer Buses CPU is connected to memory and I/O devices via data, address and control buses. Data bus](https://reader033.vdocument.in/reader033/viewer/2022042310/5ed7eb3a17e4482306586cca/html5/thumbnails/41.jpg)
41
One-bit port circuitry
Source: Atmega2560 Data Sheet
![Page 42: Buses and Parallel Input/Outputcs2121/LectureNotes/15s1/week4_notes.pdf · 7 Computer Buses CPU is connected to memory and I/O devices via data, address and control buses. Data bus](https://reader033.vdocument.in/reader033/viewer/2022042310/5ed7eb3a17e4482306586cca/html5/thumbnails/42.jpg)
42
How does it work?
Each port pin consists of three register bits
DDxn, PORTxn, and PINxn.
DDxn bits are accessed at the DDRx I/O address,
PORTxn bits at the PORTx I/O address
PINxn bits at the PINx I/O address.
The DDxn bit in the DDRx Register selects
the direction of this pin.
If DDxn is written logic one, Pxn is configured as
an output pin. If DDxn is written logic zero, Pxn is
configured as an input pin.
![Page 43: Buses and Parallel Input/Outputcs2121/LectureNotes/15s1/week4_notes.pdf · 7 Computer Buses CPU is connected to memory and I/O devices via data, address and control buses. Data bus](https://reader033.vdocument.in/reader033/viewer/2022042310/5ed7eb3a17e4482306586cca/html5/thumbnails/43.jpg)
43
How does it work? (cont.)
When the pin is configured as an input pin,
the pull-up resistor can be
activated/deactivated.
To active pull-up resistor for input pin,
PORTxn needs to be written logic one.
![Page 44: Buses and Parallel Input/Outputcs2121/LectureNotes/15s1/week4_notes.pdf · 7 Computer Buses CPU is connected to memory and I/O devices via data, address and control buses. Data bus](https://reader033.vdocument.in/reader033/viewer/2022042310/5ed7eb3a17e4482306586cca/html5/thumbnails/44.jpg)
44
Sample code for output
.include “m2560def.inc” clr r16 ; clear r16 ser r17 ; set r17 out DDRA, r17 ; set Port A for output operation out PORTA, r16 ; write zeros to Port A nop ; wait (do nothing) out PORTA, r17 ; write ones to Port A
![Page 45: Buses and Parallel Input/Outputcs2121/LectureNotes/15s1/week4_notes.pdf · 7 Computer Buses CPU is connected to memory and I/O devices via data, address and control buses. Data bus](https://reader033.vdocument.in/reader033/viewer/2022042310/5ed7eb3a17e4482306586cca/html5/thumbnails/45.jpg)
45
Sample code for input
.include “m2560def.inc” clr r15 out DDRA, r15 ; set Port A for input operation in r25, PINA ; read Port A cpi r25, 4 ; compare read value with constant breq exit ; branch if r25=4 ... exit: nop ; branch destination (do nothing)
![Page 46: Buses and Parallel Input/Outputcs2121/LectureNotes/15s1/week4_notes.pdf · 7 Computer Buses CPU is connected to memory and I/O devices via data, address and control buses. Data bus](https://reader033.vdocument.in/reader033/viewer/2022042310/5ed7eb3a17e4482306586cca/html5/thumbnails/46.jpg)
46
Example 1
Design a simple control system that can
control a set of LEDs to display a fixed
pattern.
![Page 47: Buses and Parallel Input/Outputcs2121/LectureNotes/15s1/week4_notes.pdf · 7 Computer Buses CPU is connected to memory and I/O devices via data, address and control buses. Data bus](https://reader033.vdocument.in/reader033/viewer/2022042310/5ed7eb3a17e4482306586cca/html5/thumbnails/47.jpg)
47
LED and its operation
![Page 48: Buses and Parallel Input/Outputcs2121/LectureNotes/15s1/week4_notes.pdf · 7 Computer Buses CPU is connected to memory and I/O devices via data, address and control buses. Data bus](https://reader033.vdocument.in/reader033/viewer/2022042310/5ed7eb3a17e4482306586cca/html5/thumbnails/48.jpg)
48
Example 1 (solution)
Consists of a number of steps:
Set a port for the output operation, each pin of the ports is
connected to one LED
Write the pattern value to the port so that it drives the LEDs
to display the related pattern.
.include “m2560def.inc” ser r16 out DDRA, r16 ; set Port A for output ldi r16, 0xAA ; write the pattern out PORTA, r16 end: rjmp end
![Page 49: Buses and Parallel Input/Outputcs2121/LectureNotes/15s1/week4_notes.pdf · 7 Computer Buses CPU is connected to memory and I/O devices via data, address and control buses. Data bus](https://reader033.vdocument.in/reader033/viewer/2022042310/5ed7eb3a17e4482306586cca/html5/thumbnails/49.jpg)
49
Example 2
Design a simple control system that can
control a set of LEDs to display a fixed
pattern for one second then turn the LEDs
off.
![Page 50: Buses and Parallel Input/Outputcs2121/LectureNotes/15s1/week4_notes.pdf · 7 Computer Buses CPU is connected to memory and I/O devices via data, address and control buses. Data bus](https://reader033.vdocument.in/reader033/viewer/2022042310/5ed7eb3a17e4482306586cca/html5/thumbnails/50.jpg)
50
Example 2 (solution)
Consists of a number of steps:
Set a port for the output operation, each pin of the
ports is connected to one LED
Write the pattern value to the port so that it drives
the display of LEDs
Count one second
Write a pattern to set all LEDs off.
![Page 51: Buses and Parallel Input/Outputcs2121/LectureNotes/15s1/week4_notes.pdf · 7 Computer Buses CPU is connected to memory and I/O devices via data, address and control buses. Data bus](https://reader033.vdocument.in/reader033/viewer/2022042310/5ed7eb3a17e4482306586cca/html5/thumbnails/51.jpg)
51
Counting one second
Assume we know that the clock cycle period is 1 ms (very very slow, not a real value). Then we can write a program that executes
single cycle instructions.
Execution of the code will take 1 second if each instruction in the code takes one clock cycle.
An implementation is given in the next slide
33 101
101
![Page 52: Buses and Parallel Input/Outputcs2121/LectureNotes/15s1/week4_notes.pdf · 7 Computer Buses CPU is connected to memory and I/O devices via data, address and control buses. Data bus](https://reader033.vdocument.in/reader033/viewer/2022042310/5ed7eb3a17e4482306586cca/html5/thumbnails/52.jpg)
52
.include “m2560def.inc”
.equ loop_count = 124
.def iH = r25
.def iL = r24
.def countH = r17
.def countL = r16
.macro oneSecondDelay ldi countL, low(loop_count) ; 1 cycle ldi countH, high(loop_count) clr iH ; 1 clr iL loop: cp iL, countL ; 1 cpc iH, countH brsh done ; 1, 2 (if branch) adiw iH:iL, 1 ; 2 nop rjmp loop ; 2 done: .endmacro
Code for one second delay
![Page 53: Buses and Parallel Input/Outputcs2121/LectureNotes/15s1/week4_notes.pdf · 7 Computer Buses CPU is connected to memory and I/O devices via data, address and control buses. Data bus](https://reader033.vdocument.in/reader033/viewer/2022042310/5ed7eb3a17e4482306586cca/html5/thumbnails/53.jpg)
53
Code for Example 2
.include “m2560def.inc” ser r15 out DDRA, r15 ; set Port A for output ldi r15, 0xAA ; write the pattern out PORTA, r15 oneSecondDelay ; 1 second delay ldi r15, 0x00 out PORTA, r15 ; turn off the LEDs end: rjmp end
![Page 54: Buses and Parallel Input/Outputcs2121/LectureNotes/15s1/week4_notes.pdf · 7 Computer Buses CPU is connected to memory and I/O devices via data, address and control buses. Data bus](https://reader033.vdocument.in/reader033/viewer/2022042310/5ed7eb3a17e4482306586cca/html5/thumbnails/54.jpg)
54
Example 3
Design a simple control system that can
control a set of LEDs to display a fixed
pattern specified by the user.
![Page 55: Buses and Parallel Input/Outputcs2121/LectureNotes/15s1/week4_notes.pdf · 7 Computer Buses CPU is connected to memory and I/O devices via data, address and control buses. Data bus](https://reader033.vdocument.in/reader033/viewer/2022042310/5ed7eb3a17e4482306586cca/html5/thumbnails/55.jpg)
55
Example 3 (solution)
Consists of a number of steps:
Set the switches and connect the switches to the
pins of a port
Set the port for input
Read the input
Set another port for the output operation, each pin
of the ports is connected to one LED
Write the pattern value to the port so that it drives
the display of LEDs
![Page 56: Buses and Parallel Input/Outputcs2121/LectureNotes/15s1/week4_notes.pdf · 7 Computer Buses CPU is connected to memory and I/O devices via data, address and control buses. Data bus](https://reader033.vdocument.in/reader033/viewer/2022042310/5ed7eb3a17e4482306586cca/html5/thumbnails/56.jpg)
56
Code for Example 3
.include “m2560def.inc” clr r17 out DDRC, r17 ; set Port C for input ser r17 out PORTC, r17 ; activate the pull up in r17, PINC ; read pattern set by the user ; from the switches ser r16 out DDRA, r16 ; set Port A for output out PORTA, r17 ; write the input pattern end: rjmp end
![Page 57: Buses and Parallel Input/Outputcs2121/LectureNotes/15s1/week4_notes.pdf · 7 Computer Buses CPU is connected to memory and I/O devices via data, address and control buses. Data bus](https://reader033.vdocument.in/reader033/viewer/2022042310/5ed7eb3a17e4482306586cca/html5/thumbnails/57.jpg)
57
Example 4
Design a simple control system that can
control a set of LEDs to display a pattern
specified by the user during the execution.
![Page 58: Buses and Parallel Input/Outputcs2121/LectureNotes/15s1/week4_notes.pdf · 7 Computer Buses CPU is connected to memory and I/O devices via data, address and control buses. Data bus](https://reader033.vdocument.in/reader033/viewer/2022042310/5ed7eb3a17e4482306586cca/html5/thumbnails/58.jpg)
58
Example 4 (solution)
One solution is the processor continuously
checking if there is an input to read. If there
is, then read the input and go to next task,
otherwise the processor stays waiting for
input. Such an approach to handle dynamic
input is called polling.
![Page 59: Buses and Parallel Input/Outputcs2121/LectureNotes/15s1/week4_notes.pdf · 7 Computer Buses CPU is connected to memory and I/O devices via data, address and control buses. Data bus](https://reader033.vdocument.in/reader033/viewer/2022042310/5ed7eb3a17e4482306586cca/html5/thumbnails/59.jpg)
59
Code for Example 4 Set an extra input bit for signal from user when
the input is ready. .include “m2560def.inc” cbi DDRB, 0 ; clear Port B bit 0 for input waiting: sbis PINB, 0 ; if yes skip to the next instruction rjmp waiting ; waiting clr r17 out DDRC, r17 ; set Port C for input ser r17 out PORTC, r17 ; activate the pull up in r17, PINC ; read pattern set by the user ; from the switches ser r16 out DDRA, r16 ; set Port A for output out PORTA, r17 end: rjmp end
![Page 60: Buses and Parallel Input/Outputcs2121/LectureNotes/15s1/week4_notes.pdf · 7 Computer Buses CPU is connected to memory and I/O devices via data, address and control buses. Data bus](https://reader033.vdocument.in/reader033/viewer/2022042310/5ed7eb3a17e4482306586cca/html5/thumbnails/60.jpg)
60
Reading Materials
Chapter 7: Computer Buses and Parallel
Input and Output. Microcontrollers and
Microcomputers by Fredrick M. Cady.
ATmega2560 Data Sheet.
AVR CPU Core
PORTS
![Page 61: Buses and Parallel Input/Outputcs2121/LectureNotes/15s1/week4_notes.pdf · 7 Computer Buses CPU is connected to memory and I/O devices via data, address and control buses. Data bus](https://reader033.vdocument.in/reader033/viewer/2022042310/5ed7eb3a17e4482306586cca/html5/thumbnails/61.jpg)
61
Homework
1. Refer to the AVR Instruction Set manual, study the following instructions:
• Arithmetic and logic instructions ser
• Data transfer instructions in, out
Bit operations sbi, cbi
Program control instructions sbic, sbis
MCU control instructions nop
![Page 62: Buses and Parallel Input/Outputcs2121/LectureNotes/15s1/week4_notes.pdf · 7 Computer Buses CPU is connected to memory and I/O devices via data, address and control buses. Data bus](https://reader033.vdocument.in/reader033/viewer/2022042310/5ed7eb3a17e4482306586cca/html5/thumbnails/62.jpg)
62
Homework
2. To make the AVR processor skip an amount
of time without doing anything, we use nop
instruction in the program shown in the
example in this lecture. Can we use
mov Rd, Rd to replace the nop instruction?
Any difference?
![Page 63: Buses and Parallel Input/Outputcs2121/LectureNotes/15s1/week4_notes.pdf · 7 Computer Buses CPU is connected to memory and I/O devices via data, address and control buses. Data bus](https://reader033.vdocument.in/reader033/viewer/2022042310/5ed7eb3a17e4482306586cca/html5/thumbnails/63.jpg)
63
Homework 3.One of very common functions a microcontroller
application usually has is timing control. The function
below is such a timing control function. Convert it to
assembly program.
static int iSeconds, iMinutes: void timing-control(void) { ++iSeconds; if (iSeconds >= 60) { iSeconds = 0; ++iMinutes; if (iMinutes > 30) { //do something //and reset the timer } } }