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

Lecture 14 PicoBlaze Instruction Set

Feb 06, 2016

Download

Documents

Arnold Burger

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
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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