dsp56800e instruction set n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
DSP56800E Instruction Set PowerPoint Presentation
Download Presentation
DSP56800E Instruction Set

Loading in 2 Seconds...

play fullscreen
1 / 52

DSP56800E Instruction Set - PowerPoint PPT Presentation


  • 288 Views
  • Uploaded on

DSP56800E Instruction Set. Instruction set can be categorized as follows: Multiplication: integer and fractional multiplication and multiply-accumulate operations. Arithmetic: all arithmetic operations other than multiplication. Shifting: shift and rotate operations.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'DSP56800E Instruction Set' - lotus


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
dsp56800e instruction set
DSP56800E Instruction Set
  • Instruction set can be categorized as follows:
    • Multiplication: integer and fractional multiplication and multiply-accumulate operations.
    • Arithmetic: all arithmetic operations other than multiplication.
    • Shifting: shift and rotate operations.
    • Logic: Boolean logic functions, such as AND, OR, and NOT.
    • AGU arithmetic: address calculation operations.
    • Bit manipulation: instructions for manipulating values at the bit levels.
    • Looping: instructions that support iterative looping.
    • Move: data movement operations.
    • Program control: instructions that control execution flow.
  • Note: most instructions involve memory access

Introduction to 5685x Series

memory access
Memory Access
  • Move Instructions that access data or program memory.
  • Arithmetic or bit-manipulation instructions where one operand is located in data memory.
  • Parallel move instructions that perform an operation and move data to or from memory simultaneously

Introduction to 5685x Series

memory access taking one cycle
Memory Access Taking One Cycle
  • One instruction fetch
  • One read from data memory
  • One write to data memory
  • Two reads from data memory
  • One instruction fetch and one read from data memory
  • One instruction fetch and one write to data memory
  • One instruction fetch and two reads from data memory

Introduction to 5685x Series

data type
Data Type

Least Significant Portion (LSP)

0x000A

Most Significant Portion (MSP)

0x000B

15

0

7

  • Integer Types:
    • Byte (8-bit)
    • Word (16-bit)
    • Long Word (32-bit)
  • Fractional Data Types
    • Word
    • Long Word

S

S

.

.

Upper Byte

Lower Byte

Word

0

15

S

.

Long Word

31

0

S

.

MSP

LSP

16-bit

Introduction to 5685x Series

data formats
Data Formats
  • Signed Integer
  • Unsigned Integer
  • Signed Fractional
  • Unsigned Fractional
  • Byte (N = 8)
  • Word (N =16)
  • Long Word (N = 32)

Introduction to 5685x Series

integer vs fractional
Integer Vs Fractional

Fractional Value = Integer Value/215

Introduction to 5685x Series

memory space syntax
Memory Space Syntax
  • X: indicates accessing data memory
  • P: indicates accessing program memory
  • The size of data accessed from memory is indicated by a suffix:
    • “.W” suffix—indicates word memory accesses
    • “.L” suffix—indicates long memory accesses
    • “.B” suffix—indicates byte memory accesses
    • “.BP” suffix—indicates byte memory accesses

The difference between .B and .BB is the way byte is accessed in the Word memory location

Introduction to 5685x Series

instructions accessing data memory signed unsigned moves
Instructions Accessing Data MemorySigned & Unsigned Moves

Example:

MOVE.L A10,X:(R3+$1000)

Introduction to 5685x Series

addressing modes summary
Addressing Modes - Summary
  • Immediate
  • Absolute
  • Direct
  • Indirect
  • Indexed
  • Circular

Introduction to 5685x Series

addressing modes
Addressing Modes
  • Immediate
    • Value of operand (data) specified directly in instruction.
    • Examples: MOVE.W #$4301, A ; Load accumulator A with 31

MOVE.W #4301, A; Load accumulator A with 4301

MOVE.W #%1010, A; Load accumulator A with 16-bit binary $000A.

  • Absolute
    • Address of operand specified directly in instruction
    • MOVE.W X:$FF22, A; Load A with number stored in address $FF22 of memory “X”.
  • Register-Direct
    • Example: MOVE R1, A; Operands are internal registers (i.e: R1, A)
    • Data stored in registers
  • Register-Indirect Addressing or Indirect Addressing:
    • Register contains address of (points to) memory location in which data is stored
    • Example: MOVE.W X:(R1), A
  • Indexed Addressing
    • Similar to indirect addressing but pointer incremented by an offset before accessing memory. Example: MOVE.W X:(R1 + 5), A

Introduction to 5685x Series

circular address
Circular Address
  • Normal buffer except when reaching the end, it loops back to the starting point
    • Define starting point
    • Define buffer size

Introduction to 5685x Series

addressing modes dsp 56858
Addressing Modes – DSP 56858

Introduction to 5685x Series

notation used
Notation Used

Introduction to 5685x Series

indirect addressing no update rn
Indirect Addressing – No Update: (Rn)

Introduction to 5685x Series

indirect addressing post update by offset n rn n r3 n3
Indirect Addressing – Post Update by Offset N(Rn)+N, (R3)+N3

Introduction to 5685x Series

index addressing by 3 bit displacement rrr x sp x
Index Addressing by 3-bit Displacement:(RRR+x), (SP-x)
  • Offset from 0 to 7 when R0, R1, R2, R3, R4, R5 or N is used
  • Offset from –1 to –8 when SP is used
  • Offset embedded within the instruction

Introduction to 5685x Series

index addressing by 3 bit displacement sp xx
Index Addressing by 3-bit Displacement: (SP-xx)
  • Offset always from –1 to –64 when SP is used
  • Offset embedded within the instruction

Introduction to 5685x Series

index addressing by 16 bit displacement rn xxxx
Index Addressing by 16-bit Displacement: (Rn+xxxx)
  • Offset as two’s complement
  • Offset embedded within the instruction as a second word

Introduction to 5685x Series

index addressing by 24 bit displacement rn xxxxxx
Index Addressing by 24-bit Displacement: (Rn+xxxxxx)
  • Offset as two’s complement
  • Offset embedded within the instruction as 2 words

Introduction to 5685x Series

instructions accessing data memory signed unsigned moves1
Instructions Accessing Data MemorySigned & Unsigned Moves

Example:

MOVE.L A10,X:(R3+$1000)

Introduction to 5685x Series

immediate addressing modes
Immediate Addressing Modes
  • 4- bit immediate data: #x
    • In AGU arithmetic or ALU shifting, it is zero extended to form 24-bit value (considering unsigned value)
  • 5-bit immediate data: #xx
    • If used to load the accumulator it is sign extended
    • If used in ALU arithmetic instructions it is zero extended.
  • 6-bit immediate data: #xx
    • Unsigned value
    • Zero extended
  • 7-bit immediate data: #xx
    • Signed value
    • Sign extended
  • 16-bit immediate data: #xxxx
    • Sign extended when using MOVE.L
    • Zero extended when using MOVEU.W
  • 32-bit immediate data: #xxxxxxxx
    • Truncated when moved to 24-bit register
    • Sign extended when moved to accumulator

Introduction to 5685x Series

absolute address modes
Absolute Address Modes
  • Specify address of the operand directly in a field of the instruction
    • Absolute short address: aa
    • I/O short address:<<pp
    • 16-bit absolute address: xxxx
    • 24-bit absolute address

Introduction to 5685x Series

absolute short address aa
Absolute Short Address: aa
  • Operand occupies 6-bit in the instruction
  • Zero extended to 24-bit
  • Used to direct access the first 64 locations in memory

Introduction to 5685x Series

i o short address pp
I/O Short Address: <<pp
  • Instruction specifies only the 6 LSBs of the effective address
  • The upper 18 bits are hired wired to a specific area of memory, for the DSP56858 it is $1FFFC0
  • Used to directly access on-chip peripherals

Introduction to 5685x Series

16 bit absolute address xxxx
16-bit Absolute Address: xxxx

MOVE.W:$8079,X0

  • Zero extended to 24-bit

Introduction to 5685x Series

24 bit absolute address xxxxxx
24-bit Absolute Address: xxxxxx

Introduction to 5685x Series

register direct mode
Register Direct Mode
  • At least one of the operand is either in AGU, ALU, or control registers.
  • Example:
    • MOVE.W R0, X0

Introduction to 5685x Series

agu modulo addressing
AGU Modulo Addressing
  • Modulo Addressing Features:
    • Available for byte, word, and long accesses
    • Available for the R0 and R1 pointers only.
    • Address arithmetic is performed to calculate the effective address
    • Supports buffer sizes from 2 locations to 16384 words (2 to 8192 for long values)
  • M = M01 + 1 = buffer size
  • Find k such that 2k >= M
  • Lower Boundary obtained by setting

low-order k bits to zero in R0 and R1

Introduction to 5685x Series

agu modulo addressing m01 configuration
AGU Modulo Addressing: M01 configuration

Introduction to 5685x Series

modulo addressing example
Modulo Addressing Example

Example:

Buffer size = 9

M01 = $0008

R0 modulo

  • Works for decrementing addressing modes too
  • Modulo operation works correctly even if the pointer does not land exactly on upper or lower boundary
  • Modulo buffer sizes are not constrained to a power of two

Introduction to 5685x Series

byte word addressing
Byte & Word Addressing
  • Word addressing can be used to access
    • Byte
    • Word
    • Long Word
  • Byte addressing can be used to access bytes only

Introduction to 5685x Series

byte pointers vs word pointers
Byte Pointers Vs Word Pointers
  • Word pointers can be used to access a data element of any size, so they should be used when mixed data is accessed (such as in data structures)
    • Disadvantage: Word pointer in a post-update addressing mode may result in skipping some bytes that cannot be accessed.
  • Using byte pointers fixes this problem.

Introduction to 5685x Series

accessing byte values using byte pointers
Accessing Byte Values using Byte Pointers
  • .BP suffix used to specify a byte pointer (byte address) –

Examples: MOVE.BP; MOVEU.BP; ADD.BP

  • The address contained in the AGU specifies a byte address
  • The LSB of the AGU register determines lower or higher byte
  • The address is right shifted to give the correct word address

Introduction to 5685x Series

accessing byte values using byte pointers1
Accessing Byte Values using Byte Pointers

Example:

Introduction to 5685x Series

accessing word values using word pointers
Accessing Word Values Using Word Pointers

Word memory accesses always use an address as a word pointer

Example

Word (16-bit) variables are naturally aligned correctly using word addressing ;each address is treated as referring to a 16-bit data value.

Data accesses to program memory are always treated as word accesses and behave the same as word accesses to data memory.

Introduction to 5685x Series

accessing long word values using word pointers
Accessing Long Word Values Using Word Pointers

Long Word memory accesses: word pointeralwaysaligned on an even word address except for the Stack Pointer (SP)

In an addressing mode that uses the stack pointer, the effective address is the odd address that contains the upper word of the 32-bit value

Even if SP points to odd address still the long word is aligned to even word address

Introduction to 5685x Series

accessing byte values using word pointers
Accessing Byte Values using Word Pointers

Example:

  • MOVE.B and MOVEU.B instructions used with an offset to address register
  • The offset contained in the instruction is first shifted left arithmetically
  • The address contained in AGU register is added to the shifted immediate offset to get the word address
  • The least significant bit (LSB) of the immediate offset determines which byte at the calculated word address is to be accessed

Introduction to 5685x Series

instructions accessing data memory moving words from memory to registers
Instructions Accessing Data MemoryMoving Words from Memory to Registers
  • AGU and Program Controller registers almost always deal with unsigned values (MOVEU.W).
  • For ALU registers, MOVE.W is most frequently used.

Example 1:

MOVEU.W X:(R0+$21), R3

Example 2:

MOVE.W X:(R0+$20), A

Introduction to 5685x Series

instructions accessing program memory
Instructions Accessing Program Memory
  • Data size accessed from program memory is always 16-bit.
  • .W suffix used in all times.
  • Rules are the same as the ones for accessing data memory
  • Examples:
    • MOVE.W P:(R0)+,X0 ; Read 16-bit signed word from program memory
    • MOVEU.W P:(R0)+,R3 ; Read 16-bit unsigned word from program memory
    • MOVE.W R2,P:(R0)+ ; Write 16-bit word to program memory

Introduction to 5685x Series

instructions with operand in data memory
Instructions with Operand in Data Memory
  • Operand located in data memory.
  • Example: ADD.W X:$4000, A
    • Steps involved
      • Move operand from memory location to temporary register inside ALU
      • Add that to Accumulator A
      • Store result back in A

Introduction to 5685x Series

parallel moves
Parallel Moves
  • Two Types:
    • Single parallel move
    • Dual parallel read
  • One or two word-size moves occur in parallel with an arithmetic operation
    • One write (single parallel move)
    • One read (single parallel move)
    • Two read operations (dual parallel move)
  • Both allow execution using a single instruction and in one instruction cycle.
  • Restricted to arithmetic operations in the ALU.

Introduction to 5685x Series

parallel moves1
Parallel Moves

Dual Parallel Read

Single Parallel Move

Introduction to 5685x Series

parallel moves fir filter
Parallel Moves – FIR Filter

+

+

R1

R0

CLR A X:(R1)+, Y1

DO #No-1, Loop

MAC Y1, X0, A X:(R1)+,Y1

MOVE.W X:(R0)+, X0

Loop

AGU

1

Y1

X0

R1

X

1

R0

ALU

+

Accumulator

Data Memory

Introduction to 5685x Series

data alignment
Data Alignment
  • When Reading Byte, Word or Long Word from memory into registers they are aligned in a specific way.
    • Data Alignment in Accumulators
    • Data Alignment in Data Registers
    • Data Alignment in 24-bit AGU and Control Registers
    • Data Alignment in 16-bit AGU and Control Registers

Introduction to 5685x Series

data alignment in accumulators
Data Alignment in Accumulators

Introduction to 5685x Series

16 bit multiplication
16-bit Multiplication

Signed Fractional 16-bit Multiplication

Signed Integer 16-bit Multiplication

Introduction to 5685x Series

data alignment in data registers
Data Alignment in Data Registers

Supported data types in data registers:X0, Y0, Y1

Introduction to 5685x Series

data alignment in 16 bit agu and control registers
Data Alignment in 16-bit AGU and Control Registers

Upper 16 bits are discarded

Regsisters: N3, M01, LC and LC2

Introduction to 5685x Series