Ejemplo: simulación de circuito en GPsim

Publicar nuevo tema   Responder al tema

Ver el tema anterior Ver el tema siguiente Ir abajo

Ejemplo: simulación de circuito en GPsim

Mensaje  arcachofo el Vie 19 Dic 2008 - 6:15

Este es un ejemplo de como simular un circuito en Gpsim, se trata de comprobar el funcionamiento de los comparadores en un pic16f877a.

Este es un pantallazo del circuito en GPsim

GPsim tiene un entorno gráfico muy básico y no se pueden dibujar los circuitos directamente en modo gráfico, hay que ir seleccionado y conectando componentes en la ventanita de izquierda, es un poco pesado pero es lo que hay... alguien con conocimientos de C++ se anima a mejorar eso???

Lo primero es cargar un archivo.cod o .cof, este archivo se genera al compilar tu proyecto en Piklab o donde lo hayas hecho.

El procedimiento para crear el circuito empieza por cargar una librería de módulos, para eso le damos al botón "Add Library" que está medio escondido, cargamos la librería libgpsim_modules.so , entoces vamos eligiendo componetes dándole a "Add module", aparece una lista y elegimos el que queramos, le damos un nombre y establecemos los valores.
Una vez creado cada componente se puede mover con el ratón y colocar en el sitio que quieras.

Luego hay que crear "nodos",... los pines de los componentes no se conectan directamente unos a otros, sino que se conectan a nodos, para conectar dos cosas, primero creas un nodo y luego conectas cada cosa al nodo.

Cuando se van creando nodos y haciendo conexiones se pueden ver las conexiones hechas dándole a "Trace all", entonces aparecen los "cables" en el dibujo.

Una vez hecho todo podemos guardar ese "circuito" dándole a "Save configuration".

Si abres ese archivo que has guardado (netlist.stc) verás algo como esto:
Código:


# This file was written by gpsim.

# You can use this file for example like this:
#    gpsim -s mycode.cod -c netlist.stc

# If you want to add commands, you can create another .stc file
# and load this file from it. Something like this:
# ----------- myproject.stc ---------------
# load s mycode.cod
# frequency 12000000
# load c netlist.stc
# -----------------------------------------
# You can then just load this new file:
#    gpsim -c myproject.stc
# and use netlist.stc whenever you save from the breadboard.
#


# Processor position:


# Module libraries:
module library libgpsim_modules.so


# Modules:
p16f877a.CONFIG=$ff
p16f877a.WarnMode=true
p16f877a.SafeMode=true
p16f877a.UnknownMode=true
p16f877a.BreakOnReset=true
p16f877a.BreakOnInvalidRegisterRead=true
p16f877a.BreakOnInvalidRegisterWrite=true
p16f877a.frequency=4000000,000000000
p16f877a.xpos=216,0000000000000
p16f877a.ypos=180,0000000000000

module load led led1
led1.xpos=384,0000000000000
led1.ypos=240,0000000000000

module load led led2
led2.xpos=384,0000000000000
led2.ypos=180,0000000000000

module load switch switch1
switch1.state=false
switch1.Ropen=100000000,0000000
switch1.Rclosed=1,000000000000000
switch1.xpos=60,00000000000000
switch1.ypos=180,0000000000000

module load switch switch2
switch2.state=false
switch2.Ropen=100000000,0000000
switch2.Rclosed=1,000000000000000
switch2.xpos=60,00000000000000
switch2.ypos=288,0000000000000

module load pullup pullup1
pullup1.resistance=1000,000000000000
pullup1.capacitance=0,000000000000000
pullup1.voltage=2,000000000000000
pullup1.xpos=276,0000000000000
pullup1.ypos=84,00000000000000

module load pullup pullup2
pullup2.resistance=1000,000000000000
pullup2.capacitance=0,000000000000000
pullup2.voltage=5,000000000000000
pullup2.xpos=144,0000000000000
pullup2.ypos=60,00000000000000

module load pullup pullup3
pullup3.resistance=1000,000000000000
pullup3.capacitance=0,000000000000000
pullup3.voltage=5,000000000000000
pullup3.xpos=216,0000000000000
pullup3.ypos=480,0000000000000

module load pulldown pulldown1
pulldown1.resistance=100,0000000000000
pulldown1.capacitance=0,000000000000000
pulldown1.voltage=0,000000000000000
pulldown1.xpos=36,00000000000000
pulldown1.ypos=396,0000000000000



# Connections:
node nA2
attach nA2 pullup2.pin porta2 switch1.A cm_stimulus_3

node nA3
attach nA3 pullup3.pin porta3 switch2.A cm_stimulus_4

node nB6
attach nB6 led1.in portb6

node nB7
attach nB7 led2.in portb7

node nGnd
attach nGnd pulldown1.pin switch1.B switch2.B

node nUp
attach nUp pullup1.pin porta0 porta1 cm_stimulus_1 cm_stimulus_2


# End.


Si tratas de utilizar ese archivo de nuevo no funcionará... al menos a mí no me funciona, el problema es que los decimales no tienen que ir con comas sino con puntos, eso se soluciona rápido en tu editor de texto con la función reemplazar.

Otro fallo que da es con esos "cm_stimulus_"... esos no los hice yo... se los inventó el solo... hay que borrarlos.

Una vez arregladas esas cositas ese circuito se puede utilizar en otras simulaciones.

Como sugiere el mismo script al principio:
Puedes usar este archivo (netlist.stc) de esta manera:

gpsim -s mycode.cod -c netlist.stc

Si quieres añadir comandos puedes crear otro archivo .stc
y cargar este archivo desde ahí, algo como esto:

# ----------- myproject.stc ---------------
load s mycode.cod
frequency 12000000
load c netlist.stc
# -----------------------------------------

Entonces puedes cargar solamente este nuevo archivo:

gpsim -c myproject.stc

y usar netlist.stc para simular distintos programas en ese circuito.


Una vez que conoces un poco el sistema lo más facil es escribir un script con copia/pega y cambia valores y así puedes crear cualquier circuito con los componentes que trae GPsim, incluyendo:
-Interruptores
-Pulsadores
-Resistencias (en realidad puede comportarse como varias cosas)
-Puertas lógicas
-Led
-display led 7 segmentos
-Lcd 2x20
-Lcd gráfico
-Generador de pulsos
-Encoder
-TTL377
-Usart
-I2C

También se pueden crear nuevos módulos...

arcachofo
Participante Activo
Participante Activo

Cantidad de envíos: 90
Fecha de inscripción: 26/11/2008

Volver arriba Ir abajo

Re: Ejemplo: simulación de circuito en GPsim

Mensaje  maigke el Lun 10 Ago 2009 - 23:55

Hola esta muy buena la explicacion pero como cargas un archivo .cof en el gpsim Laughing

maigke
Participante Activo
Participante Activo

Cantidad de envíos: 49
Fecha de inscripción: 12/04/2009
Edad: 32
Localización: Mexico

Volver arriba Ir abajo

Re: Ejemplo: simulación de circuito en GPsim

Mensaje  Pikitin el Mar 11 Ago 2009 - 1:39

Pues solo tienes que abrir Gpsim, vas a "File/Open" y eliges el archivo que quieras abrir.

si quieres usarlo en algún script como en elejemplo anterior pues donde ponga "mycode.cod" pones el nombre del archivo.cof que quieras abrir.

Para abrir Gpsim normalmente pues tecleas "gpsim" en una terminal o añades un elemento al menú, lanzador al escritorio o panel o como veas.

Una vez que abras Gpsim puedes abrir el archivo que quieras y crear circuitos (si lo necesitas) pero para los circuitos se acaba antes escribiendo scripts.

Para simular el código y ver los registros y las salidas del pic no necesitas crear ningún circuito ni hacer scripts ni nada, solo abrir el programa, cargar el archivo y darle a run o paso a paso, crear breakpoints y todo eso.

Pikitin
veterano
veterano

Cantidad de envíos: 329
Fecha de inscripción: 26/11/2008

Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


Publicar nuevo tema   Responder al tema
Permiso de este foro:
No puedes responder a temas en este foro.