visualizador de señales digitales sdlc++ josé domingo Álvarez hervás

30
Visualizador de Visualizador de señales digitales señales digitales SDLC++ SDLC++ José Domingo Álvarez Hervás

Upload: tomasa-navarro

Post on 28-Jan-2016

222 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Visualizador de señales digitales SDLC++ José Domingo Álvarez Hervás

Visualizador de señales Visualizador de señales digitales SDLC++digitales SDLC++

José Domingo Álvarez Hervás

Page 2: Visualizador de señales 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

Page 3: Visualizador de señales digitales SDLC++ José Domingo Álvarez Hervás

3

ProblemaProblema

• Gran cantidad de errores en el diseño

• Difíciles de descubrir

• Mayor complejidad implica más errores

Page 4: Visualizador de señales digitales SDLC++ José Domingo Álvarez Hervás

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

Page 5: Visualizador de señales digitales SDLC++ José Domingo Álvarez Hervás

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

Page 6: Visualizador de señales digitales SDLC++ José Domingo Álvarez Hervás

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

Page 7: Visualizador de señales digitales SDLC++ José Domingo Álvarez Hervás

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

Page 8: Visualizador de señales digitales SDLC++ José Domingo Álvarez Hervás

8

¿Qué necesito para ¿Qué necesito para utilizarlo?utilizarlo?

• Una computadora

• Cualquier S.O.

• Un compilador de C++

• Un editor de ficheros ASCII

Page 9: Visualizador de señales digitales SDLC++ José Domingo Álvarez Hervás

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++

Page 10: Visualizador de señales digitales SDLC++ José Domingo Álvarez Hervás

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

Page 11: Visualizador de señales digitales SDLC++ José Domingo Álvarez Hervás

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

Page 12: Visualizador de señales digitales SDLC++ José Domingo Álvarez Hervás

12

GnuplotGnuplot

• Es de uso genérico

• No es cómodo de utilizar

• Archivos de diferentes señales implica programas de configuración diferentes

Page 13: Visualizador de señales digitales SDLC++ José Domingo Álvarez Hervás

13

ObjetivosObjetivos

• Poder trabajar con archivos de gran tamaño

• Utilizar el mismo programa

• Fácil de utilizar

• Poder seleccionar el rango de ciclos

Page 14: Visualizador de señales digitales SDLC++ José Domingo Álvarez Hervás

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

Page 15: Visualizador de señales digitales SDLC++ José Domingo Álvarez Hervás

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

Page 16: Visualizador de señales digitales SDLC++ José Domingo Álvarez Hervás

16

Unos archivos de ejemploUnos archivos de ejemplo

Page 17: Visualizador de señales digitales SDLC++ José Domingo Álvarez Hervás

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

Page 18: Visualizador de señales digitales SDLC++ José Domingo Álvarez Hervás

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

Page 19: Visualizador de señales digitales SDLC++ José Domingo Álvarez Hervás

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.

Page 20: Visualizador de señales digitales SDLC++ José Domingo Álvarez Hervás

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

Page 21: Visualizador de señales digitales SDLC++ José Domingo Álvarez Hervás

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

Page 22: Visualizador de señales digitales SDLC++ José Domingo Álvarez Hervás

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

Page 23: Visualizador de señales digitales SDLC++ José Domingo Álvarez Hervás

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

Page 24: Visualizador de señales digitales SDLC++ José Domingo Álvarez Hervás

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

Page 25: Visualizador de señales digitales SDLC++ José Domingo Álvarez Hervás

25

Mi programaMi programa

Page 26: Visualizador de señales digitales SDLC++ José Domingo Álvarez Hervás

26

Botones y campos de Botones y campos de textotexto

Page 27: Visualizador de señales digitales SDLC++ José Domingo Álvarez Hervás

27

Otro ejemploOtro ejemplo

Page 28: Visualizador de señales digitales SDLC++ José Domingo Álvarez Hervás

28

Selección de un rangoSelección de un rango

Page 29: Visualizador de señales digitales SDLC++ José Domingo Álvarez Hervás

29

Resultado finalResultado final

Page 30: Visualizador de señales digitales SDLC++ José Domingo Álvarez Hervás

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