Contenido

Objetivos

Al terminar el curso, el estudiante estará capacitado para:

  1. Entender funcionalmente cómo trabaja un sistema de computadoras:
    • Describir los pasos que se realizan para ejecutar un programa en procesadores con distintas estructuras de buses internos.
    • Comparar las distintas estructuras de buses del procesador en función de la performance.
    • Describir cómo se realiza la comunicación del procesador con el mundo exterior: conexión de memoria y dispositivos de entrada/salida.
    • Describir características de los dispositivos de entrada/salida.
    • Describir ventajas y desventajas de programar en lenguaje ensamblador versus el lenguaje superior.
  2. Interconectar circuitos integrados similares (contadores, registros de desplazamiento) aprovechando y manteniendo la modularidad y regularidad de su diseño.
  3. Escribir programas en lenguaje ensamblador para el procesador ARM Cortex-M4 y ejecutarlos en un simulador de un microcontrolador NXP LPC4337.
  4. Describir los diversos módulos internos y el mapa de memoria del NXP LPC4337.
  5. Emplear el controlador de interrupciones (NVIC) de la arquitectura ARM para:
    • Configurar el sistema de interrupciones.
    • Generar interrupciones por software empleando el módulo temporizador de ARM (SysTick) para diseñar un sistema con reloj.
  6. Emplear interrupciones externas y los puertos de entradas/salidas digítales GPIO para:
    • Conectar y manejar dispositivos externos al microcontrolador.
    • Manejar la entrada y salida de datos sincrónica o asincrónica, en modo byte o modo bloque, por programa principal o por interrupciones. Comparar las diferentes alternativas.
    • Calcular la caída en performance del procesador debido a las interrupciones.
    • Calcular la cantidad máxima de dispositivos que pueden transferir datos a un procesador a una tasa determinada.
    • Calcular la tasa máxima de transferencia de datos entre un dispositivo y el microcontrolador.
  7. Describir el funcionamiento de un sistema de acceso directo a memoria (DMA) para transferir datos hacia y desde un periférico mediante robo de ciclo o mediante transferencias de bloques completos. Calcular medidas de performance para compararlas con los otros métodos de entrada/salida de datos.
  8. Emplear el módulo de temporizadores y sus canales (TIMER 0/1/2/3) para el diseño de diversas soluciones:
    • Medición del tiempo entre dos eventos.
    • Medición de la frecuencia de una señal periódica.
    • Medición del Duty Factor de una señal periódica.
    • Generación de señales periódicas.
    • Diseño de un sistema con reloj.
  9. Usar manuales del fabricante para aplicar los conocimientos obtenidos en el curso en otros dispositivos internos.
  10. Emplear los conceptos aprendidos en el curso para realizar el diseño de un sistema embebido.
  11. Trabajar en grupo adecuadamente para el diseño de un sistema embebido.
  12. Exponer un seminario de un proyecto de diseño con buena expresión oral.
  13. Escribir el informe final de un proyecto con buena expresión escrita.

Nota: El aprendizaje real de la materia no puede llevarse a cabo sin estudiar y usar un microcontrolador del mercado. Se ha elegido para ello el microcontrolador NXP LPC4337. Las razones de la selección del microcontrolador son las siguientes:

  1. Se trata del microcontrolador con el cual están fabricadas las placas EDU-CIAA producidas hasta el momento. El laboratorio cuenta con un número importante de estas placas para realizar las prácticas de la asignatura.
  2. El núcleo del microcontrolador esta basado en un procesador ARM Cortex-M4, contando también con un ARM Cortex-M0 como núcleo adicional. Los procesadores ARM son actualmente los más usados en aplicaciones embebidas, con una tendencia creciente, por lo cual constituyen el estándar de hecho.
  3. Costos muy accesibles con amplia posibilidad de acceso por parte de los estudiantes y de la cátedra.
  4. No representa pérdida de generalidad. El estudiante necesitará muy poco esfuerzo para usar otros microprocesadores y microcontroladores.
  5. El ARM Cortex-M4 posee un muy amplio nivel de prestaciones, lo que lo hace apto para la realización de prácticas en varias asignaturas de la carrera: Programación I, Transmisión de Datos y Procesamiento Digital de Señales.

Articulación: El aprendizaje de sistemas embebidos se encara de manera vertical. Concretamente los conceptos básicos se aprenden en profundidad a partir de un microcontrolador de 32 bits. El estudiante contará con una base para encarar el aprendizaje y aplicación a otros procesadores y sistemas embebidos. Sistemas de tiempo real se aprenden en la asignatura Sistemas Operativos. Arquitectura de procesadores embebidos se estudian comparativamente con procesadores de propósito general en la asignatura Arquitectura de Computadoras. El lenguaje que se enseña es assembler, ya que C se enseña en materia previa de programación.

Forma de dictado

Se dictarán clases cuatro veces por semana: tres clases teóricas y otra práctica de dos horas cada una. El horario definitivo se fijará de común acuerdo con los estudiantes durante la clase inicial. El contenido de la asignatura se divide en tres módulos. La evaluación de los dos primeros módulos se realizará mediante los correspondientes trabajos prácticos, de laboratorio y examen parcial. La evaluación del tercer módulo se llevará a cabo mediante seminarios de diseño de diversos temas, a cargo de grupos de estudiantes. Una vez aprobado el seminario, cada grupo presentará un informe final.

Aprobación del curso

La evaluación será del tipo distribuida, mediante evaluaciones de los trabajos prácticos y de laboratorio, dos exámenes parciales y la presentación de un seminario de un proyecto integrador. Se tendrá en cuenta además la participación en clase la que se evaluará mediante cuestionarios sorpresa. En el desarrollo del proyecto se evaluará la capacidad de trabajo grupal, la expresión oral y escrita. La aprobación de la asignatura se obtiene completando los siguientes requisitos:

  • Asistencia superior o igual al 80% de las evaluciones de trabajos prácticos y de laboratorio.
  • Calificación superior o igual a 40/100 de todas las evaluaciones de los trabajos de laboratorio.
  • Calificación superior o igual a 40/100 en el promedio de las evaluaciones de los trabajos prácticos y de laboratorios.
  • Aprobación del seminario de proyecto y presentación del informe por escrito.
  • Calificación superior o igual a 40/100 en el promedio ponderado de los dos exámenes parciales del curso.
  • Calificación superior o igual a 40/100 en el promedio ponderado de las evaluaciones de los trabajos prácticos y de laboratorios, los exámenes parciales y seminario de proyecto.

Asignaturas correlativas

  • Diseño Lógico I (regular para cursar, aprobada para rendir).
  • Estructura de Datos y Algoritmos (regular para cursar, aprobada para rendir).
  • Electrónica I (aprobada para cursar).

Personal Docente

A cargo de la materia y su dictado: Esp. Ing. Esteban Volentini (evolentini@herrera.unt.edu.ar).

A cargo de trabajos prácticos: Esp. Ing. Matías Giori (mgiori@herrera.unt.edu.ar), Esp. Ing. Luis Tek (ltek@herrera.unt.edu.ar).

Programa analítico

  1. Estructura de las computadoras: Configuración básica. Programa e Instrucciones. Unidad Central de Procesamiento (CPU). Camino de Datos y Control. Bus: implementación mediante conexión con “tercer estado” y “colector abierto”. Interacción CPU-Memoria. Formato de la Instrucción. Ciclo de la instrucción. Tipos de Instrucciones. Arquitectura del Set de Instrucciones. Lenguaje de Transferencia de Registros (RTN) abstracto y concreto. Ejemplo de funcionamiento de un CPU. Interrupciones y Excepciones. Concepto de Pipelining. Lenguajes: de máquina, ensambladores, superiores. Arquitectura Von Newman y Harvard. Pipelining. Concepto de Sistema Operativo, ensamblador, compilador e intérprete. Sistemas de Propósito General. Sistemas Embebidos y Generales.
  2. Proyecto con un microcontrolador: Pasos de un proyecto: introducción, objetivos, desarrollo, conclusiones. Conceptos de trabajo en grupo. Entrada con llaves y teclas mecánicas. Ejemplo de un proyecto: diseño de un reloj despertador. Diseño de diferentes sistemas realizados por grupos de estudiantes. Seminario de exposición y defensa. Informe Final.
  3. Descripción funcional de microprocesador: Descripción general del Cortex-M4. Registros y Memoria. Tipo de Datos. Camino de Datos. ISA del Microprocesador. Duración de las instrucciones. Clases de Instrucciones. Modos de direccionamiento: implícito, inmediato, de registros, de registro indirecto, indexado, relativo. Registro de Código de Condición. Tipos de Instrucciones. Instrucciones para movimientos de datos. Instrucciones para procesamiento de datos: instrucciones aritmeticas, instrucciones lógicas, movmientos y rotaciones de bits. Instrucciones de salto: saltos absolutos y relativos, condicionales e incondicionales. Ejemplos.
  4. Programación en lenguaje ensablador: Implementación de Lazos. Implementación de la pila del procesador. Direccionamiento relativo a la pila. Subrutinas. Variables globales y locales. Pasaje de parámetros. Subrutinas anidadas y recursivas. Transparencia en subrutinas y estandares. Ejemplos.
  5. Estructura de un microcontrolador: Sistema de Microcomputador. Mapas de memoria con y sin redundancia. Conexión CPU – M – E/S. Señales. Conexión de dispositivos externos: registros, contadores, buffers, drivers/receivers. Dispositivos Externos configurables mediante Registro de Configuración y Status. Ejemplos. Bitbanding en ARM. E/S mapeada en memoria y E/S separada.
  6. Sistema de Interrupciones: El concepto de la interrupción. Interrupciones múltiples: conexiones, prioridades, método de encuestas, múltiples líneas, controlador de prioridades de interrupción (PIC). Interrupciones anidadas. Excepciones. Inicialización del sistema: Reset. Modos Supervisor/Usuario. Sistemas de interrupciones en ARM-M4: registros e instrucciones especiales. Ejemplo de cambio de contexto. NVIC: Visión lógica y física, prioridades, habilitación de interrupciones, interrupciones pendientes y activas, reset. SysTick Timer. Descripción: registros, inicialización, ejemplos con y sin interrupción. Ejemplo de un reloj en tiempo real.
  7. Descripción general de un microcontrolador: El concepto de Familia de Microcontroladores. Introducción a los módulos del microcontrolador NXP LPC4337: Núcleos, Buses, Bancos de Memoria, Memoria, Reloj de tiempo real (RTC), Oscilador Interno, Reset y sus causas, SIM (Módulo de Integración del Sistema), Puertos de E/S, Conversor A/D y D/A, Módulos de bajo consumo, Watchdogs, Temporizadores. Introducción a periféricos: GPIO, SGPIO. Interrupciones: internas de los módulos, externas desde GPIO.
  8. Entradas y salidas digitales: Modos de Trabajo y Configuración: pines, pullup/down, default, registros. Esquema circuital en el microcontrolador NXP LPC4337. Ejemplos de aplicación: conexión de Hw Externo. Expansión de conexiones externas: decodificador y buffers. Interrupciones en el GPIO: grupales e individuales. Configuración: nivel/flancos, máscara, estado. Ejemplo: polling e interrupción.
  9. Entrada/salida con periféricos: Sistema de Entrada-Salida (I/O). Arquitectura de un sistema embebido: control, adquisición de datos, automatización. Interfases. Comparación con Sistemas Analógicos y Digitales de lógica cableada. Confiabilidad y Disponibilidad. Entrada / Salida de Datos. Protocolos de comunicación sincrónicos y asincrónicos. Transferencia de datos entre periféricos y memoria: por programa, por interrupción, por acceso directo a memoria (DMA). Velocidad de transferencia. Comparación. Acceso directo a memoria (DMA): modo de bloques y robo de ciclo. Ejemplos. Limitaciones con dispositivos lentos. Limitaciones con dispositivos rápidos. Efecto de E/S de datos por interrupciones y DMA en la performance del CPU. Introducción a GPDMA en LPC4337.
  10. Temporizadores: Descripción General. Esquema circuital. Configuración: prescaler, registros de comparación, canales, interrupciones. Eventos de Entrada; Input Capture. Eventos de Salida: Output Capture. Ejemplos: esperar un tiempo determinado, medición de frecuencia de una señal externa, cálculo del ancho de un pulso, generación de un pulso, de una señal periódica.

Trabajos prácticos

  1. Prerequisitos: Aritmética binaria, diseño lógico, probabilidad y estadística y programación en lenguaje C.
  2. Tema 1: Trayectoria de datos del procesador, set de instrucciones y generalidades del sistema de memoria.
  3. Tema 2: Resumen ejecutivo del proyecto a desarollar por cada grupo.
  4. Tema 5: Conexión de memoria y dispositivos a un CPU, conceptos de registros de estado y control.
  5. Tema 6: Identificación por encuentas y por interrupciones, niveles de prioridad y anidamiento de interrupciones.
  6. Tema 9: Manejo de interrupciones de múltiples fuentes, transferencias de bloques.

Trabajos de laboratorio

  1. Tema 3: Programación basica en ensamblador del procesador Cortex-M4.
  2. Tema 4: Programación avanzada en ensamblador del procesador Cortex-M4.
  3. Temas 6, 7 y 8: Manejo de entradas/salidas, interrupciones periódicas del SysTick en el LPC4337.
  4. Tema 10: Temporizadores en el LPC4337.

Bibliografía

  • Heuring, Vincent .; Jordan, Harry F. Computer Systems Design and Architecture. Addison Wesley, 1997.
  • Yifeng Zhu, “Embedded Systems with ARM Cortex-M Microcontrollers in Assembly Language and C”, EMan Press LLC, 2nd Edition. New York, 2015.
  • Joseph Yiu, “The Definitive Guide to ARM® Cortex®-M3 and Cortex®-M4 Processors”, Third Edition. Newnes. Boston, 2013.
  • Tocci Ronald J. | Widmer Neal S. | Moss Gregory L. Sistemas Digitales, 10ª Edición Pearson Education – México 2007.
  • Manuales de ARM Cortex-M4.
  • Manual del Microcontrolador LPC4337: UM10503 NXP LPC4337.