31
ECE 448 – FPGA and ASIC Design with VHDL Lecture 14 PicoBlaze Instruction Set

Lecture 14 PicoBlaze Instruction Set

  • Upload
    fisk

  • View
    68

  • Download
    1

Embed Size (px)

DESCRIPTION

Lecture 14 PicoBlaze Instruction Set. ECE 448 – FPGA and ASIC Design with VHDL. Required reading. P. Chu, FPGA Prototyping by VHDL Examples Chapter 15 PicoBlaze Assembly Code Development. Recommended reading. K. Chapman , PicoBlaze for Spartan-6, Virtex-6, and 7-Series (KCPSM6). - PowerPoint PPT Presentation

Citation preview

Page 1: Lecture 14 PicoBlaze Instruction Set

ECE 448 – FPGA and ASIC Design with VHDL

Lecture 14

PicoBlaze Instruction Set

Page 2: Lecture 14 PicoBlaze Instruction Set

2ECE 448 – FPGA and ASIC Design with VHDL

Required reading

• P. Chu, FPGA Prototyping by VHDL Examples

Chapter 15 PicoBlaze Assembly Code Development

Recommended reading

• K. Chapman, PicoBlaze for Spartan-6, Virtex-6, and

7-Series (KCPSM6)

Page 3: Lecture 14 PicoBlaze Instruction Set

3

PicoBlaze-3 Programming Model

ECE 448 – FPGA and ASIC Design with VHDL

Page 4: Lecture 14 PicoBlaze Instruction Set

4

PicoBlaze-6 Programming Model

ECE 448 – FPGA and ASIC Design with VHDL

FFC

FFD

FFE

FFF

Bank ABank B

Page 5: Lecture 14 PicoBlaze Instruction Set

Syntax and Terminology

Syntax Example Definition

sX

KK

PORT(KK)

PORT((sX))

RAM(KK)

s7

ab

PORT(2)

PORT((sa))

RAM(4)

Value at register 7

Value ab (in hex)

Input value from port 2

Input value from port specified by register a

Value from RAM location 4

Page 6: Lecture 14 PicoBlaze Instruction Set

Addressing modes

Direct mode

ADD sa, sf

INPUT s5, 2a

sa + sf sa

PORT(2a) s5

Indirect mode

STORE s3, (sa)

INPUT s9, (s2)

s3 RAM((sa))

PORT((s2)) s9

s7 – 07 s7

s2 + 08 + C s2

Immediate mode

SUB s7, 07

ADDCY s2, 08

Page 7: Lecture 14 PicoBlaze Instruction Set

PicoBlaze ALU Instruction Set Summary (1)

Page 8: Lecture 14 PicoBlaze Instruction Set

PicoBlaze ALU Instruction Set Summary (2)

Page 9: Lecture 14 PicoBlaze Instruction Set

PicoBlaze ALU Instruction Set Summary (3)

Page 10: Lecture 14 PicoBlaze Instruction Set

Logic instructions

1. AND AND sX, sY

sX and sY => sX AND sX, KK

sX and KK => sX

2. OR OR sX, sY

sX or sY => sX OR sX, KK

sX or KK => sX

3. XOR XOR sX, sY

sX xor sY => sX XOR sX, KK

sX xor KK => sX

IMM, DIR

C Z

IMM, DIR

IMM, DIR

0

0

0

Page 11: Lecture 14 PicoBlaze Instruction Set

Arithmetic Instructions (1)

IMM, DIR

C Z

Addition

ADD sX, sY

sX + sY => sX

ADD sX, KK

sX + KK => sX

ADDCY sX, sY

sX + sY + CARRY => sX

ADDCY sX, KK

sX + KK + CARRY => sX

Page 12: Lecture 14 PicoBlaze Instruction Set

Arithmetic Instructions (2)

Subtraction

SUB sX, sY

sX – sY => sX

SUB sX, KK

sX – KK => sX

SUBCY sX, sY

sX – sY – CARRY => sX

SUBCY sX, KK

sX – KK – CARRY => sX

IMM, DIR

C Z

Page 13: Lecture 14 PicoBlaze Instruction Set

Test and Compare Instructions

TEST

TEST sX, sY

sX and sY => none

TEST sX, KK

sX and KK => none

COMPARE

COMPARE sX, sY

sX – sY => none

COMPARE sX, KK

sX – KK => none

C Z

IMM, DIR

IMM, DIR

C = odd parity of

the result

Page 14: Lecture 14 PicoBlaze Instruction Set

Data Movement Instructions (1)

LOAD

LOAD sX, sY

sY => sX

LOAD sX, KK

KK => sX

IMM, DIR

C Z

- -

Page 15: Lecture 14 PicoBlaze Instruction Set

FETCH

FETCH sX, KK

RAM(KK) => sX

FETCH sX, (sY)

RAM((sY)) => sX

Data Movement Instructions (2)

DIR, IND

C Z

- -STORE

STORE sX, KK

sX => RAM(KK)

STORE sX, (sY)

sX => RAM((sY))

DIR, IND

- -

Page 16: Lecture 14 PicoBlaze Instruction Set

Example 1: Clear Data RAM

;=========================================================

; routine: clr_data_mem

; function: clear data ram

; temp register: data, s2

;=========================================================

clr_data_mem:

load s2, 40 ;unitize loop index to 64

load s0, 00

clr_mem_loop:

sub s2, 01 ;dec loop index

store s0, (s2)

jump nz, clr_mem_loop ;repeat until s2=0

return

Page 17: Lecture 14 PicoBlaze Instruction Set

Data Movement Instructions (3)

INPUT

INPUT sX, KK

sX <= PORT(KK)

INPUT sX, (sY)

sX <= PORT((sY))

OUTPUT

OUTPUT sX, KK

PORT(KK) <= sX

OUTPUT sX, (sY)

PORT((sY)) <= sX

DIR, IND

DIR, IND

C Z- -

- -

Page 18: Lecture 14 PicoBlaze Instruction Set

Edit instructions - Shifts

*All shift instructions affect Zero and Carry flags

Page 19: Lecture 14 PicoBlaze Instruction Set

Edit instructions - Rotations

*All rotate instructions affect Zero and Carry flags

Page 20: Lecture 14 PicoBlaze Instruction Set

Program Flow Control Instructions (1)

JUMP AAA

PC <= AAA

JUMP C, AAA

if C=1 then PC <= AAA else PC <= PC + 1

JUMP NC, AAA

if C=0 then PC <= AAA else PC <= PC + 1

JUMP Z, AAA

if Z=1 then PC <= AAA else PC <= PC + 1

JUMP NZ, AAA

if Z=0 then PC <= AAA else PC <= PC + 1

Page 21: Lecture 14 PicoBlaze Instruction Set

Program Flow Control Instructions (2)

CALL AAA

TOS <= TOS+1; STACK[TOS] <= PC; PC <= AAA

CALL C | Z , AAA if C | Z =1 then TOS <= TOS+1; STACK[TOS] <= PC; PC <= AAA else PC <= PC + 1

CALL NC | NZ , AAA if C | Z =0 then TOS <= TOS+1; STACK[TOS] <= PC; PC <= AAA else PC <= PC + 1

Page 22: Lecture 14 PicoBlaze Instruction Set

Program Flow Control Instructions (3)

RETURN

PC <= STACK[TOS] + 1; TOS <= TOS - 1

RETURN C | Z if C | Z =1 then PC <= STACK[TOS] + 1; TOS <= TOS - 1 else PC <= PC + 1

RETURN NC | NZ if C | Z =0 then PC <= STACK[TOS] + 1; TOS <= TOS - 1 else PC <= PC + 1

Page 23: Lecture 14 PicoBlaze Instruction Set

Subroutine Call Flow

Page 24: Lecture 14 PicoBlaze Instruction Set

Interrupt Related Instructions

RETURNI ENABLE

PC <= STACK[TOS] ; TOS <= TOS – 1;

I <= 1; C<= PRESERVED C; Z<= PRESERVED Z

RETURNI DISABLE

PC <= STACK[TOS] ; TOS <= TOS – 1;

I <= 0; C<= PRESERVED C; Z<= PRESERVED Z

ENABLE INTERRUPT

I <=1;

DISABLE INTERRUPT

I <=0;

Page 25: Lecture 14 PicoBlaze Instruction Set

Interrupt Flow

ECE 448 – FPGA and ASIC Design with VHDL

Page 26: Lecture 14 PicoBlaze Instruction Set

26

PicoBlaze Development Environments

ECE 448 – FPGA and ASIC Design with VHDL

Page 27: Lecture 14 PicoBlaze Instruction Set

27

KCPSM6 Assembler Files

ECE 448 – FPGA and ASIC Design with VHDL

KCPSM6.EXE

Page 28: Lecture 14 PicoBlaze Instruction Set

28

Directives of Assembly Language

ECE 448 – FPGA and ASIC Design with VHDL

Equating symbolic name

for an I/O port ID.

keyboard DSIN $0E

switch DSIN $0F

LED DSOUT $15

N/A

Page 29: Lecture 14 PicoBlaze Instruction Set

29

Differences between Mnemonics of Instructions

ECE 448 – FPGA and ASIC Design with VHDL

Page 30: Lecture 14 PicoBlaze Instruction Set

30

Differences between Mnemonics of Instructions

ECE 448 – FPGA and ASIC Design with VHDL

Page 31: Lecture 14 PicoBlaze Instruction Set

31

Differences between Programs

ECE 448 – FPGA and ASIC Design with VHDL