INFORME PROYECTO FINAL ELECTRONICA DIGITAL II
“DISPOSITIVO DE ALMACENAMIENTO DIGITAL CON REGISTRO DE TIEMPO Y TEMPERATURA”
Universidad Nacional de Colombia Carlos Andrés Castellanos 261378
Andrés Ramos Bermejo 260940 1. Introducción
El siguiente es un informe el cual tiene como objetivo presentar los detalles en cuanto a la elaboración y diseño de un dispositivo de almacenamiento digital con registro de tiempo y temperatura ambiente. Se parte desde una descripción comportamental pasando por algunas limitaciones, luego una descripción estructural básica donde se muestra la conexión de los módulos que componen al dispositivo y como se interconecta con el procesador embebido LM32, luego la división en tareas Hardware y Software, posteriormente el resultado de las pruebas, luego un análisiseconómico donde se detallan los costos del proyecto y por ultimo algunas conclusiones y anexos.
2. Comportamiento ¿Qué hace el dispositivo?
Funciona como un elemento capaz de almacenar información proveniente de un teclado matricial, dicha informaciónestá compuesta por caracteres alfanuméricos (números del '0' al '9' y letras de la 'a' a la 'z'). Estando en modo de escritura el usuario debería operar el dispositivo tal y como el teclado de un teléfono celular de tal forma que cuando se presione por ejemplo la tecla '2' aparecerá en la pantalla la letra 'a' si presiona la misma tecla aparecerá la letra 'b', si presiona nuevamente aparecerá la letra 'c', si presiona de nuevo aparecerá el número '2' y así el ciclo se repite hasta que decida desplazarse una posición a la derecha. Cada vez que presione una tecla y aparezca la correspondiente letra en la pantalla LCD esta informaciónserá almacenada en la memoria para, si se desea, una posterior lectura.
Estando en modo de Lectura el usuario puede acceder a diferentes posiciones de memoria para leer el contenido que allí se encuentre, además de eso puede también leer la hora compuesta por horario y minutero y la fecha actual, compuesta por día, mes y año. Además también podrá leer la temperatura ambiente actual.
Limitaciones.
1. El dispositivo no almacena caracteres diferentes a letras mayúsculas o números.
2. Solo lee temperaturas entre un rango de 0 grados centígrados y 40 grados centígrados, para temperaturas superiores o inferiores mostrara lecturas erradas.
3. Solo se podrá almacenar datos equivalentes a 256KB de información.
4. El dispositivo debe ser operado en espacios bien iluminados ya que el LCD no cuenta con backlight.
3. Estructura.
En la figura 1 se observa un diagrama de bloques del sistema, donde se detallan los principales elementos que lo componen. El procesador LM32 y los periféricos necesarios para desarrollar el sistema (LCD/Teclado, I2C). Es de notar que la UART no es parte esencial del sistema, sin embargo fue de gran utilidad ya que funciono como herramienta de depuración y comprobación del funcionamiento de los periféricos. Finalmente la interfaz entre los periféricos y el procesador se consigue mediante la utilización del módulo wishbone el cual interconecta todos los periféricos con el procesador.
Figura 1. Diagrama de bloques del sistema
Controlador de I2C: El controlador de I2C fue diseñado pensando en manejar con un solo periféricomúltiples dispositivos (Sensor de temperatura, memoria y reloj de tiempo real). Tiene la tarea de desarrollar la comunicación de forma serial siguiendo el protocolo de comunicación I2C; La línea SCL funciona a una frecuencia de 100kHz la cual sincroniza la comunicación entre el master y los esclavos.
4. Tareas HW y SW Tareas HW:
– Conversión de datos de BCD a ASCII.
– Conversión de datos en formato binario a ASCII. – Divisores de frecuencia.
– El módulo I2C requiere de unos tiempos de retraso de entre 5us y 20 us, esta tarea fue hecha en hardware.
Tareas SW:
– El programa principal (escrito en C) que generara todas las instrucciones que debe seguir el procesador para que el dispositivo funcione correctamente.
– Inicializar y configurar RTC y sensor de temperatura.
5. Consideraciones de grupo. ¿Por qué Hardware?
– Los datos de hora y fecha del RTC vienen en formato BCD, estos deben ser pasados a formato ASCII para que puedan ser leídos por el LCD, esta tarea fue hecha mediante hardware, en el periférico LCD/teclado ya que al intentar hacerlo mediante software, el conjunto de instrucciones resultante no cabían en la memoria de datos del procesador.
– Los datos del sensor de temperatura vienen en formato binario, al igual que en el caso del RTC estos deben ser pasados a formato ASCII para ser entendidos por el LCD, esto se hizo mediante hardware en el periférico LCD/teclado. La razón es la misma que en el caso de los datos del RTC, en software son muchas la instrucciones que se necesitan para poder hacer dicha conversión lo cual llena la memoria de datos del procesador, además la concatenación de datos en verilog hizo de esto una tarea másfácil por lo cual se decidió hacerlo en hardware.
– Los divisores de frecuencia tanto para el LCD como para el módulo I2C fueron hechos en hardware ya que no son complicados de diseñar, solo requiere de algún contador y unos comparadores, fue por esta razón que se decidió hacer como hardware.
– El modulo que calcula tiempos de entre 5us y 20 us fue necesario debido a que el protocolo I2C requiere unos tiempos mínimos de espera para generar tanto las condiciones de inicio como de parada así como también un pequeño retraso antes de poner un dato en la línea SDA o de leer un dato en la misma línea. Ya que se cuenta con el reloj de 50Mhz de la FPGA fue evidente que en hardware solo se requería de un contador para poder tener señales que indicaran cuando se había alcanzado los 5us o los 20us, fue por esta razón que se decidió hacer en hardware.
¿Porqué Software?
– Dada la arquitectura propia del procesador, se hace obligatorio tener que programarlo mediante software para poder indicarle el conjunto de instrucciones a seguir, además gracias a los compiladores que transforman el lenguaje de C a ensamblador y posteriormente a lenguaje de máquina, hacerlo en C resulta una tarea muy sencilla.
– Configurar e inicializar los circuitos integrados (RTC y sensor de temperatura TMP 100) requiere de escribir ciertos datos en algunos registros internos de cado uno de los dispositivos, hacer esto mediante software es simple ya que solo hace falta escribir el dato en la dirección asignada al periférico que hace las veces de controlador I2C para este caso en particular, dicho periférico tiene la dirección 0XF0030000, solo hace falta escribir en esa dirección un dato de 32
bits, donde los 8 primeros bits indicaran la dirección del esclavo que quiero acceder, los siguientes 8 bits el registro en particular que se desea escribir, y los últimos 8 bits corresponderán al dato que se desea almacenar en el registro seleccionado.
6. Resultados de pruebas
Las pruebas se realizaron siguiendo una metodología que permitiera constatar de la forma más segura posible que los componentes y módulos que hacen parte del proyecto funcionen correctamente, para ello se utilizó principalmente la UART y el puerto serial ya que es simple recibir por ejemplo los datos de temperatura y tiempo y enviarlos por el puerto serial para visualizarlos en la pantalla de la consola del minicom en Ubuntu.
Otra forma de constatar hasta cierto punto si los módulosestán funcionando fue a través de simulación, en las siguientes imágenes se muestran ejemplos de cómo se obtienen los datos de temperatura y tiempo y son mostrados en la pantalla de consola de minicom, ademástambién se muestra una simulación de una parte del funcionamiento del módulo I2C.
Figura 2. Lectura de temperatura.
En la figura 2 se ven diferentes mediciones de temperatura las cuales fueron tomadas del sensor y enviadas al minicom a través del puerto serial. Las primeras mediciones (&17.0, &17.0) corresponden a la lectura de temperatura del sensor sin ninguna clase de manipulación, es decir solo tomando la temperatura ambiente. En las mediciones posteriores donde la temperatura sube a 21 y 23 grados
centígrados, para después bajar a 19 grados centígrados, el dispositivo se vio afectado por una lectura de temperatura corporal de ahí el ligero aumento, esto con el fin de corroborar que el dispositivo efectivamente estaba funcionando. Hay que resaltar que el sensor de temperatura se sometió a una calibración ya que en principio estaba marcando 5 grados centígradosmás de la temperatura real ambiente la cual se obtuvo desde lecturas de páginas web meteorológicas.
Figura 3. Lectura de Fecha y hora
En la figura 3 se pretende mostrar la forma en la que se comprobó el correcto funcionamiento del RTC al igual que con el sensor de temperatura se leen los registros correspondientes al día, el mes, el año, la hora y los minutos y se envían a través del puerto serial para ser mostrados en la pantalla del minicom.
Figura 4. Simulación I2C
En la figura 4 se muestra un ejemplo de simulación del módulo I2C , se puede ver como se genera la condición de inicio y después de 20us se activa la línea SCL y el reloj empieza a funcionar, los datos se envían en la señal dat_tx, la simulación no fue muy útil para la comprobación del buen funcionamiento de este móduloya que se requiere de un esclavo que responda un aknowledgedespués de cada
transmisión y ya que no se contaba con un “esclavo virtual” que interactuara con el master nunca se pudo comprobar el funcionamiento másallá de la transmisión del primer byte que corresponde a la dirección del esclavo.
7. ANALISIS ECONOMICO
Para el costo total del prototipo se tendrá en cuenta las horas totales empleadas en su elaboración y diseño y el costo de los materiales usados.
Material Costo Horas de trabajo Costo Hora
FPGA $200.000 PCB $50.000 LCD $45.000 TECLADO $6.000 OTROS $45.000 35h X 2 Ingenieros 1h = $50.000 Total $346.000 70h $3.500.000 Total(materiales/tiempo) $3.846.000 8. CONCLUSIONES
Durante el diseño e implementación del dispositivo surgieron varios inconvenientes, uno de ellos tuvo que ver con el funcionamiento del teclado, en principio teníamos un teclado matricial de membrana, pero este se dañó tratando de corregir un problema de estática. Nos dimos cuenta que la solución era colocar unas resistencias de pulldown ya sea en los pines de las columnas o en los pines de las filas. Ya que en el diseño inicial del pcb nunca consideramos estas resistencias, tuvimos que añadirlas a la pcb en forma de puente, de esta manera el problema de la estática con el tecladodesapareció.
Durante las etapas de prueba del LCD nos percatamos que había un mal funcionamiento en este,después de una serie de pruebas nos dimos cuenta que uno de los pines del LCD no estaba funcionando, mas específicamente el pin correspondiente al dato DB2. Buscando no gastar más dinero comprando otro LCD decidimos manejarlo usando los 4 bits más significativos del bus de datos (DB4 – DB7) esto nos acarrea el inconveniente de que ahora los tiempos de acceso al LCD aumentarían, sin embargo estos eran problemas tolerables.
El dispositivo puede ser alimentado mediante un adaptador de corriente de 5V miniUSB o usando los 5V de la FPGA, pero con la precaución de no pedirle más de 200mA a los conectores I/O, esto fue una de las razones por las cuales no usamos LCD con backlight ya que con esta clase de LCD's el consumo de corriente hubiera sobrepasado el límite permisible.
Anexos
1. Diseño circuito esquemático.