Cálculadora

From Qi-Hardware
Jump to: navigation, search

PROYECTO FINAL DIGITAL II
Por: cagutierrezcam.

Contents

[edit] Calificación

Porcentaje Presentación 20% Informe 30% Funcionamiento 50%
1 Entrega 10% 0.5 0.5 0.5
2 Entrega 30% 0 0 0 NO ASISTIERON A LA ENTREGA OCTUBRE 8
3 Entrega 20% 0.5 0.5 2.0
4 Entrega 40% 3 3 3


[edit] Introducción

Se pretende crear un prototipo básico de una cálculadora, en el que se puedan encontrar las funciones elementales : operaciones básicas y trigonométricas. Lo anterior se implementará basados en la estructura del procesador MICO-32, donde el usuario podrá interactuar con la calculadora por medio de un teclado matricial y la visualización se hará en un lcd.

Para la realización del proyecto, se usará la tarjeta SIE(sakc) junto una tarjeta hija, en la que se implementará el teclado matricial y el LCD de 16x2.

[edit] Diagrama de Bloques

DBCal v1.jpg


Teclado matricial : su función es hacer la comunicación usuario-calculadora, se empleará un teclado de 4x5, ya que se necesitan 19 teclas: un reset, 10 dígitos, 4 operaciones básicas (+,-,* y /), 3 funciones trigonométricas (cos, sin y tan) y una tecla para el resultado.

Memoria ROM: almacena los datos de programación de la calculadora.

Memoria RAM: almacena temporalmente los valores a calcular y el resultado de las operaciones matemáticas.

Control

Registro de direcciones

LCD: Para la visualización y dispositivo de salida se escogió un display LCD, pues contiene su propio controlador de manejo y los resultados que necesitamos mostrar se encuentran todos cubiertos por él. Por otro lado la forma de alimentación nos la proporciona la tajeta por lo que no tenemos que preocuparnos por usar otras fuentes.

Este módulo LCD es monocromático, puede visualizar caracteres predefinidos y algunos definidos por el usuario. Es necesario hacer rutinas de retraso, pues en especial para el proceso de inicialización se necesitan retardos de máximo 5 ms. y dado que el reloj de la tarjeta es mucho más rápido podría ocasionarse pérdida de la información.

Algunas caracteristicas:

  • Alimentación entre 4.5 y 5.5 V.
  • Interfaz de 4 u 8 bits.
  • Un total de 240 caracteres predeterminados.
  • Posibiliidad de definir 8 caracteres por el usuario.

Este LCD posee dos registros; uno para albergar la instrucción y otro para guardar el dato en la memoria. Posee un contador de direcciones. Este modulo posee backlight, 3 bits de control y 3 pines de alimentación. Para el funcionamiento de este módulo es necesario utilizar algunas resistencias para controlar la iluminación y el contraste de la pantalla, adicionalmente vamos a escoger una conexión de 8 bits con el MPU pues esto nos ocupará mas espacio y por el contrario nos podrá brindar más velocidad para el control.

Algunos comandos de funcionamiento:

[edit] Diagrama de Flujo

[edit] Tareas Software

  • Programación de toda la lógica de las operaciones matemáticas de la calculadora.
  • Manejo de las señales entre el procesador y los periféricos.
  • Creación de la unidad de punto flotante.

[edit] Tareas Hardware

  • Adquisición de datos por el teclado matricial:
    • Siendo más específicos, podríamos tomar como base una pulsación de un segundo, se podría usar una frecuencia de unos 50 milisegundos, claro está sujeto a modificaciones.
  • Memoria de datos almacenados, con los que se realizan las operaciones y se muestran los resultados de las mismas.
  • Visualización de los datos tomados desde la memoria al LCD:
    • En cuanto a la frecuencia de barrido para poder manejar el LCD usando una formula sencilla: FH= (240 + 24 ) x 60 = 15840 Hz.

[edit] Unidad de coma flotante

El formato que vamos a utilizar para este proyecto será un formato estándar de la IEEE; el cual posee una precisión de 32 bits y que es el más trabajado en general para manejo de números en sistemas computacionales. El nombre completo de este formato es Standard for Binary Floating-Point Arithmetic (ANSI/IEEE Std 754-1985) o Binary floating-point arithmetic for microprocessor system.

[edit] Diagrama de bloques de la FPU

Es necesario conocer los regitros que maneja esta unidad, pues esto permite en un nivel mas abstracto manejar esta unidad como una caja negra para el resto del sistema. Estos Regitros son:


Diagrama fpu.jpg

Dentro de este diagrama de bloques podemos observar un bloque de control el principal bloque de funcionamiento del modulo de la unidad de punto flotante, pues por los demás bloques son automaticos y funcionan por medio del reloj. El registro de entrada salida que maneja este bloque se ilustra a continuación:
Registro de control.jpg

[edit] Pre-normalización

Como primer paso para la utilización de este formato, debemos tomar los valores que obtenemos del teclado matricial para posteriormente hacer operaciones con estos números. Para este proceso de pre.normalización se utiliza el siguiente proceso, ilustrado en un diagrama de flujo:
Diagrama de bloques de la prenormalización

Dentro del la unidad que llamamos registro encontramos la unidad de punto flotante en donde se maneja la parte principal del proyecto para esta unidad se trabajan internamente 3 etapas de operación una etapa de pre-normalización, una segunda etapa de operaciones, y por ultimo una etapa de post-normalización. Es necesario denotar que la pre-normalización para la suma y la resta difieren de la pre-normalización para la multiplicación y la división.

[edit] Operaciones

Las operaciones para las que estamos programando el modulo necesitan varios componente internos para poder trabajar, entre ellos se encuentran comparadores de magnitud, sumadores y multiplexores.

Esquematico multipli.jpg Esquematico suma.jpg Diagrama suma.jpg Diagrama multiplica.jpg

[edit] Post-normalización

Simulación de la salida del modulo de la unidad de punto flotante con las operaciones de suma y resta implementadas.
Simulación1.1.jpg Simulacion2.jpg

El siguiente es la forma con la que se caracteriza este formato:
Formato coma flotante

Este formato consta de 3 partes, la primera un bit de signo del numero en general; la segunda el exponente del número con signo el cual consta de 8 bits y de ser normalizado el número, puede ser mas favorable comparar primero el exponente para organizar los números; y una tercera parte que es la mantisa que consta de 23 bits.

Rangos: Los rangos que se pueden llegar a obtener con este formato son los siguientes:

  • Exponente: (2n – 1)/2= 127; de tal modo que el mayor número positivo disponible es 127 y el mayor número negativo posible es - 126.
  • Mantisa: Como posee 23 bits si el número es no normalizado se puede llegar a manejar en la mantisa un valor máximo de 223-1 = 8’388.607.
  • Excepciones: es posible dar el valor de infinito para este formato, la IEEE reconoce este símbolo al colocar la mantisa en 0 y el valor exponencial en 255.

[edit] Diseño de módulos

[edit] Modulo LCD

Módulo LCD
Codigo1.pdf

A continuación se muestra el codigo para el modulo LCD en donde se pueden mostrar varios numeros.

[edit] Modulo teclado Matricial

Para este modulo es necesario tener entradas y salidas al teclado pues como el teclado está hecho con interruptores, y la identificación de las teclas marcadas es crucial para el funcionamiento del proyecto pues esta es la interfaz con el usuario. Módulo teclado matricial
Codigo2.pdf

[edit] Modulo de FPU

Las salidas y entradas para este modulo se muestran en el siguiente codigo a continuación:

  1. module fpu( clk, rmode, fpu_op, opa, opb, ans, inf, snan, qnan, ine, overflow, underflow, zero, div_by_zero);
  2. input		clk;
  3. input	[1:0]	rmode;
  4. input	[2:0]	fpu_op;
  5. input	[31:0]	opa, opb;
  6. output	[31:0]	ans;
  7. output		inf, snan, qnan;
  8. output		ine;
  9. output		overflow, underflow;
  10. output		zero;
  11. output		div_by_zero;

[edit] Mapa de memoria

Las direcciones de los perifericos que se manejan en el proyecto son:

Periferico Dirección
Display LCD 15'h7000
Interrupciones 15'h7001
Registro de direcciones 15'h7002
Memoria Ram 15'h7003
Teclado Matricial 15'h0000
FPU 15'h7004

[edit] Esquemáticos

[edit] Cronograma de actividades

Camilo Andrés Gutiérrez Campos 261317
Ingeniería Electrónica

Personal tools
Namespaces
Variants
Actions
Navigation
interactive
Toolbox
Print/export