累算器

その1

8ビットの累算器です。 epが1のときのdataをqに足します。

file: sample14
topic11a.jpg(24862 byte)

論理譜

logicname yahoo15

entity main
input  reset;
input  ep;
input  data[8];

output q[8];

bitr   acc[8];


   if (reset)
      acc=0;
   else
      if (ep)
         acc=acc+data;
      else
         acc=acc;
      endif
   endif

   q=acc;

ende

entity sim
output reset;
output ep;
output data[8];
output q[8];

bitr   tc[8];

   part main(reset,ep,data,q)

   tc=tc+1;

   if (tc<5) reset=1; endif

   switch(tc)
      case 10: ep=1; data=1;
      case 12: ep=1; data=2;
      case 14: ep=1; data=3;
      case 16: ep=1; data=4;
      case 18: ep=1; data=5;
      case 20: ep=1; data=6;
      case 22: ep=1; data=7;
      case 24: ep=1; data=8;
      case 26: ep=1; data=9;
      case 28: ep=1; data=10;
   endswitch

ende

endlogic

その2

足したり引いたりできる累算器です。 pが0のときに足します、pが1のときに引きます。

file: sample15
topic11b.jpg(13337 byte)

論理譜

logicname yahoo16

entity main
input  reset;
input  ep;
input  data[8];
input  p;

output q[8];

bitr   acc[8];

   if (reset)
      acc=0;
   else
      if (ep)
         if (p)
            acc=acc-data;
         else
            acc=acc+data;
         endif
      else
         acc=acc;
      endif
   endif

   q=acc;

ende

entity sim
output reset;
output ep;
output data[8];
output q[8];
output p;

bitr   tc[8];

   part main(reset,ep,data,p,q)

   tc=tc+1;

   if (tc<5) reset=1; endif

   if ((tc>=10)&(tc<=28)) p=0; endif
   if ((tc>=30)&(tc<=48)) p=1; endif

   switch(tc)
      case 10: ep=1; data=1;
      case 12: ep=1; data=2;
      case 14: ep=1; data=3;
      case 16: ep=1; data=4;
      case 18: ep=1; data=5;
      case 20: ep=1; data=6;
      case 22: ep=1; data=7;
      case 24: ep=1; data=8;
      case 26: ep=1; data=9;
      case 28: ep=1; data=10;
   endswitch

   switch(tc)
      case 30: ep=1; data=1;
      case 32: ep=1; data=2;
      case 34: ep=1; data=3;
      case 36: ep=1; data=4;
      case 38: ep=1; data=5;
      case 40: ep=1; data=6;
      case 42: ep=1; data=7;
      case 44: ep=1; data=8;
      case 46: ep=1; data=9;
      case 48: ep=1; data=10;
   endswitch

ende

endlogic