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

Post on 28-Jan-2016

225 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

top related