You are on page 1of 7

DEPARTAMENTO

DE

TECNOLOGA ELECTRNICA

ESCUELA TCNICA SUPERIOR DE INGENIERA INFORMTICA

Diseo de una calculadora


Sistemas Digitales Avanzados

1. Introduccin y objetivos
El propsito general de esta sesin de laboratorio es la realizacin de un sistema digital partiendo de
las especificaciones. Con las habilidades adquiridas con los desarrollos anteriores se deben cubrir los
siguientes objetivos:
Diseo de un multiplicador secuenciar mediante la divisin del sistema digital en Unidad de Datos
y Unidad de Control. En particular, el sistema propuesto realiza la multiplicacin de dos nmeros
binarios A y B de ocho bits mediante el algoritmo basado en sumas y desplazamientos a la
derecha.
Partiendo de un esquema de la Unidad de Datos deber implementarla realizando el diseo de la
Unidad Control completa. Previo estudio y compresin del funcionamiento de algoritmo de
multiplicacin propuesto debe obtener un diagrama de estados vlido.
Deber realizar un testbench del multiplicador donde se comprueben varias multiplicaciones.
Realizar la implementacin aadiendo los componentes diseados en las sesiones anteriores
como son el controlador de display, el detector de flancos, etc.
Finalmente debe ampliar el sistema para realizar ms operaciones aritmticas convirtiendolo en
una calculadora.

2. Descripcin del multiplicador secuencial


El primer paso del desarrollo consiste en el diseo de un multiplicador secuencial para
posteriormente ampliar el sistema con otras operaciones aritmticas. En la implementacin del sistema
deber utilizar mdulos desarrollados en las sesiones anteriores para controlar la entrada y salida.

Rev. 3.177

Sistemas Digitales Avanzados

Los componentes de entrada salida deben utilizarse de la siguiente forma:


Display: Mostrar siempre datos de 16 bits, cuando finalice la operacin mostrar el resultado
final, pero, durante la introduccin de datos desde los conmutadores debe mostrar los datos
entrantes.
Conmutadores: Se utilizarn los 8 conmutadores para introducir datos de 8 bits en el sistema.
Se utilizarn al menos 3 botones con la siguiente funcionalidad:
Reset: Realiza la inicializacin completa del sistema.
Modo: Cambio del modo de operacin.
Siguiente: Utilizada reiteradamente para introducir los operandos de la operacin paso a paso.
Leds: Se utilizarn para mostrar el estado del sistema, se recomiendan su utilizacin para indicar
el modo de operacin.
Con esta configuracin E/S se construir un sistema digital como el indicado de manera esquemtica en
la figura 1. Esta figura muestra la calculadora conectada a los componentes de la placa donde la seal
siguiente controla los pasos para que el usuario introduzca datos. Un posible ejemplo de uso sera:
1. El usuario realiza una pulsacin en el botn reset y el sistema se inicializa.
2. Pulsando el botn modo se conmuta entre las diferentes operaciones disponibles en el sistema:
suma, resta, multiplicacin, etc. Un Led diferente se iluminar para cada uno de los modos as, el
usuario conocer el modo seleccionado en cada momento.
3. Tras seleccionar el modo se establece el primer nmero en binario en los conmutadores, una vez
establecido, se realiza una pulsacin en el botn siguiente y el sistema almacena el nmero.
4. Se repite el proceso anterior para establecer el segundo nmero y al pulsar el botn siguiente se
realiza la operacin mostrndose el resultado en el display.
Para la realizacin de este multiplicador se se divide el diseo en dos bloques: Unidad de datos y Unidad
de control. Ambos bloques se representan en la figura 2 interconectados y aparecen las seales de
control necesarias para manejar la Unidad de Datos. Estas seales provienen de la estructura propuesta
para la Unidad de Datos y mostrada en la figura 3.
Para comprender la estructura propuesta de la Unidad de Datos es necesario estudiar el algoritmo de
multiplicacin de sumas y desplazamiento detallado en la siguiente seccin. Debe establecer una
secuencia correcta de seales de control para la Unidad de Datos de forma que realice la multiplicacin.

Sistemas Digitales Avanzados

sw[7:0]
seg[6:0]
siguiente

an[3:0]

dp

reset
modo

leds[7:0]

Calculadora

LEDS

clk
Figura 1. Esquema del sistema digital completo para la calculadora.

8
dato_a[7:0]
8
dato_b[7:0]

busc[15:0]

reset
reset
busc0
cycont

UNIDAD
DE
CONTROL

wd

wd

wa

wa

w_sumh

w_sumh

w_suml

w_suml

shr_sum

shr_sum

up_cont

up_cont

clk

UNIDAD
DE
DATOS

cy_cont

clk
bus_c[0]
Figura 2. Representacin a nivel de bloques del multiplicador secuencial.

Sistemas Digitales Avanzados

4
dato_a[7:0]
8

reset

cl

din

wa

A[8]
dout

clk
cout

cout

16

bus_a[7:0]

bus_c[15:8]
b

Sumador 8 bits
res
bus_c[0]

reset

sri

cl

wd

wd

reset

dato_b[7:0]

bus_b[7:0]

bus_c[8]

din

sri

cl

reset

shr_sum

shr SUMH[8]

w_sumh

cl

shr_sum

shr SUML[8]

w_suml

dout
4
clk

reset

cl

up_cont

clk

CONT
mod 8

up

cy

din

dout
4

bus_c[15:8]

clk

bus_c[7:0]

cy_cont

bus_c[15:0]
clk
Figura 3. Representacin estructural de la unidad de datos.

clk

cl w

Operacin

clk cl up

Operacin

A0

CONT 0

A dato_a[7:0]

CONT CONT+1

A A

CONT CONT

Registro A

clk cl w shr

Operacin

Contador

clk cl

Operacin

R0

D0

R Din[7:0]

D Din

R SHR(R,sri)

DD

R R

Biestable

Registro de desplazamiento
Figura 4. Descripcin de los componentes de la unidad de datos.

Sistemas Digitales Avanzados

2.1. Algoritmo de multiplicacin


Para realizar la multiplicacin de dos nmeros binarios de 8 bits, A y B, se utilizar el algoritmo de
sumas y desplazamientos. La idea bsica de este algoritmo es la siguiente:
1. Se cargan los datos A y B en los registros A y SUML respectivamente.
2. Se ha dispuesto de un contador mdulo-8 para contar los 8 desplazamientos necesarios. Ser el bit
de acarreo de este contador el que indique cundo finaliza la multiplicacin. Debe iniciarse este
contador a cero.
3. Se procede a analizar el bit menos significativo de B (SUML[0]). Segn sea 0 o 1, se realiza una
suma del dato de A con el dato presente en un tercer registro (SUMH).
4. Tras esto, se realiza una operacin de desplazamiento a la derecha de los registros SUMH y
SUML conjuntamente:
4.1. SUMH desplaza su bit LSB a SUML as, en la prxima operacin de suma este bit no debe
sumarse.
4.2. Este bit desplazado pasa a convertirse en el siguiente bit del resultado.
4.3. Se decrementa el contador
5. Se realizarn los pasos 3 y 4, 8 veces ya que el dato B posee 8 bits. Finaliza si el contador llega a
cero.
6. Al finalizar, la concatenacin de los registros SUMH y SUML contiene el resultado de la
multiplicacin.
Para comprender este algoritmo en la figura 5 se ha realizado un ejemplo de multiplicacin de 8 bits
mediante este procedimiento y paso a paso. Observe como en cada paso se analiza un bit del operando
B. Siempre que encuentre un 1 realiza una suma y un desplazamiento en 2 pasos. En caso se ser este bit
0, se realiza nicamente el desplazamiento en un nico paso.

Sistemas Digitales Avanzados

10101010
01010101

10101010
00000000
10101010
Procedimiento de multiplicacin manual
00000000
10101010
00000000
10101010
00000000

11100001110010

Algoritmo de sumas y desplazamientos

10101010
01010101

000000000

10101010
01010101

000000000
10101010

010101010

Paso 1.Inicio

10101010
01010101

00010101010

10101010
01010101

00010101010
10101010

011010100

10101010
01010101

0001101010010
10101010

011011111

Paso 7.Suma

Paso 8.Desplazamiento

10101010
01010101

000110111110010
10101010

011100001

10101010

01010101

0000110111110010

Paso 9.Desplazamiento

10101010
01010101

0001101010010

Paso 5.Suma

Paso 3.Desplazamiento

Paso 4.Desplazamiento

Paso 2.Suma

10101010
01010101

0010101010

Paso 6.Desplazamiento

10101010

01010101

000110111110010
10101010

011100001
Paso 9.Suma

10101010
01010101

0111000011110010

Paso 10.Desplazamiento

Figura 5. Algoritmo de multiplicacin por suma y desplazamiento.

Sistemas Digitales Avanzados

3. Desarrollo de la sesin de laboratorio


En la seccin anterior se ha descrito el multiplicador como Sistema Digital y el algoritmo de
multiplicacin. El multiplicador consta de dos partes (Unidad de Datos y Unidad de Control) que deber
desarrollar. Concretamente debe realizar las siguientes tareas:
1. Disear todos los componentes de la unidad de datos e interconectarlos correctamente.
2. Proponer un diagrama de estados que implemente el algoritmo de multiplicacin sobre la ruta de
datos diseada anteriormente y realizar su diseo en Verilog.
3. Realizar la unin estructural de la Unidad de Datos y la Unidad de Control junto con un testbech
que compruebe las multiplicaciones. Este testbench debe comprobar al menos 16 multiplicaciones
aleatorias mediante un bucle FOR.
4. Completar la descripcin estructural del multiplicador y simular el multiplicador para verificar el
correcto funcionamiento.
5. Realizar la implementacin del sistema completo en FPGA y verificar su funcionamiento
manualmente.
6. Aada alguna funcionalidad ms al multiplicador convirtiendo el sistema en una calculadora con
varias operaciones, al menos, suma y resta. Estas operaciones se seleccionarn mediante un botn
MODO. El modo de operacin debe ser visible en los LEDs de la placa de desarrollo.

4. Memoria del trabajo realizado.


Esta ltima sesin de laboratorio concluye con la entrega por parte del alumno de una memoria
donde se debe incluir:
Diagrama de estados de la unidad de control diseada.
Simulacin de las multiplicaciones.
Datos de utilizacin de recursos en la FPGA utilizada.
A partir de los datos proporcionados por el proceso de sntesis debe calculo del la frecuencia
mxima de operacin los MIPS del multiplicador.
Junto con la entrega de la memoria deber entregarse el proyecto ISE realizado.

You might also like