Vous êtes sur la page 1sur 54

PICOBLAZE

RESUMEN:
Softmicro de 8 bits Xilinx

Procesadores Embebidos de 8 bits

1 Introduccin
2 Arquitectura Picoblaze
3 Programacin en ensamblador Picoblaze
4 Integracin con VHDL

Picoblaze

Microprocesador de 8 bits
Empotrado en un FPGA Xilinx
Soft core
Optimizado ocupa 200 celdas lgicas
Menos del 5% Spartan 3s200

Aplicaciones

Debido a que el desarrollo del software es


usualmente mas fcil que crear hardware a la
medida, la opcin de un microcontrolador es
preferida para aplicaciones no criticas en el
tiempo.
Picoblaze requiere 2 ciclos para completar una
instruccin
Si el reloj del sistema es de 50 MHz, Picoblaze
ejecuta 25 millones de instrucciones por segundo

Diagrama de un fsmd y un
microprocesador

Bus de datos de 8 bits


ALU de 8 bits con
banderas de acarreo e
indicacin de cero
16 registros de propsito
general de 8 bits
64 byte de memoria de
datos
Formato de instrucciones
de 18 bits
Bus de direcciones de 10
bits (1024 instrucciones)
Stack de 31 palabras
256 puertos de entrada
256 puertos de salida
2 ciclos de reloj por
instruccin
5 ciclos de reloj para
respuesta de interrupcion

Organizacin
bsica

Diagrama a bloques de picoblaze

Top Level HDL modules


Picoblaze

es un
sistema organizado
en 2 mdulos de
alto nivel en HDL

El

modulo KCPSM3
es el procesador
Picoblaze

KCPSM3

clk (entrada 1 bit), seal de


reloj del sistema
reset (entrada 1 bit), seal
de reset
address (salida 10 bits),
direccin de la memoria de
instrucciones, especifica la
localidad de donde se va a
leer la instruccin
instruction ( entrada 18
bits), instruccin
port_id(salida
8
bits),
direccin del puerto de
entrada o puerto de salida
in_port(entrada 8 bits), datos
de entrada de los perifricos
de entrada /salida
read_strobe(salida 1 bit),
strobe asociado con la
operacin de entrada

KCPSM3

o out_port( salida 8 bits), datos


de salida hacia los perifricos
de entrada/salida
o write_strobe (salida 1 bit)
strobe
asociado
con
las
operaciones de salida
o interrupt ( entrada 1 bit)
solicitud de interrupcin de los
perifricos de entrada/salida
o interrupt_ack (salida 1 bit),
reconocimiento
de
la
interrupcin
hacia
los
perifricos de entrada/salida

El segundo modulo es para la


memoria de instrucciones

Durante el desarrollo usualmente


almacenamos el cdigo
ensamblado en la memoria y se
configura como una ROM en el
lenguaje de descripcin de
hardware.

CONJUNTO DE INSTRUCCIONES
57
INSTRUCCIONES
Instrucciones del tipo:
Lgicas
Aritmticas
De prueba y comparacin
Corrimiento y rotacin
Movimiento de datos
Control del flujo de programa
Relacionadas con las
interrupciones

MODELO DE
PROGRAMACIN

FORMATO DE
INSTRUCCIN

FORMATO DE
INSTRUCCIN

Comparacin y Test
Comp: comparan 2 registros o bien reg cte y
las banderas de Z y C se ponen a 1

FORMATO DE
INSTRUCCIN

FORMATO DE
INSTRUCCIN

FORMATO DE
INSTRUCCIN

Instrucciones tipo lgicas

Aritmticas

De prueba y comparacin

Corrimiento y rotacin

Movimiento de datos

Control del flujo de programa

Relacionadas con las


interrupciones

Directivas pblaze ide

Diferencias entre la sintaxis del


kcpsm3 y Pblaze Ide

En matlab:
Xlpb_as

Otra manera de ensamblar un


programa es a travs de MATLAB. Para
esto, ejecutamos en la ventana de
comandos >> cd c:\assembler; xlpb_as
-p 'diego.psm'
La primera instruccin cd
c:\assembler es para ubicarnos en la
carpeta donde guardamos el programa
y
la segunda xlpb_as -p 'diego.psm' es
para ensamblar el programa (se puede
explorar en detalle el comando xlpb_as
ejecutando type xlpb_as en la ventana
de comandos de MATLAB). Si el
programa no presenta errores, se tiene
la
siguiente presentacin en pantalla:

Servomotor

Motor de DC

Circuito de retroalimentacin un
potencimetro mide la posicin
del eje, para que el control
mantenga la salida con
precisin

Control de motor en lazo


cerrado

Un controlador externo le dice


al servo donde ir con una seal
conocida como modulacin de
pulso proporcional (PPM).

La modulacin por ancho de pulso


permite un ciclo de trabajo ( el
porcentaje de tiempo en alto contra
el tiempo en bajo) que es de 0 al
100 porciento del tiempo del periodo

La PPM usa de 1 a 2 ms de salida de


los 20 ms posibles de tiempo de
periodo para codificar su informacin

La duracin de los impulso indican el


Angulo del giro del motor, cada
servo motor tiene su margen de
operacin que corresponden con el
ancho de impulso mximo y mnimo
que el servo entiende y que
mecnicamente no puede
sobrepasar

Servomotor Futaba 3003

El periodo entre pulso y pulso


no es critico

Se suelen emplear valores entre


10 ms y 30 ms, aunque es
habitual utilizar 20 ms que
implican una frecuencia de 50
Hz

Para que un servomotor


mantenga la misma posicin es
necesario enviarle
continuamente un pulso de
ancho constante

Si se deja de enviar pulsos o el


intervalo entre pulsos es mayor
del mximo permitido entonces
el servomotor perder fuerza y
dejara de intentar mantener su
posicin.

Algoritmo de Control inicio


Servomotor
Leer dato
puerto de
entrada
Contadores y
banderas a 0

Poner a 0 el
puerto de salida

Poner a 1 el
puerto de salida

Cantidad bajo =
200 dato
puerto de
entrada

Retardo de 300
s

no
contador + 1

Puerto
entrada =
contador?

Contador bajo +
1
si

Retardo de 10
s
no

Retardo de 10
s
Cantidad
bajo =
contador
bajo?
si
Retardo de 17.7
ms