Lógica Digital y Lenguaje de Máquina

Información Básica

  • Créditos: 3
  • Horas de trabajo acompañado: 5 / semana (3 horas de clase, 2 Laboratorio)
  • Horas de trabajo independiente: 4 / semana
  • Pre-requisitos:
  • Tipo de curso: Núcleo de Formación Fundamental.

Descripción del Curso

Este curso introduce los principios básicos del funcionamiento, elaboración y programación de un sistema de cómputo. Para esto se presentan y desarrollan los conceptos de operación de los circuitos electrónicos digitales, la programación en lenguaje ensamblador y los diferentes tipos de representación de datos en un sistema binario. El curso ofrece las bases teóricas y prácticas que le permitirán al estudiante identificar de manera crítica los componentes de un computador y el impacto que tiene la codificación, en diferentes niveles de abstracción, sobre la ejecución de los programas en la máquina.

Objetivos

Al finalizar el curso los participantes podrán:

  1. Conocer los elementos básicos que conforman un sistema digital de cómputo
    1. Definir sistema de cómputo, procesador, memoria, entradas y salidas, interconexión, programa, instrucciones y datos.
    2. Diferencias los diferentes tipos de computadores actuales.
    3. Entender la interacción de cada uno de los componentes del computador.
    4. Comparar las diferentes alternativas de diseño de un sistema de cómputo.
    5. Entender el principio de operación de una arquitectura von Neumann.
  2. Programar en un lenguaje de bajo nivel
    1. Definir modelo de programación, compilador, ensamblador, encadenador (linker), código fuente, código binario, bibliotecas(library), lenguajes de alto y bajo nivel, lenguaje de máquina.
    2. Describir los procesos de compilación y ejecución de un programa.
    3. Reconocer la sintaxis de un programa en lenguaje ensamblador.
    4. Identificar los diferentes modos de direccionamiento.
    5. Entender las instrucciones de un procesador
  3. Diseñar circuitos digitales
    1. Reconocer las magnitudes eléctricas básicas como voltaje, corriente y resistencia.
    2. Describir los componentes de un circuito electrónico.
    3. Usar diferentes sistemas numéricos para representar una magnitud.
    4. Diferenciar entre circuitos digitales combinatorios y secuenciales.
    5. Conocer las diferentes técnicas de diseño de un sistema digital basado en las operaciones lógicas básicas.
    6. Reconocer los bloques funcionales fundamentales como multiplexor, decodificador, sumadores, latch, flip-flop, contador.
  4. Implementar un sistema de cómputo básico.
    1. Seleccionar el conjunto de instrucciones.
    2. Escribir el programa en lenguaje ensamblador.
    3. Describir en VHDL los componentes del computador.

Se desarrollan competencias en

  1. Lenguaje ensamblador
  2. Simulador/ensamblador
  3. Herramientas de simulación de circuitos lógicos
  4. VHDL
  5. Tarjeta de desarrollo basada en FPGA

Contenido

Capítulo 1: Principios de Operación del computador

Sesión Horas teóricas Prácticas acompañadas Temas Profundidad Bibliografía
1 1 Introducción e historia de los computadores Familiaridad [1,2,5,6,7]
2 1 Niveles de Abstracción: Interfaz Hardware/Software Uso [1,4,6]
3 1 Estructura básica de un computador: Arquitectura Von Neumann Uso [1,2,4,6]
4 3 Camino de Datos y la ejecución de las instrucciones Uso [1,2,6]

Total de Horas: 6.

Sesión Horas de trabajo independiente Temas Bibliografía
1 4 Elaborar una presentación de 15 minutos para profundizar en las diferentes tecnologías de fabricación de memorias. [1,2,7,8]
2 4 Elaborar una presentación de 15 minutos que explique las características de varios sistemas operativos. [1,2,4]
3-4 4 Taller sobre la ejecución de los tipos de instrucciones en una arquitectura básica. [1, 2, 4,6]

Total de Horas: 12

Capítulo 2: Lenguaje de Máquina

Sesión Horas teóricas Prácticas acompañadas Temas Profundidad Bibliografía
5-6 3 2 Arquitectura del Conjunto de Instrucciones:Tipos de instrucciones (manipulación de datos, control, entrada/salida), tipos de datos, formato de instrucciones, modos de direccionamiento. Uso [1,2,4,6]
7-10 6 4 Lenguaje de Máquina Uso [1,2,4,6]
11-12 3 2 Mecanismos de llamada y retorno a subrutinas, interrupciones y manejo de dispositivos de entrada/salida.Diferencias entre: Segmento de código vs pila vs memoria dinámica, estática y libre (heap) Uso [1,2,4,6]
13-14 3 2 Código interpretado versus código nativo compilado versus compilación de representación intermedia portable. Ejecución como código nativo o en una máquina virtual, alternativas de carga dinámica y generación de código dinámico. Representación en tiempo de ejecución de construcciones del lenguaje núcleo tales como objetos y funciones de primera clase (closures). Uso [1,2,4,6]
15-16 3 2 Las estructuras de datos para representar código para ejecución, traducción, o transmisión. Implementación de bucles, recursividad, y llamadas de cola. Uso [1,2,4,6]
17-18 3 2 Gestión de la memoria de forma manual: asignación, liberación, y reutilización de memoria del espacio libre (heap). Gestión de memoria automatizado: recolección de basura como una técnica automatizada usando la noción de accesibilidad Uso [1,2,4,6]

Total de Horas: 35.

Sesión Horas de trabajo independiente Temas Bibliografía
5-12 8 Taller: Implementación de algoritmos en lenguaje de máquina. [1,2,6]
13-18 4 Lectura de Máquinas virtuales y manejo de memoria. [1,4]
13-18 4 Tarea de Lenguajes Compilados e interpretados. [7,8]

Total de Horas: 16

Capítulo 3: Circuitos Digitales

Sesión Horas teóricas Prácticas acompañadas Temas Profundidad Bibliografía
19-20 3 2 Sistemas numéricos: Conceptos de Bits, bytes, words, operaciones y representación de datos signados y complemento a dos. Bases numéricas y representación de datos numéricos. Operaciones aritméticas en diferentes bases. Representación de datos no numéricos. Representaciones de sistemas en punto fijo y flotante. Representación de arreglos. Uso [1,3,4,5,6]
21-25 6 6 Circuitos Combinatorios y secuenciales: Bloques fundamentales combinatorios (compuertas lógicas, multiplexores, decodificadores, unidades aritméticas y lógicas, memoria ROM ). Expresiones lógicas, simplificación lógica booleana, minimización y suma de productos. Bloques fundamentales secuenciales (latches, flip-flops, contadores, registros, máquinas de estado, memoria RAM), concepto y uso de FPGA (diseño e implementación de Camino de datos, unidad de control y memoria) . Concepto de reloj, estado, secuenciamiento, máquina de estados (ejemplo: Protocolo de red de computadores). Uso [1,3,4,5,6]
26-27 3 2 Herramientas de diseño asistidas por computador , lenguajes de descripción de hardware (VHDL) y Notación a nivel de transferencia de registro (RTL). Uso [3,5,6]
28 3 Restricciones físicas : Retardo en compuertas, fan –in, fan-out, consumo de energía y disipación de potencia. Conceptos : Sistema Digital versus Análogo, Sistema Discreto versus continuo. Uso [3,5,6]

Total de Horas: 25.

Sesión Horas de trabajo independiente Temas Bibliografía
16-25 4 Diseño proyecto (Implementación de una Arquitectura de cómputo Multiciclo). [1,2,6]
16-25 4 Diseño proyecto (Implementación de una Arquitectura de cómputo Multiciclo). [1,2,6]
16-25 4 Diseño proyecto (Implementación de una Arquitectura de cómputo Multiciclo). [1,2,6]
16-25 4 Diseño proyecto (Implementación de una Arquitectura de cómputo Multiciclo). [1,2,6]

Total de Horas: 16

Capítulo 4: Arquitectura del Computador

Sesión Horas teóricas Prácticas acompañadas Temas Profundidad Bibliografía
25 3 Fundamentos dispositivos de entrada/salida. Protocolos de comunicación para operaciones de entrada/salida: interrupciones, programada, handshaking y buffering. Uso [1,2,4,6]
26 2 2 Procesamiento secuencial a nivel de aplicación, un solo hilo de ejecución (Arquitectura multiciclo y monociclo). Uso [1,2,4,6]
27 2 2 Procesamiento paralelo a nivel de aplicación: nivel de solicitud (servicios web / cliente-servidor / distribuido), un hilo de ejecución por servidor, y múltiple hilos con múltiples servidores. Uso [1,2,4,6]
28 2 2 Abstracciones en programación, interfaces y uso de librerías. Uso [1,2,4,6]

Total de Horas: 15.

Sesión Horas de trabajo independiente Temas Bibliografía
25 4 Elaborar una presentación de 15 minutos para profundizar en los diferentes tipos y tecnologías de dispositivos de entrada y salida. [1,2,4]
26-28 6 Taller sobre la ejecución de procesamiento secuencial y paralelo. [1, 2, 4]

Total de Horas: 10

Uso de material en exámenes

Esta permitido el uso de material impreso para referencia específico (tablas o listados de conjunto de instrucciones) y calculadoras. No esta permitido el uso de computadores personales portátiles o móviles.

Asistencia

Obligatoria.

Bibliografía

  1. Hennessy, John L. and Patterson, David A., Computer organization and design: the hardware,software 5th ed, Elsevier., 2013
  2. Hennessy, John L. and Patterson, David A., Computer architecture : a quantitative approach, Fifth Edition. Morgan Kaufmann, 2011
  3. Floyd, Thomas L. FUNDAMENTOS DE SISTEMAS DIGITALES 9a ed., PEARSON EDUCACIÓN S.A., Madrid, 2006
  4. Null, Linda M.; Lobur, Julia, The essentials of computer organization and architecture, Third edition, Jones and Bartlett Publishers, Inc. 2012
  5. Victor P. Nelson et al., Digital Logic Circuit Analysis and Design, Prentice-Hall, 1995
  6. Notas de Clase
  7. ACM Digital Library
  8. IEEE Xplore

Instalaciones

Salón de clase con computador y proyector. Laboratorio de Ingeniería de Sistemas y Computación. Laboratorio de Ingeniería Electrónica.

Material de este semestre