Download procesador chip
Document related concepts
Transcript
IF - EHU Prácticas de laboratorio en la universidad, 2009 2 10 más 10... 100! Análisis de sistemas digitales básicos INTRODUCCIÓN Uno de los componentes principales de un procesador es la unidad aritmético/lógica; en ella se ejecutan, entre otras, las operaciones aritméticas y lógicas básicas. En esta práctica vamos a analizar las más sencillas: las operaciones lógicas NOT, AND y OR, y la operación aritmética más simple, la suma de números naturales. amos a construir dichas operaciones en un circuito programable, tras lo cual comprobaremos su funcionamiento. Utilizaremos para ello una tarjeta para prototipos de sistemas digitales, la misma que utilizan las alumnas y alumnos de la facultad, y un software estándar de diseño de amplio uso en la industria. DESCRIPCIÓN El procesador de un computador es un sistema que procesa información digital. Para representar la información o los datos se utilizan códigos binarios, en los que cada "dígito" o "bit" sólo puede tomar uno de dos valores: 0 o 1. Esos valores se conocen con el nombre de valores lógicos; a menudo, también se conocen como verdadero (1) y falso (0). 1 Prácticas de laboratorio en la universidad, 2009 IF- EHU Los computadores están compuestos por circuitos digitales, que procesan códigos en binario. Algunos circuitos realizan operaciones muy simples, y otros, en cambio, operaciones muy complejas. En esta práctica en el laboratorio vamos a analizar algunos de los circuitos digitales más sencillos: 1. primeramente, los circuitos que realizan las tres operaciones lógicas básicas: NOT (negación lógica), OR (suma lógica) y AND (producto lógico). 2. y, a continuación, un circuito que efectúa la operación aritmética básica, la suma; en este caso, un sumador de dos números naturales de 4 bits. Para analizar el comportamiento de esos circuitos vamos a utilizar una herramienta de diseño de sistemas digitales bastante compleja: Quartus II, de la casa Altera. Se trata de una herramienta software muy conocida y utilizada tanto en la industria como en la universidad. Con esa herramienta podemos definir y dibujar el circuito, especificar sus entradas (la información que procesa) y sus salidas (los resultados que produce), y, finalmente, integrar el sistema lógico en un chip programable. Junto con ese programa, utilizaremos una tarjeta de desarrollo de prototipos, denominada DE2. Esta tarjeta se utiliza para el diseño y verificación de prototipos antes de su fabricación; junto con el “chip” programable, la tarjeta incluye un conjunto de elementos de ayuda para la verificación del diseño: interruptores (para indicar entradas binarias, 1/0), diodos LED y dígitos (para visualizar datos), una pequeña pantalla LCD, etc. La figura 1 muestra la tarjeta de prototipos. Hacia el centro se encuentra el dispositivo programable de tipo FPGA (el chip EP2C35F672C6N de la familia Cyclone II) en el que programaremos nuestros diseños; en la parte inferior están los interruptores (en ingles, switch) que vamos a utilizar para introducir datos y los diodos LED; en la izquierda, la pantalla LCD y los dígitos "7 segmentos". Figura 1. Tarjeta DE2 para prototipos. 2 IF - EHU Prácticas de laboratorio en la universidad, 2009 EJERCICIO 1: funcionamiento de las puertas lógicas básicas. En este primer ejercicio vamos a analizar el comportamiento de los circuitos digitales más sencillos, los que realizan las tres operaciones lógicas básicas: NOT (negación lógica), OR (suma lógica) y AND (producto lógico). A estos circuitos se les denomina puertas lógicas y son los elementos a partir de los que se construyen circuitos más complejos. Ello es debido a que, como demostró el matemático Boole, cualquier otra función lógica, por muy compleja que sea, se puede expresar mediante combinación de estas tres operaciones. Las entradas y salidas de estas puertas son binarias; esto es, sólo toman los dos valores lógicos 0 y 1. La puerta NOT sólo tiene una entrada y una salida, que toma siempre el valor contrario al de la entrada. Las puertas OR y AND tienen dos entradas y una sola salida, que toma el valor de la suma o producto lógico de las entradas, respectivamente. Comprobemos el funcionamiento de estas tres puertas. 1. Abre el proyecto ateak.qpf (se abrirá una ventana del programa QuartusII); a continuación, abre el fichero ateak.bdf. Aparecerá en la pantalla el siguiente esquema lógico: SW[17] SW[16] SW[15] SW[14] SW[13] INPUT VCC INPUT VCC INPUT VCC INPUT VCC INPUT VCC A NOT notA OUTPUT LEDR[17] inst B AND2 BandC C OUTPUT LEDR[16] OUTPUT LEDR[15] inst1 D OR2 DorE E inst2 Figura 2. Las tres puertas lógicas básicas: puerta NOT, puerta AND y puerta OR. Ésos son lo símbolos lógicos que se utilizan para indicar cada una de las tres puertas lógicas. 2. Ahora bien, “dibujar” el circuito no es suficiente. Ahora hay que programar el circuito en el chip FPGA de la tarjeta de pruebas, para lo que previamente hay que completar el diseño con la información sobre qué componentes de la tarjeta (switches, LEDs...) se asocian a las entradas y salidas de nuestro circuito. Para hacer las pruebas más rápido, ya hemos añadido esa información al esquema lógico; en concreto, vamos a utilizar los siguientes interruptores (switches) y diodos LED de la tarjeta: 3 Prácticas de laboratorio en la universidad, 2009 - Entradas: A → SW17 B → SW16, C → SW15 D → SW14, E → SW13 IF- EHU - Salidas: not A → LEDR17 B and C → LEDR16 D or E → LEDR15 Ya tenemos el sistema digital listo para programarlo en el chip FPGA. El proceso es sencillo; sigue las instrucciones del profesor. ¡Listo! Has diseñado tu primer circuito digital. Ahora, querrás comprobar cómo funciona ¿no? Para ello basta con aplicar a las entradas de los circuitos alguno de los dos valores 0 o 1 mediante los interruptores correspondientes y visualizar el resultado mediante un diodo LED. Recuerda: si el diodo se ilumina, el resultado es 1, y si no se ilumina, el resultado es 0. Anota los resultados que obtengas en las tablas siguientes teniendo en cuenta que has de comprobar todas las combinaciones posibles de las entradas. > Comportamiento lógico de la puerta NOT (una entrada y una salida) A A not A 0 1 not A > Comportamiento lógico de la puerta AND (dos entradas y una salida) B B C C B and C B and C > Comportamiento lógico de la puerta OR (dos entradas y una salida) D D E E D or E D or E Las tablas que acabas de rellenar se conocen como tablas de verdad, y suelen utilizarse para especificar el comportamiento de los circuitos lógicos más sencillos. 4 IF - EHU Prácticas de laboratorio en la universidad, 2009 EJERCICIO 2: suma aritmética de dos números naturales de 4 bits. La suma es la operación aritmética básica de cualquier sistema digital (y de cualquier procesador). Por ello, no es necesario diseñar sumadores una y otra vez para cada aplicación, sino que se emplean circuitos ya prediseñados. El sumador más sencillo procesa los dos números naturales de las entradas y ofrece su suma en la salida. En este segundo ejercicio práctico, vamos a analizar el comportamiento de un sumador simple. El circuito realiza la suma de dos números naturales de 4 bits, y genera como resultado la suma, otro número natural de 4 bits, y una señal adicional que indica si el resultado es correcto, la llevada (overflow, en inglés), ya que la suma de dos números de 4 bits no puede ser representada siempre en 4 bits. En la figura siguiente se muestra el esquema del circuito prediseñado. adder A[3..0] B[3..0] dataa[3..0] A A+B datab[3..0] B result[3..0] A+B[3..0] overflow OVF inst Figura 3. Sumador (en inglés, adder) básico de dos números de 4 bits, A y B. Como resultado, el sistema ofrece la suma, A+B, y la señal OVF (llevada). 1. Antes que nada, ¿Cuántos números naturales pueden codificarse con 4 bits? ¿Qué código corresponde a esos números? Recuerda que los procesadores operan siempre con datos en base 2 y no en base 10. Repasemos los códigos binarios. Completa para ello la tabla siguiente: Número natural 0 1 2 Código binario (4 bits) 0000 0001 0010 5 Número natural Código binario (4 bits) Prácticas de laboratorio en la universidad, 2009 IF- EHU Ahora, comprobemos el funcionamiento del sumador. 2. Abre el proyecto batugailua.qpf (se abrirá una ventana del programa QuartusII), y, a continuación, el fichero con el esquema del sumador batugailua.bdf. En la figura siguiente se representa el esquema que contiene dicho fichero: INPUT VCC SW[3] SW[2] INPUT VCC SW[1] INPUT VCC SW[0] INPUT VCC A[3] INPUT VCC SW[7] A[2] A[1] A[0] SW[6] INPUT VCC SW[5] INPUT VCC SW[4] INPUT VCC B[3] B[2] B[1] B[0] adder A[3..0] B[3..0] dataa[3..0] datab[3..0] dec7seg A A+B B result[3..0] overflow A+B[3..0] HEX0[6..0] num[3..0] dig7seg[6..0] OVF inst inst8 OUTPUT LEDR[8] OUTPUT HEX0[6] OUTPUT HEX0[5] OUTPUT HEX0[4] OUTPUT HEX0[3] OUTPUT HEX0[2] OUTPUT HEX0[1] OUTPUT HEX0[0] Figura 4. Sumador y descodificador 7 segmentos. En la figura se observa que además del circuito sumador se ha añadido otro módulo: un descodificador. Este componente, que se conoce como descodificador 7 segmentos, nos permite visualizar el resultado de la suma, que está en binario, de manera más cómoda, mediante un dígito de "7 segmentos". 3. Al igual que en el ejercicio anterior, para comprobar el funcionamiento de nuestro circuito, las entradas y salidas del mismo han de asignarse a componentes de la tarjeta DE2. Esta tarea ya ha sido realizada previamente y los componentes que van a utilizarse son los siguientes: - Entradas: A → SW3,SW2,SW1,SW0 B → SW7,SW6,SW5,SW4 6 - Salidas: A+B → dígito HEX0 OVF → LEDG7 IF - EHU Prácticas de laboratorio en la universidad, 2009 4. Ahora repite los pasos del ejercicio anterior para programar el circuito. A continuación, hay que verificar cómo funciona el circuito, haciendo diferentes pruebas. Por ejemplo, prueba los casos que aparecen en la siguiente tabla y rellénala con los resultados que obtengas. A decimal B binario decimal 0 3 4 5 1 6 8 2 11 2 9 8 A+B binario decimal OVF binario ¿Se ha activado la señal de overflow en algún caso? ¿Por qué? Propón otro caso que genere también llevada u overflow. Has finalizado el trabajo asignado a esta práctica. Los circuitos que has analizado son típicos en cualquier sistema digital que procesa señales binarias. Por ejemplo, el circuito que realiza la suma de números naturales es el elemento básico de la unidad aritmético/lógica, que es un subsistema imprescindible en todo procesador. Naturalmente, ese subsistema suele ser mucho más complejo que el hemos analizado, ya que se diseña para realizar un conjunto amplio de operaciones: sumas, restas, multiplicaciones, divisiones... y, además, los datos suelen admitir diferentes formatos de representación. Estas cuestiones y otras muchas más se estudian en las asignaturas que puedes cursar si te animas a estudiar con nosotros. 7 Prácticas de laboratorio en la universidad, 2009 IF- EHU RESUMEN Conceptos vistos en esta práctica > Valores lógicos. Los circuitos digitales procesan señales que sólo pueden tomar dos valores: 1 y 0. > Puertas lógicas NOT, AND y OR. Se trata de los dispositivos lógicos más simples, que procesan señales lógicas y efectúan las operaciones lógicas de negación, y producto y suma. > Codificación binaria. Los datos que procesa un computador están codificados en binario. Con n bits se pueden codificar 2n números. > Un sumador es la base de cualquier unidad aritmético/lógica, núcleo de cálculo de los procesadores. > La suma de dos números de n bits puede no caber en un número de n bits; el sumador lo indica activando una señal de llevada u overflow (similar a lo que ocurre en tu calculadora cuando se excede el mayor número representable). > Existen herramientas software y hardware que permiten diseñar y probar circuitos digitales, y finalmente, programar el dispositivo completo en un chip (por ejemplo, un chip de tipo FPGA). 8 IF - EHU Prácticas de laboratorio en la universidad, 2009 ¿Quieres probar algo más? Te proponemos un par de ejercicios por si te apetece analizar algún otro circuito lógico sencillo o pensar sobre la codificación binaria de números naturales. Te pondremos la solución en la página web. Suerte. 1. Teniendo en cuenta el comportamiento de las tres puertas lógicas que has analizado en esta práctica, ¿Cuál será la respuesta de estos circuitos para las diferentes combinaciones de los valores (1 / 0) de las entradas? B Y A B Y A C 9 A B 0 0 Y A B C 0 0 0 Y Prácticas de laboratorio en la universidad, 2009 2. IF- EHU ¿Cuál es el máximo número entero que se puede codificar con 32 bits? ¿y con 64 bits? ¿Cuántos bits se necesitan para codificar el número natural 777, y qué código le corresponde? ¿Qué número natural se representa en 16 bits con el código binario 1100110011001100? 3. Para las sumas que se indican en binario, en las que los datos y el resultado son de 6 bits, ¿cuál es el resultado en binario de cada suma? ¿en qué caso(s) se producirá desbordamiento en la suma? (a) 011001 + 110110 (b) 000001 + 100000 10 (c) 101100 + 010011