 |
|
¿Qué se puede hacer con 8 procesadores de 32 bits en un solo chip? |
|
|
|
[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.
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.
|
 |
| 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".

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

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.
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).
|
 |
|
|
 |
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
|
|
|
|