1 RESUMEN: Softmicro de 8 bits XilinxPICOBLAZE RESUMEN: Softmicro de 8 bits Xilinx
2 Procesadores Embebidos de 8 bits1 Introducción 2 Arquitectura Picoblaze 3 Programación en ensamblador Picoblaze 4 Integración con VHDL
3 Picoblaze Aplicaciones Microprocesador de 8 bitsEmpotrado 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
4 Diagrama de un fsmd y un microprocesador
5 Organización básica Bus de datos de 8 bitsALU 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
6 Diagrama a bloques de picoblaze
7 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
8 KCPSM3 clk (entrada 1 bit), señal de reloj del sistemareset (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 KCPSM3
9 out_port( salida 8 bits), datos de salida hacia los periféricos de entrada/salidawrite_strobe (salida 1 bit) strobe asociado con las operaciones de salida interrupt ( entrada 1 bit) solicitud de interrupción de los periféricos de entrada/salida interrupt_ack (salida 1 bit), reconocimiento de la interrupción hacia los periféricos de entrada/salida KCPSM3
10 El segundo modulo es para la memoria de instruccionesDurante 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.
11
12 CONJUNTO DE INSTRUCCIONESMODELO DE PROGRAMACIÓN 57 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
13 FORMATO DE INSTRUCCIÓN
14 FORMATO DE INSTRUCCIÓN
15 Comparación y Test Comp: comparan 2 registros o bien reg – cte y las banderas de Z y C se ponen a 1
16
17 FORMATO DE INSTRUCCIÓN
18 FORMATO DE INSTRUCCIÓN
19 FORMATO DE INSTRUCCIÓN
20 Instrucciones tipo lógicas
21 Aritméticas
22 De prueba y comparación
23 Corrimiento y rotación
24
25 Movimiento de datos
26 Control del flujo de programa
27
28
29 Relacionadas con las interrupciones
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48 Directivas pblaze ide
49 Diferencias entre la sintaxis del kcpsm3 y Pblaze Ide
50 En matlab: Xlpb_as Otra manera de ensamblar unprograma es a través de MATLAB. Para esto, ejecutamos en la ventana de comandos >> cd c:\assembler; xlpb_as -p 'diego.psm' La primera instrucción 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 presentación en pantalla:
51 Servomotor 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 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).
52 Servomotor Futaba 3003
53 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. 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
54 Algoritmo de Control Servomotorinicio 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 Contador bajo + 1 no ¿Puerto entrada = contador? si Retardo de 10 µs contador + 1 ¿Cantidad bajo = contador bajo? Retardo de 10 µs no si Retardo de 17.7 ms