Resumen Micro
Resumen Micro
Sistemas Digitales
Estos son cualquier dispositivo que tenga como función la transmisión, procesamiento,
almacenamiento o generación de señales digitales
Señal Análoga
Una señal analógica quiere decir que la información, señal, para pasar de un valor a otro pasa por
todos los valores intermedios esto quiere decir que es continua, puede tomar valores infinitos.
Señal Digital
Una señal digital es aquella variación que permite transmitir información discreta en amplitud y en
intervalos de tiempo, dicho de otra forma, esta es discontinua. Estas son importantes pues que son
fáciles de procesar por medios digitales, además de proveer varias ventajas, entre ellas:
Un sistema que procesa señales digitales no es capaz de comprender valores analógicos de forma
directa; de hecho, un sistema digital trabaja completamente con valores codificados de manera
binaria. Los circuitos internos de un sistema digital solamente son capaces de comprender la
existencia de voltaje o su falta. Estos dos estados pueden ser representados por medio del sistema
binario; cada combinación se hace por medio de los números binarios.
Sistemas digitales Combinacionales: Sistemas cuyas salidas solo dependen del estado de sus
entradas en un momento dado, no dependen de los estados previos de las entradas.
Sistemas digitales secuenciales: Sistemas cuyas salidas dependen además del estado de sus
entradas en un momento dado, de estados previos.
Parte física: conformada por el hardware el cual es la parte tangible de un sistema digital,
conformada por partes como sus componentes eléctricos, electrónicos y mecánicos.
Sistemas embebidos
Sistema de computación diseñado para realizar una o pocas funciones dedicadas e integrada en un
dispositivo. La palabra embebido implica que se encuentra adjunto o ligado dentro de algo. Un
sistema se refiere a un arreglo en el que todas las unidades trabajan en conjunto de acuerdo a un
plan.
La funcionalidad será la que nos definirá lo que realmente es un sistema embebido. Estos son
creados para una o muy pocas funciones específicas. Un sistema embebido debe cumplir y
dedicarse por completo a la función para la que fue creado.
Ejecutar una o muy pocas tareas: En el momento que un sistema se encuentra ejecutando
muchas tareas, pierde su objetivo de ser dedicado lo que no permite la optimización de
recursos y tamaño del dispositivo final.
Procesamiento en tiempo real: Se considera que un sistema realiza procesamiento en tiempo
real cuando es capaz de terminar procesos más rápido de lo que suceden eventos externos que
modifiquen el sistema de modo que su reacción sea aparentemente instantánea.
Bajo costo: El sistema embebido es concebido para ser producido en miles o millones de
unidades y comercializado, por lo que debe tener un costo bajo.
Bajo consumo de potencia: Se enfoca en la optimización del consumo energético del sistema.
Tanto por el costo que generaría como el tamaño, de ser necesario de contar con una batería.
Pues si requiere mayor potencia, de mayor tamaño sería la batería dejando de ser un sistema
embebido.
Mínimo uso de memoria: El tamaño del código debe ser el mínimo posible, al igual que el uso
de memoria que responde siempre a mantener dimensiones físicas pequeñas y costos bajos.
Dimensiones físicas pequeñas: Si se desea reducir el costo y consumo energético, se debe tener
la capacidad de administrar bien los recursos del sistema utilizando solo el mínimo necesario.
Al momento de diseñar un sistema embebido, se debe considerar que su unidad de
procesamiento sea de dimensiones físicas pequeñas para no afectar los costos de producción.
Capaz de interactuar con el mundo físico: Un sistema embebido interactuará con su entorno
por medio de sensores y actuadores, por lo que periféricos que permitan esta interacción con
el mundo físico son obligatorios.
Microcontrolador
Circuito integrado programable, compuesto por una unidad central de procesamiento, memoria,
periféricos de entrada/salida y buses que interconectan todas las pertes, dentro de un chip. Ejecuta
instrucciones grabadas en su memoria para realizar una tarea específica.
Registros de memoria
Es un pequeño espacio de memoria sumamente veloz, en el cual se
almacena información que se utiliza frecuentemente, lo que agiliza
la ejecución de instrucciones.
Registros de punto flotante
La FPU no utiliza los registros de propósito general, sino que sus
propios registros, llamados pila de registros. Su nomenclatura es
Sn, siendo n el número de registro de punto flotante yendo de S0 a
S31.
Registros constantes
Los registros constantes son valores de solo lectura definidos por el
hardware
Registros de propósito específico
Guardan información del estado de ejecución del programa.
o Encapsulado: es lo que rodea a la oblea de silicio en sí, para darle consistencia,
impedir su deterioro y permitir el enlace con los conectores externos que lo
acoplaran a su zócalo de la placa base.
Una de las características principales de un microcontrolador es el tamaño reducido, por lo cual las
memorias suelen estar dentro del mismo integrado. No se encontrarán de un gran tamaño debido
al espacio reducido.
o ROM La memoria de solo lectura o ROM es utilizada para almacenar datos de forma
permanente; el procesador puede leer información mas no escribir información en
ella. Al no necesitar una fuente de poder, esta memoria es conocida como memoria
no volátil.
Periféricos
o Entradas y salidas
Debido a que un microcontrolador está diseñado para interactuar con su entorno físico,
comunicarse con su exterior es imprescindible los microcontroladores cuentan con una serie de
pines de propósito general que funcionan como entradas y salidas digitales del sistema que brindan
información por medio de señales eléctricas.
o Circuitos especializados
Dentro de estos se habla de cualquier circuito electrónico integrado dentro del microcontrolador
encargado de realizar una función específica. Algunos periféricos, como el reloj del sistema, son
necesarios para el funcionamiento del microcontrolador. Existe una gran variedad de circuitos
especializados y cada uno varía entre modelos diferentes. Es necesario analizar un modelo
específico para poder detallar cada uno.
Buses
Arquitectura de un microprocesador
Existen dos tipos de set de instrucciones para un procesador:
Arquitectura de memoria
Un microprocesador está compuesto por varios bloques interconectados entre sí pero cada uno de
ellos tiene una función específica que cumplir, al diseño e interconexión de estos bloques se le
denomina arquitectura.
En la actualidad existen dos arquitecturas de memoria. Estas han ido evolucionando desde su
aparición, pero conservan el nombre e idea originales.
La importancia de esta arquitectura es que opera con una sola unidad de memoria; por lo que los
datos y el programa se graban en la misma memoria y comparten los mismos buses de
comunicación.
Este sistema planteaba una arquitectura similar a la de Von-Neumann con la diferencia de que
incorporaba una memoria para instrucciones y una memoria para datos, cada una con un bus
diferente, lo que permitía una mayor velocidad de procesamiento
ARM
Por sus siglas en inglés advanced RISC machine, es una arquitectura RISC de 32 y 64 bits. Fue
desarrollada por la compañía ARM Holdings que solamente se limita a licenciar sus diseños.
La característica principal de los procesadores ARM, es su bajo consumo de potencia, lo cual los
hace perfectos para el uso en dispositivos portátiles. Esta simplicidad se debe a la falta de
microcódigo y su Instruction Set ARquitecture (ISA) basado en RISC que utiliza una menor cantidad
de transistores en comparación con otras arquitecturas.
Córtex-A
Esta familia de procesadores está basada en la aplicación y utilización para terceros. Los fabricantes
de diferentes productos compran una licencia de esta familia para poderlos adecuar al usuario final.
Generalmente son utilizados en Smartphone, videojuegos y tabletas.
Córtex-R
La característica principal de esta familia es la velocidad de procesamiento, puesto que están
destinados a aplicaciones en tiempo real, donde se necesita una rápida respuesta. Utilizados en el
campo de equipo médico, aviación y robótica.
SecureCore
Córtex-M
La familia de los Cortex-M fue diseñada específicamente para el mercado de los microcontroladores.
Los procesadores Cortex-M cuentan con un alto rendimiento comparado con otro procesador típico
de la mayoría de microcontroladores, destacan por su bajo consumo de potencia. Han llegado a ser
tan bien aceptados que dominan el mercado de los microcontroladores; es la arquitectura más
empleada de 32-bits en la historia. Entre sus características principales se encuentran:
Los procesadores Cortex-M tienen 6 miembros diferentes dentro de su familia; apuntan cada uno a
una necesidad diferente ya sea de alto rendimiento o de ultrabajo consumo de potencia. Los
procesadores Cortex-M son:
Cortex-M0: un procesador muy pequeño (de 12 mil compuertas), de bajo costo, ultrabajo
consumo de potencia y sistemas embebidos reducidos. Utiliza una versión ARMv6-M con
arquitectura de memoria Von Neumann.
Cortex-M0+: el procesador más eficiente en consumo de potencia de la familia. Diseñado
para sistemas embebidos pequeños, cuenta con un tamaño similar al Cortex-M0, pero con
algunas características extras. Utiliza una versión ARMv6-M con arquitectura de memoria
Von Neumann.
Cortex-M1: procesador pequeño, con un diseño optimizado para su implementación en
diseños de FPGA. Instrucciones y arquitectura iguales a las del Cortex-M0.
Cortex-M3: procesador pequeño, pero de alto rendimiento para microcontroladores de
bajo consumo de potencia con un set de instrucciones alto (Thumb-2) que le permite
realizar tareas complicadas de manera rápida. Cuenta con un divisor de hardware, una
unidad MAC (siglas en inglés de multiply-accumulate), una unidad para depuración y
diferentes herramientas para desarrollo. Utiliza una versión ARMv7-M con arquitectura de
memoria Harvard.
Cortex-M4: contiene todas las características de un Cortex-M3, con instrucciones
adicionales para el procesamiento digital de señales, esto debido a que incluye una unidad
DSP incorporada. También, cuenta con instrucciones SIMD (siglas en inglés para single
instruction multiple data) y operaciones de un ciclo MAC. Algunas versiones incluyen un
coprocesador de punto flotante con soporte para el estándar IEEE-754. Estos últimos
reciben el nombre de Cortex-M4F. Cortex-M4F es el procesador que utiliza la tiva que
tenemos.
Cortex-M7: procesadores de alto rendimiento para microcontroladores de alto nivel con
aplicaciones de procesos intensivos. Contiene todas las características de un Cortex-M4 con
soporte adicional para unidad de 47 punto flotante de doble precisión y algunas
características de memoria como caché y TCM (siglas en inglés para tightly coupled
memory).
Microcontrolador TM4C123GH6PM
El TM4C123GH6PM de Texas Instruments es un microcontrolador de alto rendimiento de 32-bits
con una arquitectura ARM Córtex-M y una amplia cantidad de herramientas para el desarrollo de
aplicaciones.
Características
Set de instrucciones: Las arquitecturas ARM implementan dos sets de instrucciones: ARM y
Thumb; su diferencia es su codificación. ARM es un set de instrucciones de 32 bits de largo,
mientras que las instrucciones de Thumb son de 16-bits. ARM tiene una codificación de 4
bytes, esto implica que, sus instrucciones de 32-bits se dividen en cuatro bytes mientras que
Thumb cuenta con una codificación de 2 bytes. El desarrollador decide qué tipo de
codificación utilizará, de modo que el procesador decodificará las instrucciones como tipo
Thumb o ARM. Las instrucciones ARM son más rápidas y potentes (hay instrucciones que
solo están en este modo) pero implican mayor consumo de memoria y de electricidad.
Thumb por el contrario es más limitado, con instrucciones que ocupan 2 bytes, pero con
menor consumo de potencia. En las versiones ARMv-7 se comienza a implementar un nuevo
set de instrucciones conocido como Thumb-2. Las instrucciones Thumb-2 son una mezcla
entre ARM y Thumb, de modo que las instrucciones pueden ser de 16 o 32 bits. Tiene un
código 26 % menor que ARM y 25 % en mejora de rendimiento con respecto a Thumb.
Temporizador del sistema (SysTick) Los procesadores ARM Cortex-M4F incluyen un
temporizador llamado SysTick. Este se incluye en todos los diseños de la familia Cortex-M.
Su importancia radica en que los periféricos incluidos dentro de un microcontrolador
dependen del fabricante; sin embargo, el temporizador del sistema siempre estará presente
en todos los diseños ARM, por lo que su uso no depende del mismo. Es un temporizador
simple de 24-bits decreciente que se puede usar de diferentes formas.
System control block (SCB) El SCB, es un bloque encargado del control del sistema,
configuración, control y reporte de las excepciones o fallas del mismo.
Memory protection unit (MPU) Sistema de protección de memoria para ARM7. Utiliza el
modelo PMSA (siglas en inglés para protected memory system architecture). Es el
encargado de proteger regiones de la memoria, evitar traslape de regiones, los permisos de
acceso a memoria y la exportación de atributos al sistema.
Floating point unit (FPU) Coprocesador del sistema encargado de dar soporte a operaciones
de precisión simple, como suma, resta, multiplicación, división, multiplicación, acumulación
y raíz cuadrada. También, permite la conversión entre datos e instrucciones de enteros y de
punto flotante. Cuenta con las siguientes características:
JTAG
JTAG (siglas en inglés de joint test action group) es un estándar IEEE que define un puerto de acceso
de pruebas y un escaneo en la arquitectura por medio de una interfaz, lo que proporciona
información de los circuitos y componentes para realización de ensayos, observación, control y
depuración del código.
Periféricos principales
Señal de reloj: La señal de reloj es una señal digital cuadrada encargada de la sincronización
de los componentes de un sistema digital.
Esta señal oscila entre estados altos y bajos con un ciclo de trabajo del 50 %, esto implica
que los primeros duran lo mismo que los otros. Se mide utilizando las unidades Hertz, que
representan cantidad de ciclos por segundo. La señal de reloj es de gran importancia en
cualquier sistema digital, dado que dicta la ejecución de las instrucciones dentro de la
unidad de procesamiento y la sincronización de los componentes internos. La unidad de
procesamiento necesita un número establecido de ciclos de reloj para ejecutar una
instrucción, de modo que, a una mayor velocidad de reloj, mayor cantidad de instrucciones
se ejecutarán en menor tiempo.
La sincronización de los componentes internos por medio del reloj funciona como un
metrónomo, cada flanco de subida o bajada (según se especifique), cada componente
realizará una acción, de modo que los estados cambiarán todos al mismo tiempo y
mantendrá el funcionamiento del sistema de manera ordenada, evitando
congestionamiento dentro del mismo y corrigiendo la diferencia de tiempos de ejecución
entre componentes.
Al iniciar el diseño de un sistema embebido, debe configurarse inicialmente la velocidad de
reloj y su fuente para el sistema. Es importante también recordar que cada periférico
necesita estar sincronizado con la unidad de procesamiento por lo que es imprescindible la
configuración y habilitación de una señal de reloj para cada periférico a utilizar.
Las entradas y salidas de propósito general GPIO (siglas en inglés para general purpose
inputs and outputs) son pines sin algún propósito específico definido cuyo comportamiento
puede ser controlado por el usuario. Un puerto GPIO es un grupo de pines GPIO ordenados
y controlados como grupo, generalmente de hasta 8 pines. Si se configuran como entradas,
su propósito será introducir datos externos al sistema digital para su procesamiento. Si son
configurados como salidas, su propósito será recibir la información procesada por el sistema
digital y reproducirla
El módulo GPIO provee control sobre 8 pines diferentes e independientes de cada puerto.
Se cuenta con 6 puertos diferentes nombrados alfabéticamente desde A hasta F. Cada pin
puede ser configurado con cada uno de los siguientes parámetros
Lenguaje Informático
Si se pudiera observar un programa dentro de un sistema embebido, solamente se podría notar una
larga sucesión de bits (código máquina) pues, a nivel de hardware, es lo único que comprende la
unidad de procesamiento. Al escribir un programa, no se hace utilizando sucesiones de bits, puesto
que esto implicaría demasiado tiempo y es muy propenso a errores. Es por esto que los primeros
operadores de computadoras decidieron reemplazar estas cadenas de bits por palabras y letras de
fácil entendimiento para el ser humano, lo cual dio origen al lenguaje ensamblador.
Al leer un archivo escrito en lenguaje ensamblador se sustituye cada una de las palabras y
parámetros clave por código de operación correspondiente en sistema binario. Es por esto que
recibe el nombre de lenguaje de bajo nivel o de nivel próximo a máquina. A finales de los años 50,
surge un nuevo tipo de lenguajes de programación que tenían como objetivo que el usuario común
pudiese escribir código de una manera más fácil y rápida. Estos lenguajes tienen una estructura
semántica similar al lenguaje utilizado por los seres humanos por lo que reciben el nombre de
lenguajes de alto nivel o de tercera generación. Entre sus ventajas se encuentran las siguientes:
Lenguaje C
El lenguaje C, es un lenguaje de alto nivel que posee muchas características importantes:
programación estructurada, métodos de llamadas a funciones, traspaso de parámetros, estructuras
de control, entre otras.
Este lenguaje es de gran utilidad debido a su gran flexibilidad de programación; permite la habilidad
de combinar comandos simples de bajo nivel en complicadas funciones de alto nivel. Provee acceso
a la memoria de bajo nivel y construcciones del lenguaje que representan al código de la forma más
cercana a código de máquina, a tal punto que algunos llegan a considerarlo actualmente un lenguaje
de bajo nivel, motivo por el cual es el lenguaje más popular para escribir programas en
microcontroladores.
Un IDE es un entorno de programación que ha sido empaquetado como una aplicación. Está
diseñado para maximizar la productividad del programador ofreciendo las herramientas para la
creación, modificación, compilación, interpretación y depuración de código. Su objetivo es reducir
el tiempo de desarrollo, pues aprender el uso de un IDE es más rápido que aprender e integrar
manualmente todas las herramientas por separado. Para el controlador TM4C123GH6PM se cuenta
con diferentes entornos de desarrollo integrado:
o Mentor embedded
o IAR systems
o ARM keil
o Code composer studio
o Energia