Document

Anuncio
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
Descargar