next up previous
Next: About this document ... Up: Práctica 8. Flip-flops Previous: flip-flops.c

test_flip-flops.c

/*
 * test_flip-flops.c -- Prueba de los flip-flops.
 * Ultima modificación: 30-10-00.
 * gse.
 */

#include <stdio.h>
#include "defs.h"
#include "gates.h"
#include "latches.h"
#include "flip-flops.h"
#include "clock.h"
#include "random.h"

#ifdef _POSITIVE_DETECTOR_
void main() {
  FILE *data=fopen("data","w");
  FILE *data_sdl=fopen("data.sdl","w");
  int iter=100;
  WIRE a=0,b=0;
  POSITIVE_DETECTOR x;
  CLOCK ck(20);
  fprintf(data,"a b");
  while(iter--) {
    ck.run(iter,a);
    x.run(a,b);
    fprintf(data_sdl,"%3d %3d\n",a,b);
  }
}
#endif

#ifdef _NEGATIVE_DETECTOR_
void main() {
  FILE *data=fopen("data","w");
  FILE *data_sdl=fopen("data.sdl","w");
  int iter=100;
  WIRE a,b;
  NEGATIVE_DETECTOR x;
  CLOCK ck(20);
  fprintf(data,"a b");
  while(iter--) {
    ck.run(iter,a);
    x.run(a,b);
    fprintf(data_sdl,"%3d %3d\n",a,b);
  }
}
#endif

#ifdef _NEGATIVE_GLICH_SUPRESSOR_
void main() {
  FILE *data=fopen("data","w");
  FILE *data_sdl=fopen("data.sdl","w");
  int iter=100;
  WIRE a,b;
  NEGATIVE_GLICH_SUPRESSOR x;
  RANDOM ck(2);
  fprintf(data,"a b");
  while(iter--) {
    ck.run(iter,a);
    x.run(a,b);
    fprintf(data_sdl,"%3d %3d\n",a,b);
  }
}
#endif

#ifdef _POSITIVE_GLICH_SUPRESSOR_
void main() {
  FILE *data=fopen("data","w");
  FILE *data_sdl=fopen("data.sdl","w");
  int iter=100;
  WIRE a,b;
  POSITIVE_GLICH_SUPRESSOR x;
  RANDOM ck(2);
  fprintf(data,"a b");
  while(iter--) {
    ck.run(iter,a);
    x.run(a,b);
    fprintf(data_sdl,"%3d %3d\n",a,b);
  }
}
#endif

#ifdef _NEG_SR_FF_
void main() {
  FILE *data=fopen("data","w");
  FILE *data_sdl=fopen("data.sdl","w");
  int iter=500;
  WIRE S=0,R=0,ck=0,Q=0,Qn=VCC;
  NEG_SR_FF l;
  CLOCK ck0(50), ck1(100), ck2(30);
  fprintf(data,"S R ck Q Qn");
  while(iter--) {
    ck0.run(iter,S);
    ck1.run(iter,R);
    ck2.run(iter,ck);
    l.run(S,R,ck,Q,Qn);
    fprintf(data_sdl,"%3d %3d %3d %3d %3d\n",S,R,ck,Q,Qn);
  }
}
#endif

#ifdef _NEG_D_FF_
void main() {
  FILE *data=fopen("data","w");
  FILE *data_sdl=fopen("data.sdl","w");
  int iter=200;
  WIRE D=0,ck=0,Q=0,Qn=VCC;
  NEG_D_FF ff;
  CLOCK ck0(31), ck1(17);
  fprintf(data,"D ck Q Qn");
  while(iter--) {
    ck0.run(iter,D);
    ck1.run(iter,ck);
    ff.run(D,ck,Q,Qn);
    fprintf(data_sdl,"%3d %3d %3d %3d\n",D,ck,Q,Qn);
  }
}
#endif

#ifdef _NEG_JK_FF_
void main() {
  FILE *data=fopen("data","w");
  FILE *data_sdl=fopen("data.sdl","w");
  int iter=2000;
  WIRE J,K,ck,Q=0,Qn=VCC;
  NEG_JK_FF l;
  CLOCK ck0(310), ck1(470), ck2(42);
  fprintf(data,"J K ck Q Qn");
  while(iter--) {
    ck0.run(iter,J);
    ck1.run(iter,K);
    ck2.run(iter,ck);
    l.run(J,K,ck,Q,Qn);
    fprintf(data_sdl,"%3d %3d %3d %3d %3d\n",J,K,ck,Q,Qn);
  }
}
#endif

#ifdef _NEG_JK_FF_PC_
void main() {
  FILE *data=fopen("data","w");
  FILE *data_sdl=fopen("data.sdl","w");
  int iter=8800;
  WIRE J,K,ck,Q=0,Qn=VCC,PRT=VCC,CLR=VCC;
  NEG_JK_FF_PC l;
  CLOCK ck0(500), ck1(1000), ck2(42), ck3(1200), ck4(4400);
  fprintf(data,"J K ck PRT CLR Q Qn");
  while(iter--) {
    ck0.run(iter,J);
    ck1.run(iter,K);
    ck2.run(iter,ck);
    ck3.run(iter,PRT);
    ck4.run(iter,CLR);
    l.run(J,K,ck,PRT,CLR,Q,Qn);
    fprintf(data_sdl,"%3d %3d %3d %3d %3d %3d %3d\n",J,K,ck,PRT,CLR,Q,Qn);
  }
}
#endif

#ifdef _NEG_D_FF_PC_
void main() {
  FILE *data=fopen("data","w");
  FILE *data_sdl=fopen("data.sdl","w");
  int iter=8800;
  WIRE D,ck,Q=0,Qn=VCC,PRT=VCC,CLR=VCC;
  NEG_D_FF_PC l;
  CLOCK ck0(500), ck2(42), ck3(1200), ck4(4400);
  fprintf(data,"D ck PRT CLR Q Qn");
  while(iter--) {
    ck0.run(iter,D);
    ck2.run(iter,ck);
    ck3.run(iter,PRT);
    ck4.run(iter,CLR);
    l.run(D,ck,Q,Qn,PRT,CLR);
    fprintf(data_sdl,"%3d %3d %3d %3d %3d %3d\n",D,ck,PRT,CLR,Q,Qn);
  }
}
#endif

#ifdef _PACO_
void main() {
  FILE *data=fopen("data","w");
  FILE *data_sdl=fopen("data.sdl","w");
  int iter=1000;
  WIRE D=0,Q=0,Qn=VCC,Dn=0,a=0,b=0,c=0,d=0,e=0,f=0;
  NEG_SR_FF l;
  NOT n,m0,m1,m2,m3,m4,m5;
  CLOCK ck(40);
  fprintf(data,"D Dn f Q Qn");
  while(iter--) {
    ck.run(iter,D);
    n.run(D,Dn);
    m0.run(D,a);
    m1.run(a,b);
    m2.run(b,c);
    m3.run(c,d);
    m4.run(d,e);
    m5.run(e,f);
    l.run(D,Dn,f,Q,Qn);
    fprintf(data_sdl,"%3d %3d %3d %3d %3d\n",D,Dn,F,Q,Qn);
  }
}
#endif

#ifdef _SR_FF_MS_
void main() {
  FILE *data=fopen("data","w");
  FILE *data_sdl=fopen("data.sdl","w");
  int iter=200;
  WIRE S=0,R=0,ck=0,Q=0,Qn=VCC;
  SR_FF_MS l;
  CLOCK ck0(31), ck1(47), ck2(17);
  fprintf(data,"S R ck Q Qn");
  while(iter--) {
    ck0.run(iter,S);
    ck1.run(iter,R);
    ck2.run(iter,ck);
    l.run(S,R,ck,Q,Qn);
    fprintf(data_sdl,"%3d %3d %3d %3d %3d\n",S,R,ck,Q,Qn);
  }
}
#endif

#ifdef _JK_FF_MS_
void main() {
  FILE *data=fopen("data","w");
  FILE *data_sdl=fopen("data.sdl","w");
  int iter=800;
  WIRE J,K,ck,Q=0,Qn;
  JK_FF_MS l;
  CLOCK ck0(91), ck1(147), ck2(7);
  fprintf(data,"J K ck Q Qn");
  while(iter--) {
    ck0.run(iter,J);
    ck1.run(iter,K);
    ck2.run(iter,ck);
    l.run(J,K,ck,Q,Qn);
    fprintf(data_sdl,"%3d %3d %3d %3d %3d\n",J,K,ck,Q,Qn);
  }
}
#endif

Comprobar si los cronogramas generados en las simulaciones son correctos.




2000-10-30