Top Banner
Class 9 Copyright 2011 Greg Tumbush Ver 1.0 1 PicoBlaze Hello World project using the PicoBlaze Agenda
37

PicoBlaze Hello World project using the PicoBlaze 2014/Class_9.pdfPicoBlaze Function Blocks (cont.) •CAL/RETURN Stack –Stores up to 31 instruction addresses •Allows up to 31

Mar 05, 2021

Download

Documents

dariahiddleston
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: PicoBlaze Hello World project using the PicoBlaze 2014/Class_9.pdfPicoBlaze Function Blocks (cont.) •CAL/RETURN Stack –Stores up to 31 instruction addresses •Allows up to 31

Class 9 Copyright 2011 Greg Tumbush Ver 1.0 1

• PicoBlaze • Hello World project using the PicoBlaze

Agenda

Page 2: PicoBlaze Hello World project using the PicoBlaze 2014/Class_9.pdfPicoBlaze Function Blocks (cont.) •CAL/RETURN Stack –Stores up to 31 instruction addresses •Allows up to 31

Class 9 Copyright 2011 Greg Tumbush Ver 1.0 2

•Why? • Firmware is easier to maintain/modify/deploy • If the constraints of you system can be met by a processor, no reason build dedicated hardware. • Customization – e.g. connectivity to FPGA on-chip functions • Obsolescence Mitigation – soft processor RTL can be purchased to fulfill product lifespan requirements. • Multiple components can be combined for cost and count reduction.

• Multiple processers on same FPGA to control particular functions. • Hardware Acceleration – Slow SW algorithm can be moved to custom HW co-processor and interfaced to processor.

• Why Not? • Design tools more complex as integration of HW/SW.

• What? • ARM, Tensilica, Xilinx, etc. market embedded processors

• How? •Distributed as hard macro or soft core

Embedded Processor

Page 3: PicoBlaze Hello World project using the PicoBlaze 2014/Class_9.pdfPicoBlaze Function Blocks (cont.) •CAL/RETURN Stack –Stores up to 31 instruction addresses •Allows up to 31

Class 9 Copyright 2011 Greg Tumbush Ver 1.0 3

Xilinx’s Embedded Processors • PicoBlaze

• 8-bit RISC • Distributed as a soft core • Can use the EDK or a free DOS based EDK • Supplied in VHDL

• MicroBlaze • 32-bit RISC Harvard • Distributed as a soft core • Requires Xilinx Embedded Developer Kit (EDK) • DO-254 Compliant version available from Logicircuit

• PowerPC • 32-bit RISC • Instantiated in some higher end FPGAs • Requires Xilinx Embedded Developer Kit (EDK) • PLC Interface

• ARM • Dual core Cortex-A9 MPCore processors • Each run up to 800MHz • AMBA-AXI Interface

Page 4: PicoBlaze Hello World project using the PicoBlaze 2014/Class_9.pdfPicoBlaze Function Blocks (cont.) •CAL/RETURN Stack –Stores up to 31 instruction addresses •Allows up to 31

Class 9 Copyright 2011 Greg Tumbush Ver 1.0 4

The PicoBlaze Embedded Processor • Downloadable from the 4211 web site or http://www.xilinx.com/products/ipcenter/picoblaze • Core is kcpsm3.v (VHDL version also available) • Uses block ram configured as a PROM for program memory. • Occupies 96 slices or about 2% of the FPGA on our boards • Program memory space occupies 5% of block RAM • 57 Instructions • Up to 200MHz or 100MIPS on a Virtex-II Pro FPGA • Free assembler

Page 5: PicoBlaze Hello World project using the PicoBlaze 2014/Class_9.pdfPicoBlaze Function Blocks (cont.) •CAL/RETURN Stack –Stores up to 31 instruction addresses •Allows up to 31

Class 9 Copyright 2011 Greg Tumbush Ver 1.0 5

PicoBlaze Block Diagram

1K x 18

Block

Ram

PCaddress 10 31x10

Stack

10

10

Instruction

Decoder

18

interrupt

64x8

Scratchpad

RAM

16x8

General

Purpose

Registers

8in_port 8

8

ALU

IE

C

z

out_port8

port_id8

clk

reset

instruction

read_strobe

write_strobe

interrupt_ack

Page 6: PicoBlaze Hello World project using the PicoBlaze 2014/Class_9.pdfPicoBlaze Function Blocks (cont.) •CAL/RETURN Stack –Stores up to 31 instruction addresses •Allows up to 31

PicoBlaze Function Blocks

• General Purpose Registers – 16 Byte wide registers (s0 – sF) – Can be renamed for better program clarity – No registers are reserved or have priority – Each result is computed in specified register

• 1024 Instruction PROM – Instructions are 18 bits wide – Instructions are compiled within the FPGA design and automatically loaded

during FPGA config. – Can update code w/o FPGA design recompile.

• ALU – 8 bits wide – Addition and Subtraction – Bitwise AND, OR, and XOR – Arithmetic compare and bitwise test operations – Shift and Rotate operations

Source: Xilinx PicoBlaze User Guide 6

Page 7: PicoBlaze Hello World project using the PicoBlaze 2014/Class_9.pdfPicoBlaze Function Blocks (cont.) •CAL/RETURN Stack –Stores up to 31 instruction addresses •Allows up to 31

PicoBlaze Function Blocks (cont.)

• Flags – ZERO: indicates results of last op. resulted in zero. – CARRY: depending on last instruction, indicates various conditions

• Scratchpad RAM – 64 Byte – Accessed via the STORE or FETCH commands. – Directly or Indirectly accessable

• I/O – Up to 256 input or output or combination of

• PC – Points to the next instruction – Automatically increments to next instruction – JUMP, CALL, RETURN, and RETURNI instructions and Interrupt and

Reset Events modify auto increment behavior.

Source: Xilinx PicoBlaze User Guide 7

Page 8: PicoBlaze Hello World project using the PicoBlaze 2014/Class_9.pdfPicoBlaze Function Blocks (cont.) •CAL/RETURN Stack –Stores up to 31 instruction addresses •Allows up to 31

PicoBlaze Function Blocks (cont.)

• CAL/RETURN Stack

– Stores up to 31 instruction addresses

• Allows up to 31 nested CALL sequences

• Interrupt

– Optional asynchronous (w.r.t. instruction cycle) input.

• Reset

– Automatically reset after FPGA configuarion

Source: Xilinx PicoBlaze User Guide 8

Page 9: PicoBlaze Hello World project using the PicoBlaze 2014/Class_9.pdfPicoBlaze Function Blocks (cont.) •CAL/RETURN Stack –Stores up to 31 instruction addresses •Allows up to 31

PicoBlaze Ports

Source: Xilinx PicoBlaze User Guide 9

User Level

Subfunctions

Can also use dist. ROM if all block ROM used

Page 10: PicoBlaze Hello World project using the PicoBlaze 2014/Class_9.pdfPicoBlaze Function Blocks (cont.) •CAL/RETURN Stack –Stores up to 31 instruction addresses •Allows up to 31

Class 9 Copyright 2011 Greg Tumbush Ver 1.0 10

port_id and in_port

PicoBlaze

in_port8 read_strobe

port_id 8

...

clk

instruction INPUT s0, (s7)

port_id contents of register s7

mux_out

mux_out_q

Valid Data

Valid Data

read_strobe

Register s0 Valid Data

mux_out

FPGA Logic

Indirect Addressing

0 1 2 3

Should register

Page 11: PicoBlaze Hello World project using the PicoBlaze 2014/Class_9.pdfPicoBlaze Function Blocks (cont.) •CAL/RETURN Stack –Stores up to 31 instruction addresses •Allows up to 31

Class 9 Copyright 2011 Greg Tumbush Ver 1.0 11

port_id and out_port

PicoBlazeout_port

write_strobe

port_id 8

clk

instruction OUTPUT s0, 65

port_id 65

out_port Contents of Register s0

write_strobe

Q

8D Q

EN

8 Q

Contents of Register s0

address of register R1, (constant)

R1

Page 12: PicoBlaze Hello World project using the PicoBlaze 2014/Class_9.pdfPicoBlaze Function Blocks (cont.) •CAL/RETURN Stack –Stores up to 31 instruction addresses •Allows up to 31

Performance

• The PicoBlaze on a Spartan-3 FPGA has a maximum clock of 125.3MHz

– Fully static, i.e. operates down to DC.

• All instructions execute in two clock cycles.

Class 9 Copyright 2011 Greg Tumbush Ver 1.0

12

Page 13: PicoBlaze Hello World project using the PicoBlaze 2014/Class_9.pdfPicoBlaze Function Blocks (cont.) •CAL/RETURN Stack –Stores up to 31 instruction addresses •Allows up to 31

Interrupts

• Single INTERRUPT input – Use FPGA logic to create single interrupt from multiple

sources.

• INTERRUPT disabled upon reset – Enable via the ENABLE INTERRUPT instruction.

• Interrupt signal must be applied for at least two clock cycles. Interrupts must be disabled during ISR.

• Interrupt causes: – processor to execute CALL 3FF (which typically has jump

to ISR) – Preserves ZERO and CARRY flags – Pushes the PC value onto the CALL/RETURN stack.

Class 9 Copyright 2011 Greg Tumbush Ver 1.0

13

Page 14: PicoBlaze Hello World project using the PicoBlaze 2014/Class_9.pdfPicoBlaze Function Blocks (cont.) •CAL/RETURN Stack –Stores up to 31 instruction addresses •Allows up to 31

Class 9 Copyright 2011 Greg Tumbush Ver 1.0 14

Design Flow

Assembler/KCPSM3.exe

my_code.psm ROM_form.coeROM_form.vhd

my_code.v

ROM_form.v

ISE

kcpsm3.v

my_design.v

my_design.ucf

my_design.bit

Page 15: PicoBlaze Hello World project using the PicoBlaze 2014/Class_9.pdfPicoBlaze Function Blocks (cont.) •CAL/RETURN Stack –Stores up to 31 instruction addresses •Allows up to 31

Class 9 Copyright 2011 Greg Tumbush Ver 1.0 15

Design Flow

Note: kcpsm3 doesn’t run on 64 (and 32?) bit machines. One solution is to download Intel x86 PC emulator that runs DOS from: http://www.dosbox.com According to the Xilinx forums, kcpsm6 won’t work with Spartan-3E.

Page 16: PicoBlaze Hello World project using the PicoBlaze 2014/Class_9.pdfPicoBlaze Function Blocks (cont.) •CAL/RETURN Stack –Stores up to 31 instruction addresses •Allows up to 31

Class 9 Copyright 2011 Greg Tumbush Ver 1.0 16

The Hello World Project • Displays “hello world” on line 2 starting at character 44

lcd_master.v

LCDDAT[3:0]

LCDELCDRSLCDRW

LCDdebounce.vBTN0

DCM

CCLK

slow_clk

LCDDAT[3:0]

LCDELCDRSLCDRW

LCDCCLK

hello_world.v

kcpsm3.v

Block

Ram

control.v

New

Page 17: PicoBlaze Hello World project using the PicoBlaze 2014/Class_9.pdfPicoBlaze Function Blocks (cont.) •CAL/RETURN Stack –Stores up to 31 instruction addresses •Allows up to 31

Class 9 Copyright 2011 Greg Tumbush Ver 1.0 17

The program – control.psm CONSTANT LCD_output_port, 40 ; output data and control CONSTANT LCD_E, 01 ; active High Enable CONSTANT LCD_RW, 02 ; Read=1 Write=0 CONSTANT LCD_RS, 04 ; Instruction=0 Data=1 CONSTANT LCD_DB4, 10 ; Data[0] CONSTANT LCD_DB5, 20 ; Data[1] CONSTANT LCD_DB6, 40 ; Data[2] CONSTANT LCD_DB7, 80 ; Data[3] ;ASCII table CONSTANT character_a, 61 CONSTANT character_b, 62 CONSTANT character_c, 63 CONSTANT character_d, 64 ....... syntax: CONSTANT name, value; ; is a comment delimiter

Page 18: PicoBlaze Hello World project using the PicoBlaze 2014/Class_9.pdfPicoBlaze Function Blocks (cont.) •CAL/RETURN Stack –Stores up to 31 instruction addresses •Allows up to 31

Class 9 Copyright 2011 Greg Tumbush Ver 1.0 18

control.psm - Main

CALL LCD_reset ; Initialize LCD display LOAD s5, 24 ; Line 2 position 4 CALL LCD_cursor ; Set the cursor position CALL disp_hello_world ; Display 'hello world‘ wait: JUMP wait

PC

Page 19: PicoBlaze Hello World project using the PicoBlaze 2014/Class_9.pdfPicoBlaze Function Blocks (cont.) •CAL/RETURN Stack –Stores up to 31 instruction addresses •Allows up to 31

Class 9 Copyright 2011 Greg Tumbush Ver 1.0 19

control.psm - LCD_reset LCD_reset: CALL delay_20ms ; wait>15ms for display to be ready

LOAD s4, 30 CALL LCD_write_inst4 ; send '3' CALL delay_20ms ; wait > 4.1ms CALL LCD_write_inst4 ; send '3‘ CALL delay_1ms ; wait > 100us CALL LCD_write_inst4 ; send '3' CALL delay_40us ; wait > 40us LOAD s4, 20 CALL LCD_write_inst4 ; send '2' CALL delay_40us ; wait >40us LOAD s5, 28 ; Function set CALL LCD_write_inst8 LOAD s5, 06 ; Entry mode CALL LCD_write_inst8 LOAD s5, 0C ; Display control CALL LCD_write_inst8

Page 20: PicoBlaze Hello World project using the PicoBlaze 2014/Class_9.pdfPicoBlaze Function Blocks (cont.) •CAL/RETURN Stack –Stores up to 31 instruction addresses •Allows up to 31

Class 9 Copyright 2011 Greg Tumbush Ver 1.0 20

control.psm - LCD_clear

LCD_clear: LOAD s5, 01 ; Display clear CALL LCD_write_inst8 CALL delay_1ms ; wait >1.64ms for display to clear CALL delay_1ms RETURN

Page 21: PicoBlaze Hello World project using the PicoBlaze 2014/Class_9.pdfPicoBlaze Function Blocks (cont.) •CAL/RETURN Stack –Stores up to 31 instruction addresses •Allows up to 31

Class 9 Copyright 2011 Greg Tumbush Ver 1.0 21

LCD_write_inst4 subroutine

;RS=0 (Instruction), RW=0 (Write), E=0 LCD_write_inst4: AND s4, F0 ;set up RS and RW >40ns before enable pulse OUTPUT s4, LCD_output_port CALL LCD_pulse_E RETURN LCD_pulse_E: XOR s4, LCD_E ;E=1 OUTPUT s4, LCD_output_port CALL delay_1us XOR s4, LCD_E ;E=0 OUTPUT s4, LCD_output_port RETURN

Page 22: PicoBlaze Hello World project using the PicoBlaze 2014/Class_9.pdfPicoBlaze Function Blocks (cont.) •CAL/RETURN Stack –Stores up to 31 instruction addresses •Allows up to 31

Class 9 Copyright 2011 Greg Tumbush Ver 1.0 22

LCD_write_inst8 subroutine LCD_write_inst8: LOAD s4, s5 AND s4, F0 ; RS=0, RW=0, E=0 CALL LCD_write_inst4 ;write upper nibble CALL delay_1us ;wait >1us LOAD s4, s5 ;select lower nibble with SL0 s4 ;don’t care SL0 s4 ;RS=0 Instruction SL0 s4 ;RW=0 Write SL0 s4 ;E=0 CALL LCD_write_inst4 ;write lower nibble CALL delay_40us ;wait >40us RETURN

Page 23: PicoBlaze Hello World project using the PicoBlaze 2014/Class_9.pdfPicoBlaze Function Blocks (cont.) •CAL/RETURN Stack –Stores up to 31 instruction addresses •Allows up to 31

Class 9 Copyright 2011 Greg Tumbush Ver 1.0 23

The delay subroutines

CALL delay_1us delay_1us: LOAD s0, delay_1us_constant wait_1us: SUB s0, 01 JUMP NZ, wait_1us RETURN

2 cycles 4 cycles

2 cycles

2 cycles

xB011constant delay_1us_cycles 4

6cycles - 50cycles constant delay_1us_

cycles 50 constant delay_1us_4cycles cycles 6

sec 6-1E sec

cycles 50E6 2cyclesconstantdelay_1us_4cycles2cycles2cycles

CONSTANT delay_1us_constant, 0B

Page 24: PicoBlaze Hello World project using the PicoBlaze 2014/Class_9.pdfPicoBlaze Function Blocks (cont.) •CAL/RETURN Stack –Stores up to 31 instruction addresses •Allows up to 31

Class 9 Copyright 2011 Greg Tumbush Ver 1.0 24

control.psm - Main

CALL LCD_reset ; Initialize LCD display LOAD s5, 24 ; Line 2 position 4 CALL LCD_cursor ; Set the cursor position CALL disp_hello_world ; Display 'hello world‘ wait: JUMP wait

PC PC

Page 25: PicoBlaze Hello World project using the PicoBlaze 2014/Class_9.pdfPicoBlaze Function Blocks (cont.) •CAL/RETURN Stack –Stores up to 31 instruction addresses •Allows up to 31

Class 9 Copyright 2011 Greg Tumbush Ver 1.0 25

control.psm - LCD_cursor

LCD_cursor: TEST s5, 10 ; Test for line 1 JUMP Z, set_line2 ;make address in range 80 to 8F for line 1 AND s5, 0F OR s5, 80 CALL LCD_write_inst8 ;set cursor command RETURN ;make address in range C0 to CF for line 2 set_line2: AND s5, 0F OR s5, C0 CALL LCD_write_inst8 ; set cursor command RETURN

Page 26: PicoBlaze Hello World project using the PicoBlaze 2014/Class_9.pdfPicoBlaze Function Blocks (cont.) •CAL/RETURN Stack –Stores up to 31 instruction addresses •Allows up to 31

Class 9 Copyright 2011 Greg Tumbush Ver 1.0 26

control.psm - Main

CALL LCD_reset ; Initialize LCD display LOAD s5, 24 ; Line 2 position 4 CALL LCD_cursor ; Set the cursor position CALL disp_hello_world ; Display 'hello world‘ wait: JUMP wait

PC

PC

Page 27: PicoBlaze Hello World project using the PicoBlaze 2014/Class_9.pdfPicoBlaze Function Blocks (cont.) •CAL/RETURN Stack –Stores up to 31 instruction addresses •Allows up to 31

Class 9 Copyright 2011 Greg Tumbush Ver 1.0 27

control.psm - disp_hello_world disp_hello_world: LOAD s5, character_h CALL LCD_write_data LOAD s5, character_e CALL LCD_write_data LOAD s5, character_l CALL LCD_write_data LOAD s5, character_l CALL LCD_write_data LOAD s5, character_o CALL LCD_write_data CALL disp_space LOAD s5, character_w CALL LCD_write_data

............ RETURN

Page 28: PicoBlaze Hello World project using the PicoBlaze 2014/Class_9.pdfPicoBlaze Function Blocks (cont.) •CAL/RETURN Stack –Stores up to 31 instruction addresses •Allows up to 31

Class 9 Copyright 2011 Greg Tumbush Ver 1.0 28

control.psm - LCD_write_data LCD_write_data: LOAD s4, s5 AND s4, F0 ;RS=0 Instruction, RW=0 Write, E=0 OUTPUT s4, LCD_output_port CALL LCD_pulse_E ;write upper nibble CALL delay_1us ;wait >1us LOAD s4, s5 ;select lower nibble SL0 s4 ;Don't care SL1 s4 ;RS=1 Data SL0 s4 ;RW=0 Write SL0 s4 ;E=0 OUTPUT s4, LCD_output_port CALL LCD_pulse_E ;write lower nibble CALL delay_40us ;wait >40us RETURN

Page 29: PicoBlaze Hello World project using the PicoBlaze 2014/Class_9.pdfPicoBlaze Function Blocks (cont.) •CAL/RETURN Stack –Stores up to 31 instruction addresses •Allows up to 31

Class 9 Copyright 2011 Greg Tumbush Ver 1.0 29

control.psm - Main

CALL LCD_reset ;initialise LCD display LOAD s5, 24 ;Line 2 position 4 CALL LCD_cursor ; Set the cursor position CALL disp_hello_world ;Display 'hello world‘ wait: JUMP wait

PC PC

Page 30: PicoBlaze Hello World project using the PicoBlaze 2014/Class_9.pdfPicoBlaze Function Blocks (cont.) •CAL/RETURN Stack –Stores up to 31 instruction addresses •Allows up to 31

Class 9 Copyright 2011 Greg Tumbush Ver 1.0 30

The Hello World Project

LCDDAT[3:0]

LCDELCDRSLCDRW

LCDCCLK

hello_world.v

kcpsm3.v

Block

Ram

control.v

Page 31: PicoBlaze Hello World project using the PicoBlaze 2014/Class_9.pdfPicoBlaze Function Blocks (cont.) •CAL/RETURN Stack –Stores up to 31 instruction addresses •Allows up to 31

Class 9 Copyright 2011 Greg Tumbush Ver 1.0 31

hello_world.v

module hello_world ( input wire BTN_NORTH, // reset input wire clk, output reg [7:4] lcd_d, output reg lcd_rs, output reg lcd_rw, output reg lcd_e);

wire [9:0] address;

wire [17:0] instruction; wire [7:0] port_id; wire [7:0] out_port; wire write_strobe;

Page 32: PicoBlaze Hello World project using the PicoBlaze 2014/Class_9.pdfPicoBlaze Function Blocks (cont.) •CAL/RETURN Stack –Stores up to 31 instruction addresses •Allows up to 31

Class 9 Copyright 2011 Greg Tumbush Ver 1.0 32

hello_world.v (cont.) kcpsm3 processor(.address(address), .instruction(instruction), .port_id(port_id), .write_strobe(write_strobe), .out_port(out_port), .read_strobe(), .in_port(8'b0), .interrupt(1'b0), .interrupt_ack(), .reset(BTN_NORTH), .clk(clk));

control program_rom(.address(address), .instruction(instruction), .clk(clk));

Page 33: PicoBlaze Hello World project using the PicoBlaze 2014/Class_9.pdfPicoBlaze Function Blocks (cont.) •CAL/RETURN Stack –Stores up to 31 instruction addresses •Allows up to 31

Class 9 Copyright 2011 Greg Tumbush Ver 1.0 33

hello_world.v (cont) always @(posedge clk or posedge BTN_NORTH) begin if (BTN_NORTH) {lcd_d, lcd_rs, lcd_rw, lcd_e} <= 0; else if (write_strobe && port_id == 8’h40) begin lcd_d <= out_port[7:4]; lcd_rs <= out_port[2]; lcd_rw <= out_port[1]; lcd_e <= out_port[0]; end // if (write_strobe) end // always @ (posedge clk) endmodule

Page 34: PicoBlaze Hello World project using the PicoBlaze 2014/Class_9.pdfPicoBlaze Function Blocks (cont.) •CAL/RETURN Stack –Stores up to 31 instruction addresses •Allows up to 31

Class 9 Copyright 2011 Greg Tumbush Ver 1.0 34

The Hello World Project

LCDDAT[3:0]

LCDELCDRSLCDRW

LCDCCLK

hello_world.v

kcpsm3.v

Block

Ram

control.v

Page 35: PicoBlaze Hello World project using the PicoBlaze 2014/Class_9.pdfPicoBlaze Function Blocks (cont.) •CAL/RETURN Stack –Stores up to 31 instruction addresses •Allows up to 31

Class 9 Copyright 2011 Greg Tumbush Ver 1.0 35

control.v module control (address, instruction, clk); input [9:0] address; input clk; output [17:0] instruction; RAMB16_S18 ram_1024_x_18( .DI(16'h0000),

.DIP (2'b00), .EN (1'b1), .WE (1'b0), .SSR (1'b0), .CLK (clk), .ADDR (address), .DO (instruction[15:0]), .DOP (instruction[17:16]))

Page 36: PicoBlaze Hello World project using the PicoBlaze 2014/Class_9.pdfPicoBlaze Function Blocks (cont.) •CAL/RETURN Stack –Stores up to 31 instruction addresses •Allows up to 31

Class 9 Copyright 2011 Greg Tumbush Ver 1.0 36

control.v (cont) /*synthesis init_00 = "001B004C056F004C056C004C056C004C0565004C05684004000500700524005A" init_01 = "C001000BA000004C0520A000004C0564004C056C004C0572004C056F004C0577" ... init_3F = "0000000000000000000000000000000000000000000000000000000000000000" initp_00 = "000B0B0DBF3333CFFF3BEAA3E0BEA8F0B8A38B72DCB72DCB4B2CCCCCF33333F3" ... initp_07= "0000000000000000000000000000000000000000000000000000000000000000" */; endmodule

Page 37: PicoBlaze Hello World project using the PicoBlaze 2014/Class_9.pdfPicoBlaze Function Blocks (cont.) •CAL/RETURN Stack –Stores up to 31 instruction addresses •Allows up to 31

Class 9 Copyright 2011 Greg Tumbush Ver 1.0 37

To run the Hello World Project 1. Go to www.uccs.edu/~gtumbush/4211/PicoBlaze.html and

download/unzip: 1. Xilinx PicoBlaze zip archive 2. Hello World Project archive

2. Open project Hello_World_final

3. If you want to recompile the program do: <Picoblaze Path>/Picoblaze/Assembler/KCPSM3.exe control.psm from a DOS window