Picoblaze Overview EENG 2910 Introduction • 8-bit microcontroller for Xilinx devices • Soft Core – Soft Processor • 5% of the resources of spartan 3 (3S200 devicee) • Compact, and Flexible • Utilized for simple data processing and control Introduction • • • • • • 8-bit data width 8-bit ALU with carry and zero flag 16 8-bit general-purpose registers 64-byte data memory 18 bit instruction width 10-bit instruction address (supports 1024 instr.) • 256 input ports and 256 output ports • 2 clock cycles per instruction Instruction Set • • • • • • • Logical Instructions Arithmetic Instruction Compare and test Instruction Shift and rotate Instruction Data Movement Instruction Program flow control Instructions Interrupt related Instruction Programming Model (Notation) • sX, sY : represents General Purpose Register • Pc : Program Counter • Tos : top-of-stack pointer of the call/return stack • c, z, i: carry, zero, and interrupt flags • Kk : 8 bit constant or port id • Ss : 6-bit constant data memory address • AAA: 10-bit constant instruction memory address. Instruction Format • op sX, sY : register-register format (sX, sY – operand, op – operation, sX – destination, sX sX op kk) • op sX, kk: register-constant format (?) • op sX: single – register format – used in shifting and rotating instructions with one operand. • op AAA : single-address format. E.g jump and call instruction. AAA – address. • Op - instruction without operand Operations (Examples) • Logical Operation (6 instructions) : and, or, xor • Arithmetic operation (8): add, addcy or addc (addcy – add with carry flag), sub, subcy or subc. • Compare and Test operation: compare sX, sY or comp sX, sY , compare sX, kk or comp sX, kk if sX=sY then z1 else z0; if sX>sY then c1 else c0; test sX, SY t s X and s Y ; if t = 0 then else z 0; C t(7) xor t(6) xor ....xor t(0) Operations Shift and Rotate Instruction • sl0 sX – Shift a register left 1 bit and shift 0 into the LSB. sX sX(6…0) & 0; c sX(7) • sl1 sX – shift a register left 1 bit and shift 1 into LSB. sX sX(6…0) & sX(0); c sX(7) • slx sX – shift a register left 1 bit and shift sX(0) into the LSB. • sla sX – shift left 1 bit and shift c into LSB • similarly, sr0, sr1, srx, sra sX, rl sX, rr sX etc. Data Movement • Computation done via Registers and ALU • Movement between - registers – load - Register and data RAM – Fetch and Store - Register and I/O port : input and output Load sX, sY; load sX, kk; - sX (sY or kk); fetch sX, (sY) or fetch (sX, sY);- sX RAM(sY); Fetch sX, SS, - sX RAM(sY); store sX, (sY) (or store sX, sY) –RAM[sX] sX; - move data from register to data RAM. Input sX, (sY), or in sX, sY –move data from input port to a register. sX in_port Output sX, (sY) (out sX, sY) move data from a register to the input port Program Flow • Jump, call, and return – load a value to the program counter and modify program flow. • Unconditionally or conditionally based on zero and carry flags. • Jump AAA – unconditional jump • Jump c, AAA – jump if carry flag is set ( if c = 0 then pc AAA else pc = pc + 1) • Jump nc, AAA; jump z, AAA; jump nz, AAA Program flow - Call and Return • Implementation of functions • Call – loads a new value to the pc, saves it current value to a stack (special buffer). • The routine contains a return( obtains the saved value from the stack and increment by 1) at the end . • Picoblaze support nested function (LIFO) . Picoblaze has 31-word stack. Program flow • Call AAA (unconditionally call subroutine) tos tos Stack [tos] pc; Pc AAA • Call c, AAA (conditionally call subroutine) • If (c = 1) tos tos Stack [tos] pc; Pc AAA Else Pc pc + 1 • Return (ret) • Return c, (ret c)
© Copyright 2026 Paperzz