Post on 03-Feb-2016
PICOBLAZE
RESUMEN:Softmicro de 8 bits Xilinx
1 Introducción2 Arquitectura Picoblaze3 Programación en ensamblador Picoblaze4 Integración con VHDL
Procesadores Embebidos de 8 bits
Picoblaze Microprocesador de 8 bits Empotrado en un FPGA Xilinx Soft core Optimizado ocupa 200 celdas lógicas Menos del 5% Spartan 3s200
Aplicaciones Debido a que el desarrollo del software es
usualmente mas fácil que crear hardware a la medida, la opción de un microcontrolador es preferida para aplicaciones no criticas en el tiempo.
Picoblaze requiere 2 ciclos para completar una instrucción
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 indicación de cero
16 registros de propósito 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
instrucción 5 ciclos de reloj para
respuesta de interrupcion
Organización básica
Diagrama a bloques de picoblaze
Top Level HDL modules
Picoblaze es un sistema organizado en 2 módulos de alto nivel en HDL
El modulo KCPSM3 es el procesador Picoblaze
KC
PSM
3
clk (entrada 1 bit), señal de reloj del sistema
reset (entrada 1 bit), señal de reset
address (salida 10 bits), dirección de la memoria de instrucciones, especifica la localidad de donde se va a leer la instrucción
instruction ( entrada 18 bits), instrucción
port_id(salida 8 bits), dirección del puerto de entrada o puerto de salida
in_port(entrada 8 bits), datos de entrada de los periféricos de entrada /salida
read_strobe(salida 1 bit), strobe asociado con la operación de entrada
o out_port( salida 8 bits), datos de salida hacia los periféricos de entrada/salida
o write_strobe (salida 1 bit) strobe asociado con las operaciones de salida
o interrupt ( entrada 1 bit) solicitud de interrupción de los periféricos de entrada/salida
o interrupt_ack (salida 1 bit), reconocimiento de la interrupción hacia los periféricos de entrada/salida
KC
PSM
3
El segundo modulo es para la memoria de instrucciones
Durante el desarrollo
usualmente almacenamos el código ensamblado en la memoria y se configura como una ROM en el lenguaje de descripción de hardware.
CONJUNTO DE INSTRUCCIONES57 INSTRUCCIONES
Instrucciones del tipo: Lógicas Aritméticas De prueba y comparación Corrimiento y rotación Movimiento de datos Control del flujo de
programa Relacionadas con las
interrupciones
MODELO DE PROGRAMACIÓN
FORMATO DE INSTRUCCIÓN
FORMATO DE INSTRUCCIÓN
Comparación y Test
Comp: comparan 2 registros o bien reg – cte y las banderas de Z y C se ponen a 1
FORMATO DE INSTRUCCIÓN
FORMATO DE INSTRUCCIÓN
FORMATO DE INSTRUCCIÓN
Instrucciones tipo lógicas
Aritméticas
De prueba y comparación
Corrimiento y rotación
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 unprograma es a través de MATLAB. Paraesto, ejecutamos en la ventana decomandos >> cd c:\assembler; xlpb_as-p 'diego.psm'La primera instrucción cdc:\assembler es para ubicarnos en lacarpeta donde guardamos el programa yla segunda xlpb_as -p 'diego.psm' espara ensamblar el programa (se puedeexplorar en detalle el comando xlpb_asejecutando type xlpb_as en la ventanade comandos de MATLAB). Si elprograma no presenta errores, se tiene lasiguiente presentación en pantalla:
Servomotor
Motor de DC
Circuito de retroalimentación un potenciómetro mide la posición del eje, para que el control mantenga la salida con precisión
Control de motor en lazo cerrado
Un controlador externo le dice al servo donde ir con una señal conocida como modulación de pulso proporcional (PPM).
La modulación 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 información
La duración de los impulso indican el Angulo del giro del motor, cada servo motor tiene su margen de operación que corresponden con el ancho de impulso máximo y mínimo que el servo entiende y que mecánicamente 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 posición es necesario enviarle continuamente un pulso de ancho constante
Si se deja de enviar pulsos o el intervalo entre pulsos es mayor del máximo permitido entonces el servomotor perderá fuerza y dejara de intentar mantener su posición.
Algoritmo de Control Servomotor
inicio
Leer dato puerto de entrada
Contadores y banderas a 0
Poner a 1 el puerto de salida
Retardo de 300 µs
¿Puerto entrada = contador?
contador + 1
Retardo de 10 µs
no
Poner a 0 el puerto de salida
Cantidad bajo = 200 – dato puerto de entrada
Contador bajo + 1
Retardo de 10 µs
¿Cantidad bajo =
contador bajo?
Retardo de 17.7 ms
si
nosi