Microcontrolador Parallax Propeller

¿Que es el Propeller?
Propeller es un Microncontrolador fabricado por la empresa Parallax, la peculiaridad de este micro es la capacidad de realizar multiproceso gracias a que cuenta con 8 procesadores internos, los cuales pueden ejecutar codigo independiente.

El Propeller proporciona flexibilidad y potencia a través de sus ocho procesadores, llamados Cogs, que pueden realizar simultáneamente tareas independientes o cooperativas.

 

Introducción
El Propeller posee una novísima arquitectura, que contiene ocho procesadores que trabajan cooperativa o paralelamente y comparten los pines de E/S y otros recursos.
Cada uno de estos 8 procesadores (cog) es de 32 bits, con una velocidad de proceso de 20 MIPS (millones de instrucciones por segundo) usando un pulso de reloj de 80 MHz. Es decir, en un momento en que están trabajando todos los cogs, tenemos una capacidad de proceso de 160 MIPS.
Cada procesador tiene su propia RAM local de 2 Kb (512 registros de 32 bits). También existe una memoria común, compartida, que se divide en dos secciones: una RAM de 32 Kb y una ROM de 32 Kb.

Especificaciones

1
2

 

La arquitectura del Propeller

Como ya dije antes la arquitectura del Propeller se basa en 8 Cogs cada cog cuenta con sus recursos propios, además se cuenta con una serie de recursos compartidos controlados por un controlador principal, llamado Hub.

El Hub se encarga de mantener la integridad del sistema asignando el funcionamiento de los Cogs y el reparto de los recursos comunes, además de controlar que el cog pueda tener acceso a los recursos comunes-exclusivos (mutuo-exclusivos), tales como RAM/ROM principal, registros de configuración, etc.
El sistema utilizado para proporcionar el acceso exclusivo a los recursos se basa en una política del tipo "round robin", sin importar cuántos cogs están funcionando. De esa manera cada cog tiene un “quantum” para acceder a los recursos comunes a través del hub.
3

Los recursos compartidos

Hay dos tipos de recursos compartidos en el Propeller:

    1. Común
    2. Mutuo-exclusivo

Los recursos comunes se pueden emplear en cualquier momento por cualquier número de Cogs. Los recursos mutuo-exclusivos se pueden alcanzar por cualquier Cog, pero solamente un Cog a la vez.

Los recursos comunes son los pines de E/S y el contador del sistema. El resto de los recursos compartidos son mutuo-exclusivos por naturaleza y el acceso a ellos es controlado por el Hub.

El reloj del sistema

El reloj del sistema es el oscilador principal o central para casi todos los componentes del Propeller, la señal del reloj del sistema se proporciona a partir de una de las tres posibles fuentes:

    1. El oscilador interno de RC
    2. El circuito PLL
    3. El oscilador de cristal

La fuente se determina en los ajustes del registro CLK, que es seleccionable en tiempo de ejecución. Lo que permite cambiar la velocidad o la fuente del reloj mientras se ejecuta un código.
Un oscilador externo puede usar el multiplicador PLL que puede ser de 1x, 2x, 4x, 8x, 16x y puede ser modificado en tiempo de ejecución de esta forma si usamos un cristal de 5mhz podemos variar la velocidad de ejecución desde los 5 MHz hasta 80 MHz.

 

 

Cogs (Procesadores)

El Propeller contiene ocho procesadores, llamados Cogs, numerados del 0 al 7.
Cada Cog contiene los siguientes componentes:

    1. un procesador
    2. RAM local de 2 KB configurados como 512 registros (512 x 32 bits),
    3. dos Asistentes de E/S
    4. 2 PLLs
    5. un generador video
    6. registro de salida de E/S
    7. registro de dirección de E/S
    8. otros registros

Cada cog puede ejecutar tareas independientes y simultáneamente. Pueden tener acceso a los mismos recursos compartidos, como los pines de E/S, la RAM global, y el contador del sistema, además se pueden arrancar y parar en el tiempo de ejecución.

 

El Hub

Para mantener la integridad del sistema, los recursos mutuo-exclusivos no deben ser accedidos por más de un Cog a la vez. El Hub mantiene esta integridad controlando el acceso a los recursos mutuo-exclusivos, dando a cada Cog un turno para acceder a ellos de forma "round robin" desde el Cog 0 a el Cog 7 y volviendo al Cog 0.
El Hub y el Bus que lo controla, funcionan a la mitad de la frecuencia del reloj del sistema. Esto significa que el Hub da acceso al Cog a los recursos mutuo-exclusivos una vez cada 16 ciclos de reloj del sistema.

Pines de E/S

El Propeller tiene 32 pines de E/S, 28 de los cuales están destinados para fines de propósito general. Cuatro pines de E/S (28 - 31) son de propósito especial durante el arranque y luego están disponibles para usos generales.
Después del arranque, cualquier pin de E/S se puede utilizar por cualquier Cog en cualquier momento puesto que el conjunto de pines de E/S es un recurso común.
Es tarea del desarrollador de la aplicación asegurarse que dos Cogs no coincidan utilizando el mismo pin de E/S durante el tiempo de ejecución.

Contador del Sistema (recurso común)

Es un contador global de 32 bits, que se incrementa cada ciclo de reloj del sistema.
Los Cogs pueden leer el contador del sistema (vía su registro CNT) para realizar cálculos de sincronización y pueden utilizar el comando de WAITCNT para crear retrasos eficaces dentro de su proceso

Registro CLK (recurso común)

El registro de CLK es el de control de configuración del reloj del sistema; determina la fuente y las características del Reloj del Sistema.
El registro de CLK configura el oscilador RC, el reloj PLL, el oscilador de cristal, y los circuitos del selector del reloj. Es configurado en el tiempo de compilación por la declaración CLKMODE

Semáforos (recurso mutuo exclusivo)

Hay ocho semáforos disponibles para facilitar el acceso exclusivo a los recursos definidos por el usuario entre los múltiples Cogs. Los semáforos son bits globales accedidos a través del Hub con las siguientes instrucciones: LOCKNEW, LOCKRET, LOCKSET y LOCKCLR.
Los semáforos solo pueden ser accedidos a través del Hub, sólo un Cog a la vez puede afectarlos, conformando todo esto un mecanismo eficaz de control.

Memoria Principal (recurso mutuo exclusivo)

La memoria principal es un bloque de 64 K bytes que es accesible por todos los Cogs como recurso mutuo-exclusivo a través del Hub. Está formada por 32 KB de RAM y 32 KB de ROM, los 32 KB de RAM principal son de propósito general y constituyen el destino de una “aplicación Propeller”, que puede ser descargada de un host o cargada de los 32 KB de EEPROM externa.
La Rom se utiliza para almacenar la definición de caracteres, funciones matemáticas, el Boot Loader y el intérprete Spin.
Definición de caracteres
La primera mitad de la ROM contiene un sistema de 256 definiciones de carácter. Cada definición de carácter corresponde a 16 píxeles de ancho y 32 píxeles de alto. Estas definiciones de carácter se pueden utilizar para las presentaciones de vídeo, LCD gráfico, impresión, etc.

Tabla de definición de caracteres
4

Otros recursos de la ROM

  1. Tablas de registro y contra-registro
  2. Tabla del seno
  3. Boot Loader e Intérprete Spin

El arranque o reset

El proceso de encendido o reset se divide en las siguientes fases:

  1. Carga el programa embebido del Boot Loader al cog 0 y arranca.
  2. El Boot Loader realiza una o más de las siguientes tareas, en este orden:
    1. Detecta la comunicación de un host, en los pines P30 y P31. Si se detecta conversa con el host para identificar el chip Propeller y posiblemente para descargar un programa en RAM global y opcionalmente en la EEPROM externa de 32 KB.
    2. Si no se detectó ninguna comunicación, el Boot Loader busca la EEPROM externa 32 KB en los pines P28 y P29. Si se detecta una EEPROM, se cargan los 32 KB en el RAM global del Propeller.
    3. Si no se detectó ninguna EEPROM, el Boot Loader se para, se detiene el Cog 0, el chip del Propeller entra en modo de parada, y todos los pines de E/S se fijan como entradas.

Si los pasos anteriores son capaces de cargar un programa en la RAM global, y el host no ha mandado un comando de suspensión, el Cog 0 se re arranca con el intérprete Spin embebido y el código del usuario se ejecuta desde la RAM global.

Esquema Básico
En el siguiente esquema se puede ver las conexiones básicas del propeller, el propeller plug es una interfase USB para conectar el propeller a una PC a fin de programarlo. Puede ser sustituido por una configuración serial. Mas abajo esta el esquema para la configuración serial.

 

5

6

 

Lo que es importante a  la hora de utilizar la conexión serial es la utilización del circuito del Reset conectado al pin DTR del serial. La importancia del mismo radica en que cada vez que programamos el HOST envía una señal para resetear el Propeller de modo a que el mismo inicie su comunicación serial en los pines 30 y 31.

Puede ver un video tutorial sobre el Propeller haciendo click aquí

 


 

 

 
Para mas información escríbanos o ingrese a nuestro foro..