Visualizador de señales digitales SDLC++ José Domingo Álvarez Hervás
2 Introducción Grandes inversiones en el desarrollo de chips –Mano de obra –Componentes electrónicos –Instalaciones
3 Problema Gran cantidad de errores en el diseño Difíciles de descubrir Mayor complejidad implica más errores
4 Solución Simulación bajo software –Se descubren los errores antes de construir el chip –Ahorra en la inversión –Se puede reutilizar el software ya construido
5 Un ejemplo de organización jerárquica
6 SDLC++ ¿Qué es SDLC++? –Simulador Digital en Lenguaje C++ –Programa de computadora escrito en C++ Simula circuitos electrónicos digitales mediante redes de puertas lógicas
7 Un ejemplo de diseño jerárquico en SDLC++ class POSITIVE_DETECTOR{ NOT n0, n1, n2; AND an; WIRE a0, a1, a2; public: void run(WIRE &i, WIRE &o){ n0.run(a0,i); n1.run(a1,a0); n2.run(a2,a1); n3.run(0,i,a2); } }; class NEGATIVE_DETECTOR{ POSITIVE_DETECTOR pd; NOT no; WIRE ni; public: void run(WIRE &i, WIRE &o){ no.run(ni,i); pd.run(ni,o); } }; an n2n1n0 pd no
8 ¿Qué necesito para utilizarlo? Una computadora Cualquier S.O. Un compilador de C++ Un editor de ficheros ASCII
9 ¿Por qué Línux? Más estable que el resto de los S.O. Es el entorno habitual de trabajo Dispone del mejor compilador de C++
10 Necesidad de un visualizador La salida generada es muy grande –Archivos de gran tamaño –Difíciles de interpretar –Más complejo implica mayor tamaño Necesidad de interpretarlos visualmente –Más fácil de interpretar –Más rápido
11 Librería gráfica utilizada Librería Xforms Es compilada no interpretada Más fácil de utilizar que la X-Lib Más rápida de ejecutar que Tcl - Tk
12 Gnuplot Es de uso genérico No es cómodo de utilizar Archivos de diferentes señales implica programas de configuración diferentes
13 Objetivos Poder trabajar con archivos de gran tamaño Utilizar el mismo programa Fácil de utilizar Poder seleccionar el rango de ciclos
14 ¿Cómo funciona el programa? Necesita dos archivos Lee los datos de esos archivos Interpreta esos datos Pinta los datos en la pantalla
15 ¿Cómo son los archivos? Archivo de cabecera –Cualquier nombre –Nombres de los archivos Archivo con datos –Mismo nombre, pero con extensión ‘sdl’ –Valores entre 0 y 255
16 Unos archivos de ejemplo
17 ¿Porqué dos archivos? Mas facilidad para crear el archivo de datos Me tengo que preocupar solo de los nombres de las señales Para moverse mejor y mas rápidamente por los datos
18 ¿Cómo me muevo por el archivo? Calculo el nº de ciclos ciclos = (tam_archivo /(4 * num_lineas)) Se lo que me ocupa cada ciclo Calculo el nº de señales digitales Averiguo el tamaño del archivo
19 ¿Donde almaceno esos valores?
20 ¿Por qué es de tipo double? Para poder pintar más ciclos Más precisión Se calcula el pixel a pintar –Se utiliza una técnica parecida a Bresenham –Se decide que píxel está más próximo
21 Módulos LIMPIAR RECINTO MAKE PRINCIPAL LEER DATOS RESTABLECER CICLOS LIMPIAR ENTRADAS PINTAR LINEA COGER RANGO REDONDEAR CALCULAR CICLOS CALCULAR INTERVALOS COORD A CICLOS LEER CABECERA LEER ARCHIVO SALTAR LINEAS RECALCULAR CAMBIAR ARCHIVO PASAR
22 ¿Cómo pinta las líneas? Lee los ciclos uno a uno Pinta las líneas conforme lee el archivo Acceso inmediato a cualquier ciclo
23 Consumo de memoria ram Consume poca memoria Los datos leídos no se guardan Si se quiere volver a pintar se lee del archivo, no de memoria No hay que reservar memoria
24 ¿Cómo pueden ser los archivos de grandes? Todo lo grande que se quiera Archivos con datos de varias líneas Las variables son del tipo ‘long int’ Puede representar ciclos
25 Mi programa
26 Botones y campos de texto
27 Otro ejemplo
28 Selección de un rango
29 Resultado final
30 Conclusiones Programa único para diferentes archivos Soporta archivos de gran tamaño Selección de rango de ciclos Posibilidad de cambiar de archivo Fácil de utilizar