140 likes | 292 Views
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
E N D
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)