home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 15 / 15.iso / s / s199 / 1.img / SHIFT40.ABL < prev    next >
Encoding:
Text File  |  1986-02-04  |  3.8 KB  |  96 lines

  1. module shift40
  2. title 'barrel shifter for 32R16
  3. Pete Shreve    DATA I/O  Corp.    Oct 13, 1984'
  4.  
  5.     US1    device  'P32R16';
  6.  
  7. "Outputs
  8.     QA0,QA1,QA2,QA3,QA4,QA5,QA6,QA7    pin 4,3,2,1,40,39,38,37;
  9.     QB0,QB1,QB2,QB3,QB4,QB5,QB6,QB7    pin 24,23,22,21,20,19,18,17;
  10.  
  11. "Inputs
  12.     D0,D1,D2,D3,D4,D5,D6,D7        pin 6,7,8,9,11,12,13,14;
  13.     D8,D9,D10,D11,D12,D13,D14,D15    pin 26,27,28,29,31,32,33,34;
  14.  
  15. "Controls
  16.     PLA,CA,OEA,PLB,CB,OEB,Vcc,Gnd    pin 35,36,5,15,16,25,10,30;
  17.  
  18.     H,L,C,Z,X        = 1, 0, .C., .Z., .X.;
  19.  
  20.     OutputA    = [QA7,QA6,QA5,QA4,QA3,QA2,QA1,QA0];
  21.     OutputB    = [QB7,QB6,QB5,QB4,QB3,QB2,QB1,QB0];
  22.     Input    = [D7,D6,D5,D4,D3,D2,D1,D0];
  23.     Sel    = [D15,D14,D13];
  24.  
  25. equations
  26.  
  27.     !OutputA :=      (Sel == 0) & ![D7,D6,D5,D4,D3,D2,D1,D0]
  28.             # (Sel == 1) & ![D0,D7,D6,D5,D4,D3,D2,D1]
  29.             # (Sel == 2) & ![D1,D0,D7,D6,D5,D4,D3,D2]
  30.             # (Sel == 3) & ![D2,D1,D0,D7,D6,D5,D4,D3]
  31.             # (Sel == 4) & ![D3,D2,D1,D0,D7,D6,D5,D4]
  32.             # (Sel == 5) & ![D4,D3,D2,D1,D0,D7,D6,D5]
  33.             # (Sel == 6) & ![D5,D4,D3,D2,D1,D0,D7,D6]
  34.             # (Sel == 7) & ![D6,D5,D4,D3,D2,D1,D0,D7];
  35.  
  36.     !OutputB :=      (Sel == 0) & ![D7,D6,D5,D4,D3,D2,D1,D0]
  37.             # (Sel == 1) & ![D0,D7,D6,D5,D4,D3,D2,D1]
  38.             # (Sel == 2) & ![D1,D0,D7,D6,D5,D4,D3,D2]
  39.             # (Sel == 3) & ![D2,D1,D0,D7,D6,D5,D4,D3]
  40.             # (Sel == 4) & ![D3,D2,D1,D0,D7,D6,D5,D4]
  41.             # (Sel == 5) & ![D4,D3,D2,D1,D0,D7,D6,D5]
  42.             # (Sel == 6) & ![D5,D4,D3,D2,D1,D0,D7,D6]
  43.             # (Sel == 7) & ![D6,D5,D4,D3,D2,D1,D0,D7];
  44.  
  45. test_vectors
  46.     ([CA,OEA,PLA,  Sel,   Input]    ->   OutputA)
  47.      [ C,  L, 1 ,   0, ^b10000000]  -> ^b10000000;    " Shift 0
  48.      [ C,  L, 1 ,   1, ^b10000000]  -> ^b01000000;    " Shift 1
  49.      [ C,  L, 1 ,   2, ^b10000000]  -> ^b00100000;    " Shift 2
  50.      [ C,  L, 1 ,   3, ^b10000000]  -> ^b00010000;    " Shift 3
  51.      [ C,  L, 1 ,   4, ^b10000000]  -> ^b00001000;    " Shift 4
  52.      [ C,  L, 1 ,   5, ^b10000000]  -> ^b00000100;    " Shift 5
  53.      [ C,  L, 1 ,   6, ^b10000000]  -> ^b00000010;    " Shift 6
  54.      [ C,  L, 1 ,   7, ^b10000000]  -> ^b00000001;    " Shift 7
  55.  
  56.      [ C,  L, 1 ,   0, ^b01111111]  -> ^b01111111;    " Shift 0
  57.      [ C,  L, 1 ,   1, ^b01111111]  -> ^b10111111;    " Shift 1
  58.      [ C,  L, 1 ,   2, ^b01111111]  -> ^b11011111;    " Shift 2
  59.      [ C,  L, 1 ,   3, ^b01111111]  -> ^b11101111;    " Shift 3
  60.      [ C,  L, 1 ,   4, ^b01111111]  -> ^b11110111;    " Shift 4
  61.      [ C,  L, 1 ,   5, ^b01111111]  -> ^b11111011;    " Shift 5
  62.      [ C,  L, 1 ,   6, ^b01111111]  -> ^b11111101;    " Shift 6
  63.      [ C,  L, 1 ,   7, ^b01111111]  -> ^b11111110;    " Shift 7
  64.  
  65.      [ C,  L, 1 ,   1, ^b00000001]  -> ^b10000000;    " Shift 1/Wrap
  66.      [ C,  L, 1 ,   1, ^b11111110]  -> ^b01111111;    " Shift 1/Wrap
  67.  
  68.      [ C,  H, 1 ,   0, ^b00000000]  ->      Z    ; " Test High Z
  69.  
  70. test_vectors
  71.     ([CB,OEB,PLB,  Sel,   Input]    ->   OutputB)
  72.      [ C,  L, 1 ,   0, ^b10000000]  -> ^b10000000;    " Shift 0
  73.      [ C,  L, 1 ,   1, ^b10000000]  -> ^b01000000;    " Shift 1
  74.      [ C,  L, 1 ,   2, ^b10000000]  -> ^b00100000;    " Shift 2
  75.      [ C,  L, 1 ,   3, ^b10000000]  -> ^b00010000;    " Shift 3
  76.      [ C,  L, 1 ,   4, ^b10000000]  -> ^b00001000;    " Shift 4
  77.      [ C,  L, 1 ,   5, ^b10000000]  -> ^b00000100;    " Shift 5
  78.      [ C,  L, 1 ,   6, ^b10000000]  -> ^b00000010;    " Shift 6
  79.      [ C,  L, 1 ,   7, ^b10000000]  -> ^b00000001;    " Shift 7
  80.  
  81.      [ C,  L, 1 ,   0, ^b01111111]  -> ^b01111111;    " Shift 0
  82.      [ C,  L, 1 ,   1, ^b01111111]  -> ^b10111111;    " Shift 1
  83.      [ C,  L, 1 ,   2, ^b01111111]  -> ^b11011111;    " Shift 2
  84.      [ C,  L, 1 ,   3, ^b01111111]  -> ^b11101111;    " Shift 3
  85.      [ C,  L, 1 ,   4, ^b01111111]  -> ^b11110111;    " Shift 4
  86.      [ C,  L, 1 ,   5, ^b01111111]  -> ^b11111011;    " Shift 5
  87.      [ C,  L, 1 ,   6, ^b01111111]  -> ^b11111101;    " Shift 6
  88.      [ C,  L, 1 ,   7, ^b01111111]  -> ^b11111110;    " Shift 7
  89.  
  90.      [ C,  L, 1 ,   1, ^b00000001]  -> ^b10000000;    " Shift 1/Wrap
  91.      [ C,  L, 1 ,   1, ^b11111110]  -> ^b01111111;    " Shift 1/Wrap
  92.  
  93.      [ C,  H, 1 ,   0, ^b00000000]  ->      Z    ; " Test High Z
  94.  
  95. end shift40
  96.