Sunteți pe pagina 1din 5

Implementacin del procesador Cortex-M0

DesignStart en una FPGA de rango bajo


Pedro Ignacio Martos y Fabricio Baglivo
Laboratorio de Sistemas Embebidos
Facultad de Ingeniera - UBA
Buenos Aires, Argentina
pmartos@fi.uba.ar / baglivofabricio@gmail.com

AbstractLos procesadores de la lnea CortexTM-M de ARM ltd. El procesador Cortex-M0 es el miembro de menor rango
estn orientados a la implementacin de microcontroladores y dentro de la familia Cortex-M de procesadores de ARM. Esta
dispositivos mixtos (mixed signal) de bajo costo y bajo consumo; familia permite realizar distintos tipos de compromisos entre
tanto como dispositivos en silicio como softcores o hardblocks en costo, simpleza de diseo, consumo, performance y capacidad
FPGA. Actualmente hay soluciones de Cortex-M en FPGA de de procesamiento dentro del segmento Embedded Processors.
Altera (Cortex-M1 como softcore) y de Actel (Cortex-M1 como El Cortex-M0 apunta principalmente a lograr bajo consumo y
softcore y Cortex-M3 como hardblock); mientras que Xilinx no la menor rea de silicio, a fin de competir ventajosamente con
ofrece soluciones de Cortex-M para su lnea de FPGA. Por otra procesadores de 8 bits de alta gama o procesadores de 16 bits
parte, ARM ha lanzado recientemente una versin reducida y de mientras mantiene la compatibilidad de cdigo con
bajo costo del procesador Cortex-M0 (Cortex-M0 DesignStart) procesadores ms potentes de la familia como el Cortex-M3.
sintetizable tanto para FPGA como para silicio. En el presente
trabajo se muestran los resultados de la implementacin de dicho
La menor implementacin de Cortex-M0 consume 85W/MHz
procesador en una FPGA de rango bajo de Xilinx, logrndose de y ocupa un rea equivalente de 12.000 compuertas. Como
esta manera ampliar el rango de implementaciones de los referencia, un procesador clsico como el i8051 ocupa
procesadores Cortex-M en FPGA. tpicamente alrededor de 8.000 compuertas [1][2]. En la Fig. 2
vemos la ubicacin relativa de cada miembro de la familia
Keywords- Cortex-M0, FPGA Cortex-M en funcin de su performance y plataforma de
implementacin.
I. INTRODUCCION

A. Descripcin de las familias de procesadores de ARM


En la lnea de procesadores de ARM, la familia Cortex
consiste en cores que van desde soluciones orientadas a
microcontroladores de bajo costo hasta procesadores de alta
perfomance con capacidad de ejecutar sistemas operativos
complejos. Las lineas clsicas incluyen a las familias ARM7,
ARM9 y ARM11 y las series especializadas SecurCore para
aplicaciones de seguridad y criptografa. En la Fig. 1 se puede
apreciar la ubicacin relativa de cada familia en relacin a su
capacidad y funcionalidad.
Figura 2. Comparacin entre los distintos miembros de la familia Cortex-M

B. Arquitectura del procesador Cortex-M0

Este procesador esta basado en la arquitectura ARMv6-M


(Von Neumann) con un pipeline de 3 etapas, obteniendo un
Dhrystone de 0,9 DMIPS/MHz; implementa hasta 32
interrupciones enmascarables ms una no enmascarable a
travs de un controlador de interrupciones integrado (NVIC-
Nested Vectored Interrupt Controller) con una latencia fija de
16 ciclos de mquina [3]. La Fig. 3 muestra un diagrama en
bloques del procesador Cortex-M0
Figura 1. Relacin performance-capacidades de las distintas familias de
procesadores de ARM
C. Procesador Cortex-M0 DesignStart
El procesador Cortex-M0 DesignStart (M0DS) es una versin
reducida del procesador Cortex-M0 standard (M0S) y fue
lanzado al mercado el 4 de agosto de 2010. Sus principales
diferencias con el procesador M0S son: El procesador M0S
posee interfaces del bus AMBA-Lite como maestro y como
esclavo, mientras que el M0DS slo posee la interfase como
maestro; el M0S puede implementarse con un multiplicador
Figura 3. Diagrama en bloques de un procesador Cortex-M0 rpido de 1 ciclo de reloj o con uno lento de 32 ciclos de reloj,
mientras que el M0DS slo implementa el multiplicador lento.
Su interfase con otros perifricos es a travs de una versin El M0S puede implementar de 1 a 32 interrupciones, el M0DS
reducida del bus Advanced Microcontroller Bus Architecture implementa 16 interrupciones fijas. El M0S opcionalmente
(AMBA), denominada AMBA AHBLite. Este bus fue
puede incluir un controlador de interrupcin para bajo consumo
diseado como un bus de alta performance para transferencias
(WakeUp Interrupt Controller), control selectivo de reloj
rpidas entre el procesador y perifricos que requieran gran
ancho de banda y/o altas tasas de transferencia de datos. interno (arquitectural clock gating), hardware e interfaces de
Generalmente se lo implementa con un nico dispositivo que debugging (hasta 4 breakpoints por hardware y comunicacin
acta como maestro y el resto como esclavos, aunque la serial o JTAG) y un timer de referencia de 24 bits; el M0DS no
especificacin del bus permite la implementacin de mltiples incluye ninguna de las facilidades antes mencionadas [5][6][7].
maestros. Sus principales caractersticas son que permite
II. IMPLEMENTACIN
transferencias en rfaga, sus operaciones se realizan en un ciclo
de reloj (sincronizado con su flanco), no implementa tri-state y
A. Hardware y software utilizado
es configurable el ancho del bus (32, 64, 128, 256, 512 y 1024
bits) [4]. La Fig. 4 muestra una implementacin del bus y las La FPGA empleada es de una lnea madura y de rango bajo
Figs. 5 y 6 muestran las seales de un dispositivo maestro y un de Xilinx: S3E500-4; sus principales caractersticas son: 500K
dispositivo esclavo respectivamente. compuertas, 10500 celdas lgicas (equivalentes a 1100 bloques
lgicos configurables (CLB) o 4600 slices), 20 multiplicadores
por hardware, 360Kbits de bloques dedicados de ram, 73kbits
de ram distribuida, 4 controladores de reloj y una frecuencia
mxima de trabajo de 300MHz [8].
La placa utilizada es una placa bsica (starter board) de la
firma Digilent, modelo Nexys2. Cuenta con una FPGA
S3E500, una interfase de programacin y comunicaciones por
USB, 16 Mbytes de PSDRAM y 16 Mbytes de Flash ROM,
ms una PROM de configuracin; incluye un oscilador de
50MHz, 8 LEDS, 4 displays de 7 segmentos, 4 pulsadores y 8
Figura 4. Ejemplo de un sistema con bus AMBA-Lite interruptores. Hay disponibles 60 pines de I/O de la FPGA [9].
La Fig. 7 muestra un diagrama en bloque de la placa utilizada.

Figura 5. Seales de un dispositivo AMBA-Lite maestro

Figura 7. Diagrama en bloques de la placa de desarrollos utilizada

Una de las ventajas de esta placa es que, mediante un


software que se obtiene de la pgina web del fabricante
(Adept), es posible utilizar directamente las herramientas de
Figura 6. Seales de un dispositivo AMBA-Lite esclavo
programacin de Xilinx (Impact, Chipscope Pro, Xmd, etc.), lo
que permite programarla y ver su estado interno fcilmente.
Como herramientas de software se utiliz el entorno de determin la viabilidad de realizar la implementacin. Durante
desarrollo para FPGA de Xilinx ISE versin 12.2; para la la ejecucin del tem 2), en la simulacin se encontr que el
generacin de programas ejecutables en el procesador se utiliz procesador no llegaba a ejecutar la rutina principal del
el entorno de desarrollo ARM MDK de Keil Gmbh. programa, sino que entraba en un estado bloqueado. A fin de
encontrar la razn de ello, se continu con el tem 3), para
B. Elementos que integran el Cortex-M0 DesignStart Kit obtener una simulacin de la ejecucin del software en el
Este kit tiene dos componentes: el procesador, representado entorno de desarrollo del mismo. Para ello se utiliz el entorno
por dos archivos en verilog sintetizable y un test bench que de desarrollo ARM MDK de la firma Keil Gmbh, ya que era la
permite realizar pruebas bsicas. Por otra parte se incluye un herramienta que se indicaba en las notas de lanzamiento.
documento en formato PDF correspondiente a las notas de Al analizar en detalle el makefile para utilizarlo con el
lanzamiento (Release Notes) [5]. MDK se encontr que el mismo no era consistente: si bien las
El test bench se compone de un mdulo no sintetizable en herramientas de compilacin y enlazado eran del MDK (Armcc
verilog que implementa al procesador conectado a una y Armlink), los parmetros pasados no correspondan a dichas
memoria preinicializada con un programa simple. Completan el herramientas. Buscando en la documentacin de otros
test bench el cdigo fuente en C del programa; la imagen en proveedores de herramientas de software para procesadores
formato binario del programa y un makefile que permite ARM se lleg a la conclusin que los parmetros
obtener la imagen en formato binario a partir del cdigo fuente correspondan a las herramientas del IAR Embedded
en C. En la Fig. 8 se v el diagrama en bloques del test bench. Workbench de la firma IAR (Iccarm e Ilinkarm); por lo que el
makefile provisto era en realidad compuesto por distintos
makefiles y no serva para generar el archivo binario a partir
del archivo fuente.
Ante esta situacin, se decidi implementar un proyecto en
MDK con el archivo fuente provisto, obtener un archivo
binario, y utilizar este en la simulacin para verificar si se
repeta el problema del procesador bloqueado. Una vez
realizado esto, nuevamente se obtuvo un estado de procesador
bloqueado, pero al disponer del proyecto en MDK, era posible
comparar la simulacin de software en MDK con la simulacin
funcional del test bench en ISIM de Xilinx. Al realizar dicha
comparacin, se encontr que la simulacin del software en
MDK funcionaba correctamente, mientras que la simulacin
Figura 8. Diagrama en bloques del test bench funcional en el ISIM mostraba valores que no correspondan en
los buses de datos. Un anlisis detallado del problema mostr
C. Plan de trabajo de la implementacin que el test bench no estaba correctamente implementado: la
parte del mismo encargada de inicializar la memoria realizaba
La secuencia de actividades planificada fue: 1) verificar que
una lectura del archivo binario mediante la funcin de verilog
el procesador sea sintetizable en la FPGA seleccionada. 2)
$fread asumiendo que la misma realizaba una lectura de 4
crear un proyecto en la herramienta ISE de Xilinx que
bytes simultneamente (32bits), cuando la misma en la
implemente el test bench y verificar su correcto
implementacin de verilog de Xilinx realiza una lectura de 1
funcionamiento mediante simulacin. 3) generar el archivo
byte (8bits) a la vez; por lo que se corrigi el test bench a fin de
binario a partir del cdigo fuente utilizando el makefile
que se realice correctamente la inicializacin de la memoria; y
provisto. 4) verificar en el test bench que el archivo binario
de esa manera la simulacin de software del MDK coincidi
generado sea correcto mediante simulacin. 5) crear un
con la simulacin funcional de ISIM para el cdigo fuente
proyecto en la herramienta ISE de Xilinx que implemente con
provisto.
componentes sintetizables el sistema de test bench. 6) generar
un programa que permita interactuar con los recursos de Habiendo subsanado los inconvenientes antes
hardware de la placa, a fin de verificar la correcta mencionados, se paso a los tems 5) Sistema Sintetizable y 6)
implementacin del procesador. Verificar el mismo mediante Programa que utilice el hardware de la placa de desarrollos. Se
simulacin en el entorno de desarrollo del programa. 7) decidi empezar por el programa. A fin de no implementar un
Integrar la imagen binaria del programa generado al proyecto dispositivo esclavo con el que comunicar el procesador (lo que
que implementa el sistema sintetizable. Verificar su correcto agregara complejidad al proyecto), se decidi implementar un
funcionamiento mediante simulacin funcional en el entorno programa que cargara dos valores distintos constantes en una
ISE. 8) Sintetizar el proyecto con el programa integrado e variable con un cierto retardo entre cada carga. Esto generara
implementarlo en la placa de desarrollos. Verificar el correcto un programa que buscara dichos valores constantes en
acceso a los recursos de hardware de la placa. memoria, lo que obligara a aparecer a dichos valores sobre el
bus de datos del procesador, permitiendo su deteccin. Este
D. Secuencia de implementacin realizada programa se simul en el entorno MDK y se verific el acceso
El tem 1) se realiz sin mayor inconveniente, resultando en a memoria en busca de los valores constantes antes
un uso aproximado del 50% de los Slices de la FPGA, lo que mencionados. En la Fig. 9 se observa una captura de la pantalla
del simulador de software. Una vez realizada esta verificacin,
se cargo el programa en el test bench y se verifico en la ver seales internas de la FPGA, se verific la aparicin de los
simulacin funcional con ISIM que los valores elegidos valores constantes programados; y visualmente se verific que
aparecan sobre el bus de datos. En la Fig. 10 se ve una captura a los intervalos programados para los accesos a memoria, un
de la simulacin funcional en ISIM. led de la placa de desarrollos cambiaba de estado de encendido
a apagado, dndose as por validada la implementacin del
procesador en la FPGA.

III. RESULTADOS Y CONCLUSIONES


El resultado ms destacable es que es posible implementar
este procesador en una FPGA de rango bajo, lo que permite su
aplicacin en sistemas embebidos sobre FPGA de bajo costo.
Asimismo se ampli el espectro de implementacin del
procesador Cortex-M0, ya que ahora es posible implementarlo
sobre los tres principales proveedores de tecnologias de FPGA
(Xilinx, Altera y Actel), lo que lo convierte en una plataforma a
considerar en situaciones en las que la portabilidad entre
distintos fabricantes de FPGA es un requisito.
Figura 9. Simulacin de software mostrando el acceso a memoria
Como estadsticas de implementacin, en la Fig. 11 se
muestran los resultados de uso de la FPGA:

Figura 10. Simulacin funcional mostrando el acceso a memoria Figura 11. Estadisticas de uso de la FPGA una vez realizada la
implementacin del sistema
Siendo exitosas las simulaciones, se implemento el sistema
sintetizable. El mismo consta de las siguientes partes: Como resultados de temporizacin, la herramienta de
Procesador, con el cdigo verilog del procesador Cortex- sntesis y los resultados Post Place and Route indicaron una
M0DS; Sincronizador de reset, implementado con un frecuencia mxima de trabajo de alrededor de 40MHz. Cabe
contador que fija una seal en nivel alto al llegar al final del aclarar que no se realizaron ningn tipo de restricciones de
conteo, a fin de generar una seal de reset sincrnica con el temporizacin o ubicacin de componentes en el sistema.
reloj del sistema. Memoria, implementado como una RAM
preinicializada con el archivo binario generado en MDK. Otra particularidad de este procesador es que es posible
Reloj, que implementa la seal de reloj de referencia, a acceder directamente a los registros internos del mismo, lo que
travs de un DCM de la FPGA fijado a 10MHz a partir del lo hace til en aplicaciones educativas, ya que es posible
oscilador de 50MHz que provee la placa de desarrollos. Y observar la total concordancia entre la simulacin de software,
finalmente Detector de Bus, que detecta sobre el bus de datos la simulacin funcional en ISIM, y la verificacin de la
los valores constantes programados y comanda un Led de la implementacin a travs de ChipScope Pro a nivel de registros
placa de desarrollos que se prende cuando detecta un valor internos del procesador.
programado y se apaga cuando detecta el otro valor. Cabe Como aspecto a considerar sera las mejoras al test bench
destacar que fue necesario desarrollar un software que provisto; acortara mucho el tiempo de desarrollo tener un test
convirtiera el formato binario del archivo de programa al bench completo que permita generar el archivo binario a partir
formato COE necesario para inicializar la memoria. Se verific del archivo fuente. Esto no fue posible con los elementos
mediante simulacin funcional en el ISIM el correcto provistos, por lo que fue necesario realizar las actividades
funcionamiento del sistema completo, en particular del detector mencionadas en la implementacin.
de bus, el cual reaccion correctamente frente a los datos que
aparecan sucesivamente sobre el bus de datos. Como conclusin, este procesador se integra a la familia de
procesadores softcore sintetizables sobre FPGAs de Xilinx,
Finalmente se implemento completamente el sistema y se junto con el Microblaze y el Picoblaze, ofreciendo la ventaja de
program la placa con el mismo, realizndose las siguientes ser migrable a otras arquitecturas de FPGA (Actel, Altera).
verificaciones: con la herramienta ChipScope Pro, que permite Como lnea de trabajo futura se propone crear una
implementacin de bus AMBA-Lite y perifricos compatibles
con este bus, a fin de aumentar sus capacidades y convertirlo
en una opcin a tener en cuenta en la creacin de sistemas
embebidos sobre FPGAs de Xilinx. Una vez realizado esto se
buscar desarrollar un sistema con capacidad de ejecutar
variantes de embedded Linux, a fin de aplicarlo en el rea
educativa en el Curso de Sistemas Embebidos dictado por la
FI-UBA.

IV. REFERENCIAS

[1] CAST T8051 Core Product Brochure (www.cast-inc.com)


[2] IPextreme M8051EW+ Core Product Characteristics (www.ip-
extreme.com)
[3] ARM Ltd, ARM DDI 0419C ARMv6-M Architecture Reference
Manual, Septiembre de 2010.
[4] ARM Ltd, ARM IHI 0033A AMBA 3 AHB-Lite Protocol V.1.0
Specification, Junio de 2006.
[5] ARM Ltd, AT510-DC-80001-r0p0-00-rel0 ARM Cortex-M0
DesignStart Release Note, Agosto de 2010.
[6] ARM Ltd, ARM DDI 0432C Cortex-M0 Revision r0p0 Technical
Reference Manual, Noviembre de 2009.
[7] ARM Ltd, ARM DUI 0497A Cortex-M0 Devices Generic User
Guide, Octubre de 2009.
[8] Xilinx, DS312 Spartan-3E FPGA Family: Datasheet, Agosto de 2009.
[9] Digilent, Digilent Nexys2 Board Reference Manual, Junio de 2008.

V. AGRADECIMIENTOS
A la gente del programa universitario de ARM, en particular a William Hohl y
Joe Bungo; a Fiona Cole de Digilent Inc.; y la gente del programa
universitario de Xilinx (XUP) por su ayuda y cooperacin.

VI. MARCAS REGISTRADAS


La informacin acerca de las familias de procesadores de ARM fue extraida
principalmente del sitio web de ARM Ltd. (www.arm.com) publicada en
octubre de 2010.

ARM, Cortex, Cortex-M, AMBA, AMBA-Lite, y otras marcas mencionadas


son marcas registradas de ARM Limited.

Xilinx, Spartan, ISE, y otras marcas mencionadas son marcas registradas de


Xilinx Inc.

Digilent, Nexys2, Adept, y otras marcas mencionadas son marcas registradas


de Digilent Inc.

Todas las otras marcas registradas mencionadas son propiedad de sus


respectivos propietarios.

Las Figuras 1 a 6 y la Figura 8 son copyright ARM Ltd. Reproducidas con


permiso.

La Figura 7 es copyright Digilent Inc. Reproducida con permiso.

S-ar putea să vă placă și