TE2003B - Diseño de sistemas en chip

Ingeniería y Ciencias

Nombre de la materia

Diseño de sistemas en chip

Disciplina

Tecnologías Electrónicas

Nivel académico general

Profesional Intermedio - Enfoque

Tipo de materia especifica

Bloque

Tecnica didáctica

No especificado

Tipo de periodo

Semestral

Tipo horario

Proyecto

Escuela

Ingeniería y Ciencias

Departamento

Computación

Intención

Es un curso de nivel intermedio en ingeniería electrónica enfocado a aplicaciones de sistemas digitales de propósito específico. Requiere conocimientos de programación, sistemas operativos y circuitos digitales.Como resultado de aprendizaje el alumno implementa sistemas en chip, basados en microcontroladores y/o Single Board Computers (SBC) operando en tiempo real.

Objetivo general

Al terminar la unidad de formación el alumno:- Modela sistemas embebidos con capacidad de interacción que dan solución a una problemática determinada.- Implementa sistemas embebidos considerando especificaciones y restricciones del entorno.- Valida el funcionamiento de sistemas embebidos tomando en cuenta la eficiencia, costos y estándares.- Selecciona los periféricos requeridos para interactuar con el medio que den solución a una problemática determinada.- Elige la unidad de procesamiento acorde a requerimientos.- Programa unidades funcionales que generan la percepción, navegación, manipulación e interacción.- Selecciona la interfaz de acuerdo a su aplicación.- Selecciona el protocolo de comunicación de acuerdo a su aplicación.- Genera la interacción inteligente entre una unidad de procesamiento y sus periféricos.

Temas

1. El juego de instrucciones considerando al compilador y a las aplicaciones.1.1 Introducción a la abstracción y tecnología computacional.1.2 Operaciones y operandos en hardware computacional.1.3 Representación de instrucciones en la computadora.1.4 Operaciones lógicas e instrucciones para toma de decisiones.1.5 Modos de direccionamiento y soporte para procedimientos en hardware. 2. Aritmética para computadoras.2.1 Operaciones aritméticas básicas: suma, resta, multiplicación y división.2.2 Representación de punto flotante.2.3 Operaciones aritméticas de números con representación flotante. 3. El procesador: ruta de datos (datapath) y control.3.1 Convenciones de diseño lógico.3.2 Construcción de la ruta de datos (datapath).3.3 Un esquema de implementación simple.3.4 Un esquema de implementación con ciclos múltiples. 4. Mejorando el rendimiento mediante entubamiento (pipelining).4.1 Concepto de entubamiento (pipeline).4.2 Una ruta de datos (datapath) con entubamiento (pipeline).4.3 Control para entubamiento (pipeline).4.4 Riesgos de datos (data hazards) y reexpedición (forwarding).4.5 Riesgos de bifurcaciones (branch hazards) y retrasos (stall). 5. La jerarquía de memoria y el diseño de la interfaz con dispositivos de entrada/salida.5.1 La jerarquía de memoria.5.2 Conceptos básicos de caché.5.3 Medición del rendimiento del caché.5.4 Almacenamiento en disco duro y discos de estado sólido.5.5 Modularización e interrupciones.5.6 Bus, interfaces de alta de velocidad y jerarquía de buses. 6. Introducción a los sistemas embebidos.6.1 Características de los sistemas embebidos.6.2 Ejemplo de un sistema embebido.6.3 Ciclo de desarrollo de un sistema embebido. 7. Arquitectura y conjunto de instrucciones del microcontrolador.7.1 Características del CPU.7.2 Registros de funciones especiales.7.3 Mapa de memoria.7.4 Conjunto de instrucciones.7.5 Modos de direccionamiento. 8. Lenguaje C para la programación de microcontroladores.8.1 Tipos de datos.8.2 Operadores y expresiones.8.3 Control de flujo.8.4 Funciones y estructura de programa.8.5 Apuntadores y arreglos.8.6 Estructuras y uniones.8.7 Tablas de búsqueda.8.8 Máquinas de estado. 9. Periféricos del microcontrolador.9.1 Puerto de entradas/salidas digitales.9.2 Puerto de comunicación serial.9.3 Temporizador.9.4 Convertidor analógico-digital.9.5 Interrupciones. 10. Multitareas en un sistema embebido pequeño.10.1 Tipos de sistemas operativos de tiempo real (duros, blandos).10.2 ¿Por qué usar un sistema operativo de tiempo real?10.3 Algoritmos de calendarización de tareas.10.4 Estructura de un sistema operativo de tiempo real. 11. Manejo de memoria.11.1 Esquemas de asignación de memoria.11.2 Asignación dinámica de memoria. 12. Manejo de tareas.12.1 Funciones de tareas.12.2 Creación de tareas.12.3 Prioridad de tareas.12.4 Estados de tareas.12.5 Modificación de prioridad de tareas.12.6 Eliminación de tareas. 13. Manejo de colas (queue).13.1 Características de una cola.13.2 Uso de colas.13.3 Recepción de datos de múltiples fuentes.13.4 Recepción desde múltiples colas.13.5 Uso de una cola para crear un buzón (mailbox). 14. Manejo de interrupciones.14.1 Procesamiento diferido de interrupciones.14.2 Semáforos contadores.14.3 Uso de colas dentro de una rutina de servicio de atención a una interrupción.14.4 Interrupciones anidadas. 15. Manejo de recursos.15.1 Exclusión mutua.15.2 Secciones críticas y suspensión del calendarizador.15.3 Mutexes y semáforos binarios.15.3.1 Inversión de prioridad.15.3.2 Herencia de prioridad.15.3.3 Bloqueo (deadlock).15.3.4 Mutex recursivo. 16. Manejo de grupos de eventos.16.1 Características de un grupo de eventos.16.2 Manejo de eventos mediante un grupo de eventos.16.3 Sincronización de tareas usando un grupo de eventos. 17. Manejo de temporizadores suaves (software timers).17.1 Funciones de llamada (callback) a temporizadores suaves.17.2 Atributos y estados de un temporizador suave.17.3 Contexto de un temporizador suave.17.4 Creación y arranque de un temporizador suave.17.5 Modificación del periodo de un temporizador suave.17.6 Restablecimiento de un temporizador suave. 18. Introducción a los sistemas embebidos.18.1 Atributos de un sistema embebido.18.2 Tendencias tecnológicas.18.3 Aplicaciones de los sistemas embebidos.18.4 Desafíos e incertidumbres a futuro de los sistemas embebidos. 19 Introducción a Linux embebido.19.1 Conceptos fundamentales de sistemas operativos.19.2 Componentes del kernel de Linux.19.3 Espacio del usuario y espacio del kernel.19.4 Características de Linux embebido.19.5 Bash.19.5.1 Configuración y control de la plataforma embebida a nivel de línea de comandos.19.5.2 Creación, edición, ejecución de scripts. 20 Exploración de los puertos de entrada salida de propósito general (GPIO).20.1 Entradas y salidas digitales.20.2 Interfaces de comunicación (I2C, SPI, USART).20.3 Interfaz USB.20.4 Integración con microcontroladores.20.4.1 Comunicación serial sobre USB.20.4.2 Uso de un microcontrolador como esclavo. 21 Exploración de audio y video.21.1 Adquisición, presentación y procesamiento de video mediante una cámara web.21.2 Adquisición y reproducción de audio.21.3 Síntesis de voz. 22 Exploración de las interfaces de Internet.22.1 Puesta a punto de la interfaz alámbrica.22.2 Puesta a punto de la interfaz inalámbrica.22.3 Operación remota de la plataforma embebida mediante ssh.22.4 Pipas y sockets.22.5 Implementación de un servidor web en la plataforma embebida.22.6 Adquisición de información de sensores y su publicación en la nube.

Metodologia de la enseñanza

Actividades de aprendizaje conducidas por un académico (Aprendizaje Supervisado):1. Exposición del marco teórico que sustenta los temas clave del curso: diseño de un procesador, ilustrando aplicaciones sobre los mismos y promoviendo la participación activa de los alumnos.2. Uso de la tecnología para mejor visualización y comprensión de los contenidos del curso.3. Experimentos de laboratorio asociados a la simulación e implementación física de subsistemas del procesador y de la jerarquía de memoria.4. Revisión y análisis conceptual conducido por el docente a través de módulos de aprendizaje en los que abordan temas relacionados con la introducción a los sistemas embebidos, arquitectura del microcontrolador, lenguaje C para microcontroladores, y periféricos. Lo anterior en estrecha relación con el reto que se esté enfrentando en el bloque.5. Revisión y análisis conceptual conducido por el docente para abordar los temas relacionados con el manejo de tareas, procesamiento de interrupciones, comunicación, sincronización y coordinación de tareas, mediante un sistema operativo de tiempo real.6. Discusiones y resolución de situaciones relacionadas a través de la aplicación de la técnica didáctica de aprendizaje basado en problemas, orientado a abordar los conocimientos sobre el manejo de tareas, procesamiento de interrupciones, comunicación, sincronización y coordinación de tareas, mediante un sistema operativo de tiempo real, para aportar al desarrollo de competencias del curso.7. Revisión y análisis conceptual conducido por el docente para abordar los temas relacionados con el diseño e implementación de sistemas en basados en Linux tales como Linux embebido y el uso eficiente de los puertos de entrada-salida de propósito general, interfaces de comunicación serial, audio, video e internet.8. Sesiones de asesoría individuales y grupales orientadas a apoyar el abordaje resolución del reto. Actividades de aprendizaje independiente (Aprendizaje Individual):1. Lectura para complementar el material discutido en clase.2. Realización de tareas y proyectos de manera independiente y también de forma colaborativa.3. Participación activa en las actividades diseñadas por el profesor para el logro del reto.4. Investigación individual y en equipo sobre la introducción a los sistemas embebidos, arquitectura del microcontrolador, lenguaje C para microcontroladores, y periféricos.5. Trabajo de campo en el contexto del entorno real en el que se enfrenta al reto relacionado con el diseño e implementación de sistemas embebidos usando microcontroladores. 6. Generación de un sistema embebido usando microcontroladores como evidencias del desarrollo de las competencias asociadas al reto.7. Investigación individual y en equipo sobre el manejo de tareas, procesamiento de interrupciones, comunicación, sincronización y coordinación de tareas, mediante un sistema operativo de tiempo real.8. Solución de ejercicios, problemas y casos, tanto de manera individual como colaborativa, para desarrollar la capacidad de diseñar, implementar y evaluar sistemas embebidos utilizando sistemas operativos de tiempo real, respetando especificaciones de rendimiento y funcionalidad.9. Investigación individual y en equipo sobre los sistemas embebidos basados en Linux.

Tiempo estimado

Tema 1         3 horasTema 2         3 horasTema 3         7 horasTema 4         7 horasTema 5         7 horasTema 6         3 horasTema 7         8 horasTema 8        11 horasTema 9        22 horasTema 10         6 horasTema 11         3 horasTema 12         3 horasTema 13         3 horasTema 14         3 horasTema 15         3 horasTema 16         3 horasTema 17         3 horasTema 18         4 horasTema 19        10 horasTema 20        12 horasTema 21        10 horasTema 22        10 horasEvaluación     16 horas Total              160 horas

Politica de evaluacion

Para la evaluación del aprendizaje de los estudiantes se usarán procedimientos y criterios que permiten evaluar los resultados del proceso de aprendizaje en su desempeño en los módulos y además evidencias de desempeño o de producto que permitan observar el desarrollo de competencias. Los procedimientos de evaluación y la ponderación de cada uno de ellos son los siguientes:40% --- Participación y resultados de actividades, tareas, casos y exámenes de los módulos de aprendizaje, evaluando el conocimiento teórico y práctico relacionados con arquitectura de computadoras, microprocesadores, sistemas embebidos y sistemas operativos en tiempo real.60% --- Desempeño en el proceso para enfrentar el reto y sus resultados, considerando las siguientes evidencias que demuestren el nivel de dominio de las competencias: planeación, esquemáticos, archivos de simulación, documentación y un prototipo funcional.

Perfil del profesor

(141001)Maestría en Ingeniería Eléctrica/Electrónica y Comunicaciones ; (140901)Maestría en Ingeniería Computacional ; (110101)Maestría en Ciencias Computacionales/de Información ; (110102)Maestría en Inteligencia Artificial /Robótica ; (110701)Maestría en Ciencias Computacionales ; (110901)Maestría en Redes de Sistemas Computacionales y Telecomunicaciones ; (111002)Maestría en Administración de las Telecomunicaciones ; (141001)Doctorado en Ingeniería Eléctrica/Electrónica y Comunicaciones ; (140901)Doctorado en Ingeniería Computacional ; (110101)Doctorado en Ciencias Computacionales/de Información ; (110102)Doctorado en Inteligencia Artificial /Robótica ; (110701)Doctorado en Ciencias Computacionales ; (110901)Doctorado en Redes de Sistemas Computacionales y Telecomunicaciones ; (111002)Doctorado en Administración de las Telecomunicaciones

Requisitos

(Haber Cursado TE2002B o Estar Cursando TE2002B) y (Estar Cursando TC1031 o Haber Cursado TC1031)

Bibliografia

Computer Organization and Design RISC-V Edition: The Hardware Software Interface, Patterson, D y John L. Hennessy , Morgan Kaufmann, 2017| Interfacing PIC Microcontrollers, Bates, M, Elsevier Science, Waltham, EE.UU, 2014| 1466585544 (hbk.), Computer organization, design and architecture, Shiva, Sajjan G, Fifth edition.,

Atributos

Materia Modelo Tec21

Competencias

STE0101B, STE0102B, STE0103B, STE0204B, STE0302A, STE0303A

Créditos

8.00