¿Qué se puede hacer con 8 procesadores de 32 bits en un solo chip?
PROPELLER, Propeller, Parallax, P8X32A, P8X32A-D40, P8X32A-Q44, P8X32A-M44, SPIN, BASIC Stamp 3, 32 bits

[Marzo 2006] Hoy día, cada fabricante de microcontroladores oferta un elevado número de modelos diferentes, desde los más sencillos hasta los más poderosos. Una tendencia muy obvia es que los microcontroladores son cada vez más potentes: más capacidad de memoria, mayor número de entradas y salidas, más velocidad de funcionamiento, más periféricos integrados,…

Los modelos de 4 bits ya han desaparecido prácticamente del mercado, dando paso a los microcontroladores de 8 bits, que continúan siendo muy populares y el producto más consumido entre los integrados debido a su bajo coste y la facilidad de programación en aplicaciones de usuario final como: reproductores/grabadores de DVD, electrodomésticos, dispositivos de control remoto, cámaras digitales, teclados, juguetes y otros.

Pero en los últimos años han aparecido necesidades en la industria moderna y en la electrónica de consumo que no han podido ser satisfechas con los microcontroladores habituales (aplicaciones en procesamiento y control inteligente, teléfonos móviles, automóviles, PDAs, videoconsolas, ordenadores). La mayoría de estas aplicaciones vienen determinadas por el auge del sector multimedia donde se requiere un aumento cuantitativo y cualitativo de la información que manejamos y compartimos de manera cotidiana.

Esta claro que la industria ha tenido siempre un objetivo primordial: la búsqueda de la velocidad. Y lo ha plasmado en la fabricación de nuevos chips de alta velocidad de proceso. Algunos fabricantes han optado por incluir varios procesadores en un mismo chip, para conseguir capacidades de multiproceso: más procesadores significa mas potencia de proceso.

Así pues, el mercado de los microcontroladores junto con las nuevas necesidades del mundo actual está cambiando, y a saltos: de los tradicionales microcontroladores de 4 u 8 bits pasamos a los microcontroladores de 32 bits, desestimando a las versiones de 16 bits, debido a que los de 32 bits son ya más fáciles de encontrar en el mercado y a precios más razonables, además de ofrecer unas prestaciones mucho mayores.

PROPELLER, Propeller, Parallax, P8X32A, P8X32A-D40, P8X32A-Q44, P8X32A-M44, SPIN, BASIC Stamp 3, 32 bits

Parallax (www.parallax.com) ha sido consciente de estos cambios y los nuevos requerimientos de manera que, tras ocho años de investigación y desarrollo, ha diseñado un nuevo producto denominado "Propeller™", un chip que contiene 8 procesadores de 32 bits cada uno. A la pregunta de: "¿Qué se puede hacer con 8 procesadores de 32 bits en un solo chip?" podemos contestar sin titubear: tareas simultáneas de multiproceso real.

Conozcamos un poco más de cerca las prestaciones de este nuevo chip multicontrolador cuyo lanzamiento oficial no se ha realizado todavía.

Bajo consumo de energía
El chip del Propeller™ se ha diseñado para proporcionar alta velocidad de proceso para sistemas embebidos mientras mantiene un bajo consumo de potencia y de energía. El consumo de potencia es algo a tener en cuenta, sobre todo para sistemas alimentados por baterías, porque cuanto más rápido trabaja el microcontrolador, más consumo de energía. Además, aunque aumentar la frecuencia de reloj supone disminuir el tiempo en que se ejecutan las instrucciones, lleva aparejado también un incremento del consumo.

A pesar de todo, el Propeller™, con una velocidad de reloj de 80 MHz, requiere tan sólo 3.3 voltios DC, lo cual posibilita su funcionamiento en dispositivos portátiles alimentados con baterías.

PROPELLER, Propeller, Parallax, P8X32A, P8X32A-D40, P8X32A-Q44, P8X32A-M44, SPIN, BASIC Stamp 3, 32 bits
Diferentes tipos de encapsulado del "Propeller™"

8 procesadores
Además de ser rápido, el Propeller™ proporciona flexibilidad a través de sus ocho procesadores (llamados "cogs") numerados del 0 al 7. Cada "cog" contiene los mismos componentes (un procesador, RAM local de 2 K -512 registros de 32 bits cada uno-, dos asistentes de I/O y PLLs, un generador de video, un registro de la salida de I/O, un registro de dirección de I/O y otros registros más) y pueden realizar simultáneamente tareas independientes o cooperativas, mientras mantiene una arquitectura relativamente simple fácil de aprender y de utilizar. No tiene ninguna necesidad de usar interrupciones: asigna individualmente tareas de peso a algunos "cogs", mientras que mantiene libres a otros "cogs".

PROPELLER, Propeller, Parallax, P8X32A, P8X32A-D40, P8X32A-Q44, P8X32A-M44, SPIN, BASIC Stamp 3, 32 bits


Los ocho "cogs" son controlados por el mismo reloj del sistema, de manera que cada uno mantiene la misma referencia del tiempo. Sin importar la naturaleza de su uso, el programa escrito por el usuario tiene todo el control sobre cómo y cuando se utiliza cada "cog": pueden ser programados para realizar tareas simultáneamente, independientes o con la coordinación de otros "cogs", así como también hacer que cualquiera de los "cogs" arranque y pare durante el funcionamiento del programa.

PROPELLER, Propeller, Parallax, P8X32A, P8X32A-D40, P8X32A-Q44, P8X32A-M44, SPIN, BASIC Stamp 3, 32 bits

Recursos compartidos
Existen dos tipos de recursos compartidos en el Propeller™: 1) comunes, y 2) "mutuo-exclusivo". Los recursos comunes (pins de I/O y el contador del sistema) pueden ser accedidos en cualquier momento por varios "cogs"; mientras que los recursos "mutuo-exclusivos" (RAM/ROM principal, registros de configuración, etc.) pueden ser accedidos por varios "cogs", pero solamente por uno a la vez.

¿Cómo gobierna el Propeller™ a los 8 procesadores al mismo tiempo? Un Hub controla que cada "cog" pueda acceder a los recursos "mutuo-exclusivos". El Hub da acceso exclusivo a cada "cog", uno a uno, comenzando por el "cog 0" hasta el "cog7" y vuelta a comenzar, sin importar cuántos "cogs" están funcionando. Mediante el uso de "semáforos" se facilita el acceso exclusivo entre los diferentes "cogs" a los recursos.

Memoria principal
El mapa de memoria es plano; no hay necesidad de esquemas que paginan con los bloques del código, de los datos o de las variables. Esto realmente ahorra tiempo en el desarrollo de la aplicación.

La memoria principal es un bloque de 64 K bytes consistente en 32 KB de RAM (la primera mitad del bloque) y 32 KB de ROM (la segunda mitad del bloque).

Los 32 KB de la RAM son utilizados para propósito general: programa, datos y variables. Cuando el programa es descargado desde un PC y/o cargado desde los 32 Kb de la EEPROM externa, el espacio de esta memoria se utiliza completamente. Las primeras localizaciones de la memoria son ocupadas por datos de inicialización utilizados por el intérprete; el espacio siguiente es utilizado por el código ejecutable y los datos del programa, mientras que el resto del espacio se utiliza para variables.

Los 32 KB de la ROM contienen todos los recursos del código y de los datos vitales para la función del chip del Propeller™ (definiciones de caracteres, funciones matemáticas, arranque y el intérprete). Su primera mitad está dedicada a la definición de un juego de 256 caracteres (16 pixels de ancho y 32 pixels de alto). Estos caracteres se pueden utilizar para mostrarse en pantallas de video, LCD's gráficos, imprimir, etc. Algunos de estos caracteres contienen formas de onda, dibujos de diagrama esquemático, símbolos griegos usados comúnmente en electrónica, y varias flechas y bullets.

Líneas de Entradas/Salidas
El Propeller™ tiene 32 pins de I/O destinados para soporte de señales de entrada, salida y control. De estos 32 pins, 28 (0-27) son enteramente para propósito general y 4 (28-31) son empleados para propósito especial durante el arranque (comunicación con el PC para programación e interfaz) para poder ser utilizados posteriormente para propósito general.

Como en todos los módulos de Parallax, los dos dispositivos que soportan el peso del trabajo son el microcontrolador y la memoria EEPROM. En el siguiente esquema se muestra un ejemplo del conexionado entre estos dos elementos y una interfaz tipo USB (controlador USB externo) que hace posible la adaptación de los niveles lógicos que utiliza el PC a los niveles TTL del microcontrolador.

PROPELLER, Propeller, Parallax, P8X32A, P8X32A-D40, P8X32A-Q44, P8X32A-M44, SPIN, BASIC Stamp 3, 32 bits

La comunicación de la memoria EEPROM con el microcontrolador es de tipo serie, mediante el bus I2C, que permite la transferencia de datos a través de un bus bidireccional de dos líneas, una para la entrada/salida (escritura/lectura) de la información serie (SDA), y otra que soporta los impulsos de reloj y sirve para sincronizar cuando el emisor envía un bit de información y el receptor lo recoge (SCL).

Lenguaje SPIN™
El lenguaje ensamblador sigue siendo todavía algo indispensable si queremos crear un programa genuino de "tiempo real" . No obstante, el Propeller™ se puede programar también en un lenguaje de alto nivel, como el SPIN , que dispone del siguiente repertorio:

Block Designators
CON
VAR
OBJ
PUB
PRI
DAT

Configuration
CHIPVER
CLKMODE
_CLKMODE
CLKFREQ
_CLKFREQ
CLKSET
_XINFREQ
_STACK
RCFAST
RCSLOW
XINPUT
XTAL1
XTAL2
XTAL3
PLL1X
PLL2X
PLL4X
PLL8X
PLL16X

Cog Control
COGID
COGNEW
COGINIT
COGSTOP
REBOOT

Process Control
LOCKNEW
LOCKRET
LOCKCLR
LOCKSET
WAITCNT
WAITPEQ
WAITPNE
WAITVID
Flow Control
IF
CASE
REPEAT
NEXT
QUIT
RETURN
...ELSEIF
...ELSE
...OTHER
...FROM
...TO
...STEP
...UNTIL
...WHILE
ABORT

Memory
BYTE
WORD
LONG
BYTEFILL
WORDFILL
LONGFILL
BYTEMOVE
WORDMOVE
LONGMOVE
LOOKUP
LOOKUPZ
LOOKDOWN
LOOKDOWNZ
STRSIZE
STRCOMP

Directives
STRING
CONSTANT
FLOAT
ROUND
TRUNC
FILE

Variables
RESULT
Registers
DIRA
DIRB
INA
INB
OUTA
OUTB
CNT
CTRA
CTRB
FRQA
FRQB
PHSA
PHSB
VCFG
VSCL
PAR
SPR

Constants
TRUE
FALSE
POSX
NEGX
PI

Unary Operators
+
-
- -
+ +
^^
||
~
~~
?
|<
>|
!
NOT
@
@@

Binary Operators
= --and-- =
:= --and-- :=
+ --or-- +=
- --or-- -=
* --or-- *=
** --or-- **=
/ --or-- /=
// --or-- //=
#> --or-- #>=
<# --or-- <#=
~> --or-- ~>=
<< --or-- <<=
>> --or-- >>=
<- --or-- <-=
-> --or-- ->=
>< --or-- ><=
& --or-- &=
| --or-- |=
^ --or-- ^=
AND --or-- AND=
OR --or-- OR=
= = --or-- = = =
<> --or-- <>=
< --or-- <=
> --or-- >=
=< --or-- =<=
=> --or-- =>=

Syntax Symbols
#
.
..
:
|

,
( )
[ ]
{ }
{{ }}
'
"


Entorno de desarrollo

Los ingenieros de Parallax han utilizado muchos entornos de desarrollo durante más de 20 años. Esta experiencia ha permitido diseñar, en esta ocasión, un software de desarrollo para programar al Propeller™ basado en herramientas simples y prácticas, que proporciona muchas funciones útiles, al mismo tiempo que rapidez en el trabajo de desarrollo.

PROPELLER, Propeller, Parallax, P8X32A, P8X32A-D40, P8X32A-Q44, P8X32A-M44, SPIN, BASIC Stamp 3, 32 bits

Asi pues, encontramos que este software se compone de un único y pequeño archivo ejecutable, con ayuda en línea y biblioteca de ejemplos; todo disponible en la misma carpeta de instalación. Ni siquiera usa archivos especiales de sistema.

Cada archivo de la biblioteca (archivos con extensión ".spin") es un objeto autónomo, disponible para su uso en nuestros proyectos para el Propeller™, con el código fuente y documentación incluido en el mismo archivo. En realidad, estos son archivos de texto que pueden ser editados con cualquier editor de textos, incluso el Bloc de notas del Windows. El objeto en que estemos trabajando, en cualquiera de los 3 modos de edición, también será almacenado con el mismo formato pero en el directorio de trabajo de nuestra elección.

La herramienta incluye muchas facilidades para añadir al código comentarios, "bookmarks" y números de líneas, así como una fuente de caracteres especiales para toda clase de diagramas. Sobre esto último cabe destacar que, una vez que hemos utilizado por primera vez el software del Propeller™, esta fuente está disponible para otros programas instalados en el ordenador, de manera que desde un Word hasta el mismo Bloc de notas se pueden utilizar dichos caracteres para realizar esquemas de circuitos electrónicos, muestras de ondas de señales, tablas, etc.; incluso desde un programa de correo (siempre que soporte texto Unicode).

La organización de la pantalla del software del Propeller™ está partida en cuatro secciones o paneles, cada uno con funciones específicas, que ofrecen en definitiva facilidades para el trabajo actual, para continuar con el último trabajo, para trabajar con varios proyectos a la vez, para localizar archivos fácilmente, ... Incluso permite mover bloques de código y sacar fuera de la herramienta de edición ventanas con proyectos (mediante "arrastrar y soltar"), con el fin de organizar mejor nuestra área de trabajo.

Además, una barra de estado al pie nos ofrece información útil sobre las varias etapas del proceso de desarrollo.

Disponibilidad
Este producto probablemente estará disponible a partir de comienzos de mayo de 2006.


Bibliografía:
En el sitio web de Parallax hay una página dedicada exclusivamente al Propeller™, que ofrece información actualizada sobre el producto: http://www.parallax.com/Propeller

Palabras claves: Propeller, microcontrolador, 8 procesadores, 32 bits, SPIN, assembler, hub, EEPROM, USB

Comentarios de los lectores a este artículo:

30/03/2006 - Jim Shaffer
FASCINANTE!
Gracias por la primicia. Su pongo que sera un poco caro, hay muchos que prefieren menos precio y potencia pero no soy uno de esos. El articulo estaba bien pero lo de programar cogs... Me parece un poco especializado, no me ha quedado claro, pero bueno, ya se vera.

30/03/2006 - Gregorio Vecchi
Estupendo esperemos que salga con un precio atractivo

30/03/2006 - Lorenzo M. Oliver
Bueno, pues ya tenemos precios: http://forums.parallax.com/forums/default.aspx?f=3&m=117903
Más económico de lo que pensaban algunos...

05/05/2006 - Aristides III
Como siempre, didáctico y muy claro, felicitaciones!!!!

22/11/2006 - picmouse
Bueno fascinante, ya tengo el mio en mis manos y solo quiro empezar ya. hay aguien que me pueda dar mas informacion? un tutorial seria estupendo. muchas gracias.

23/11/2006 - Lorenzo M. Oliver
Picmouse, échale un vistazo a la página principal del monográfico del Propeller http://www.todomicrostamp.com/propeller.php donde hemos hecho disponible un enlace para descargarse una traducción al CASTELLANO de los 3 primeros capítulos de la documentación de Parallax, por cortesía del distribuidor de Parallax en España (Ingeniería de Microsistemas Programados).

Nombre
   Email
Comentario
(máx. 200 caráct.)  
--> Introduce este número en la siguiente casilla   
Robótica con microcontroladores BASIC Stamp de Parallax. Cualquier nombre de productos o marcas registradas que puedan aparecer en este sitio web, aparecen con fines de identificación y están registradas por sus respectivas compañías. 'BASIC Stamp' es una marca registrada de Parallax, Inc. Aviso legal
Autor/es:
Lorenzo M. Oliver
Datos contacto: