Descargar

Procesadores embebidos de 8 bits

Enviado por Pablo Turmero


    edu.red 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

    edu.red Diagrama de un fsmd y un microprocesador

    edu.red 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

    edu.red Diagrama a bloques de picoblaze

    edu.red 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

    edu.red KCPSM3 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

    edu.red out_port( salida 8 bits), datos de salida hacia los periféricos de entrada/salida write_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

    edu.red 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.

    edu.red

    edu.red CONJUNTO DE INSTRUCCIONES 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 MODELO DE PROGRAMACIÓN

    edu.red FORMATO DE INSTRUCCIÓN

    edu.red FORMATO DE INSTRUCCIÓN

    edu.red Comparación y Test Comp: comparan 2 registros o bien reg – cte y las banderas de Z y C se ponen a 1

    edu.red

    edu.red FORMATO DE INSTRUCCIÓN

    edu.red FORMATO DE INSTRUCCIÓN

    edu.red FORMATO DE INSTRUCCIÓN

    edu.red Instrucciones tipo lógicas

    edu.red Aritméticas

    edu.red De prueba y comparación

    edu.red Corrimiento y rotación

    edu.red

    edu.red Movimiento de datos

    edu.red Control del flujo de programa

    edu.red

    edu.red

    edu.red Relacionadas con las interrupciones

    edu.red

    edu.red

    edu.red

    edu.red

    edu.red

    edu.red

    edu.red

    edu.red

    edu.red

    edu.red

    edu.red

    edu.red

    edu.red

    edu.red

    edu.red

    edu.red

    edu.red

    edu.red

    edu.red Directivas pblaze ide

    edu.red Diferencias entre la sintaxis del kcpsm3 y Pblaze Ide

    edu.red En matlab: Xlpb_as Otra manera de ensamblar un programa 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:

    edu.red 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

    edu.red Servomotor Futaba 3003

    edu.red 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.

    edu.red 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 no si