Alu – arithmetic logic unit, Status register, Atmega128(l) – Rainbow Electronics ATmega128L User Manual

Page 9

Advertising
background image

9

ATmega128(L)

2467B–09/01

an arithmetic operation, the Status Register is updated to reflect information about the
result of the operation.

Program flow is provided by conditional and unconditional jump and call instructions,
able to directly address the whole address space. Most AVR instructions have a single
16-bit word format. Every program memory address contains a 16- or 32-bit instruction.

Program Flash memory space is divided in two sections, the Boot program section and
the Application Program section. Both sections have dedicated Lock Bits for write and
read/write protection. The SPM instruction that writes into the Application Flash memory
section must reside in the Boot program section.

During interrupts and subroutine calls, the return address program counter (PC) is
stored on the stack. The stack is effectively allocated in the general data SRAM, and
consequently the stack size is only limited by the total SRAM size and the usage of the
SRAM. All user programs must initialize the SP in the reset routine (before subroutines
or interrupts are executed). The stack pointer SP is read/write accessible in the I/O
space. The data SRAM can easily be accessed through the five different addressing
modes supported in the AVR architecture.

The memory spaces in the AVR architecture are all linear and regular memory maps.

A flexible interrupt module has its control registers in the I/O space with an additional
global interrupt enable bit in the status register. All interrupts have a separate interrupt
vector in the interrupt vector table. The interrupts have priority in accordance with their
interrupt vector position. The lower the interrupt vector address, the higher the priority.

The I/O memory space contains 64 addresses which can be accessed directly, or as the
Data Space locations following those of the Register file, $20 - $5F. In addition, the
ATmega128 has Extended I/O space from $60 - $FF in SRAM where only the
ST/STS/STD and LD/LDS/LDD instructions can be used.

ALU – Arithmetic Logic
Unit

The high-performance AVR ALU operates in direct connection with all the 32 general
purpose working registers. Within a single clock cycle, arithmetic operations between
general-purpose registers or between a register and an immediate are executed. The
ALU operations are divided into three main categories - arithmetic, logical, and bit-func-
tions. Some implementations of the architecture also provide a powerful multiplier
supporting both signed/unsigned multiplication and fractional format. See the “Instruc-
tion Set” section for a detailed description.

Status Register

The Status Register contains information about the result of the most recently executed
arithmetic instruction. This information can be used for altering program flow in order to
perform conditional operations. Note that the status register is updated after all ALU
operations, as specified in the Instruction Set Reference. This will in many cases
remove the need for using the dedicated compare instructions, resulting in faster and
more compact code.

The status register is not automatically stored when entering an interrupt routine and
restored when returning from an interrupt. This must be handled by software.

The AVR status register – SREG – is defined as:

Bit

7

6

5

4

3

2

1

0

I

T

H

S

V

N

Z

C

SREG

Read/Write

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

Initial value

0

0

0

0

0

0

0

0

Advertising