Post on 28-Jan-2016
Visualizador de señales Visualizador de señales digitales SDLC++digitales SDLC++
José Domingo Álvarez Hervás
2
IntroducciónIntroducción
• Grandes inversiones en el desarrollo de chips– Mano de obra– Componentes electrónicos– Instalaciones
3
ProblemaProblema
• Gran cantidad de errores en el diseño
• Difíciles de descubrir
• Mayor complejidad implica más errores
4
SoluciónSolució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 Un ejemplo de organización jerárquicaorganización jerárquica
M U L TIP L E X O R E S
A L U D E 1 B IT
A L U 3 2 B ITS
A N D W IR E O R N O T
C E R R O JO S
F L IP S F L O P S
R E G IS TR O S
F IC H E R O D E R E G IS TR O S
C A M IN O D E D A TO S M E M O R IA
M IP S R 2 0 0 0
6
SDLC++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 Un ejemplo de diseño jerárquico en SDLC++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);
}
};
ann2n1n0
pdno
8
¿Qué necesito para ¿Qué necesito para utilizarlo?utilizarlo?
• Una computadora
• Cualquier S.O.
• Un compilador de C++
• Un editor de ficheros ASCII
9
¿Por qué Línux?¿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 Necesidad de un visualizadorvisualizador
• 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 utilizadaLibrerí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
GnuplotGnuplot
• Es de uso genérico
• No es cómodo de utilizar
• Archivos de diferentes señales implica programas de configuración diferentes
13
ObjetivosObjetivos
• 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 ¿Cómo funciona el programa?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?¿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 ejemploUnos archivos de ejemplo
17
¿Porqué dos archivos?¿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 ¿Cómo me muevo por el archivo?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 ¿Donde almaceno esos valores?valores?
CAMPO UTI LI DAD
int cero Posición vertical en pixel para pintar el cero deesa señal.
int uno Posición vertical en pixel para pintar el uno de
esa señal.
double ultima_x Valor del pixel, en horizontal, donde se hapintado la última x.
int ultima_y Valor del pixel, en vertical, donde se ha pintado
la última y, este valor solo podrá ser el del cero
o el del uno.
int ultimo_valor Último valor de la señal pintado, solo puede serVCC o GND.
20
¿Por qué es de tipo ¿Por qué es de tipo double?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ódulosMódulos
LIMPIAR RECINTOMAKE PRINCIPAL
LEER DATOSRESTABLECER CICLOS
LIMPIAR ENTRADASPINTAR LINEA
COGER RANGO
REDONDEARCALCULAR CICLOS
CALCULAR INTERVALOSCOORD A CICLOS
LEER CABECERALEER ARCHIVOSALTAR LINEAS
RECALCULARCAMBIAR ARCHIVO
PASAR
22
¿Cómo pinta las líneas?¿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 ramConsumo 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 ¿Cómo pueden ser los archivos de grandes?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 2.147.483.647 ciclos
25
Mi programaMi programa
26
Botones y campos de Botones y campos de textotexto
27
Otro ejemploOtro ejemplo
28
Selección de un rangoSelección de un rango
29
Resultado finalResultado final
30
ConclusionesConclusiones
• 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