home *** CD-ROM | disk | FTP | other *** search
- module shift40
- title 'barrel shifter for 32R16
- Pete Shreve DATA I/O Corp. Oct 13, 1984'
-
- US1 device 'P32R16';
-
- "Outputs
- QA0,QA1,QA2,QA3,QA4,QA5,QA6,QA7 pin 4,3,2,1,40,39,38,37;
- QB0,QB1,QB2,QB3,QB4,QB5,QB6,QB7 pin 24,23,22,21,20,19,18,17;
-
- "Inputs
- D0,D1,D2,D3,D4,D5,D6,D7 pin 6,7,8,9,11,12,13,14;
- D8,D9,D10,D11,D12,D13,D14,D15 pin 26,27,28,29,31,32,33,34;
-
- "Controls
- PLA,CA,OEA,PLB,CB,OEB,Vcc,Gnd pin 35,36,5,15,16,25,10,30;
-
- H,L,C,Z,X = 1, 0, .C., .Z., .X.;
-
- OutputA = [QA7,QA6,QA5,QA4,QA3,QA2,QA1,QA0];
- OutputB = [QB7,QB6,QB5,QB4,QB3,QB2,QB1,QB0];
- Input = [D7,D6,D5,D4,D3,D2,D1,D0];
- Sel = [D15,D14,D13];
-
- equations
-
- !OutputA := (Sel == 0) & ![D7,D6,D5,D4,D3,D2,D1,D0]
- # (Sel == 1) & ![D0,D7,D6,D5,D4,D3,D2,D1]
- # (Sel == 2) & ![D1,D0,D7,D6,D5,D4,D3,D2]
- # (Sel == 3) & ![D2,D1,D0,D7,D6,D5,D4,D3]
- # (Sel == 4) & ![D3,D2,D1,D0,D7,D6,D5,D4]
- # (Sel == 5) & ![D4,D3,D2,D1,D0,D7,D6,D5]
- # (Sel == 6) & ![D5,D4,D3,D2,D1,D0,D7,D6]
- # (Sel == 7) & ![D6,D5,D4,D3,D2,D1,D0,D7];
-
- !OutputB := (Sel == 0) & ![D7,D6,D5,D4,D3,D2,D1,D0]
- # (Sel == 1) & ![D0,D7,D6,D5,D4,D3,D2,D1]
- # (Sel == 2) & ![D1,D0,D7,D6,D5,D4,D3,D2]
- # (Sel == 3) & ![D2,D1,D0,D7,D6,D5,D4,D3]
- # (Sel == 4) & ![D3,D2,D1,D0,D7,D6,D5,D4]
- # (Sel == 5) & ![D4,D3,D2,D1,D0,D7,D6,D5]
- # (Sel == 6) & ![D5,D4,D3,D2,D1,D0,D7,D6]
- # (Sel == 7) & ![D6,D5,D4,D3,D2,D1,D0,D7];
-
- test_vectors
- ([CA,OEA,PLA, Sel, Input] -> OutputA)
- [ C, L, 1 , 0, ^b10000000] -> ^b10000000; " Shift 0
- [ C, L, 1 , 1, ^b10000000] -> ^b01000000; " Shift 1
- [ C, L, 1 , 2, ^b10000000] -> ^b00100000; " Shift 2
- [ C, L, 1 , 3, ^b10000000] -> ^b00010000; " Shift 3
- [ C, L, 1 , 4, ^b10000000] -> ^b00001000; " Shift 4
- [ C, L, 1 , 5, ^b10000000] -> ^b00000100; " Shift 5
- [ C, L, 1 , 6, ^b10000000] -> ^b00000010; " Shift 6
- [ C, L, 1 , 7, ^b10000000] -> ^b00000001; " Shift 7
-
- [ C, L, 1 , 0, ^b01111111] -> ^b01111111; " Shift 0
- [ C, L, 1 , 1, ^b01111111] -> ^b10111111; " Shift 1
- [ C, L, 1 , 2, ^b01111111] -> ^b11011111; " Shift 2
- [ C, L, 1 , 3, ^b01111111] -> ^b11101111; " Shift 3
- [ C, L, 1 , 4, ^b01111111] -> ^b11110111; " Shift 4
- [ C, L, 1 , 5, ^b01111111] -> ^b11111011; " Shift 5
- [ C, L, 1 , 6, ^b01111111] -> ^b11111101; " Shift 6
- [ C, L, 1 , 7, ^b01111111] -> ^b11111110; " Shift 7
-
- [ C, L, 1 , 1, ^b00000001] -> ^b10000000; " Shift 1/Wrap
- [ C, L, 1 , 1, ^b11111110] -> ^b01111111; " Shift 1/Wrap
-
- [ C, H, 1 , 0, ^b00000000] -> Z ; " Test High Z
-
- test_vectors
- ([CB,OEB,PLB, Sel, Input] -> OutputB)
- [ C, L, 1 , 0, ^b10000000] -> ^b10000000; " Shift 0
- [ C, L, 1 , 1, ^b10000000] -> ^b01000000; " Shift 1
- [ C, L, 1 , 2, ^b10000000] -> ^b00100000; " Shift 2
- [ C, L, 1 , 3, ^b10000000] -> ^b00010000; " Shift 3
- [ C, L, 1 , 4, ^b10000000] -> ^b00001000; " Shift 4
- [ C, L, 1 , 5, ^b10000000] -> ^b00000100; " Shift 5
- [ C, L, 1 , 6, ^b10000000] -> ^b00000010; " Shift 6
- [ C, L, 1 , 7, ^b10000000] -> ^b00000001; " Shift 7
-
- [ C, L, 1 , 0, ^b01111111] -> ^b01111111; " Shift 0
- [ C, L, 1 , 1, ^b01111111] -> ^b10111111; " Shift 1
- [ C, L, 1 , 2, ^b01111111] -> ^b11011111; " Shift 2
- [ C, L, 1 , 3, ^b01111111] -> ^b11101111; " Shift 3
- [ C, L, 1 , 4, ^b01111111] -> ^b11110111; " Shift 4
- [ C, L, 1 , 5, ^b01111111] -> ^b11111011; " Shift 5
- [ C, L, 1 , 6, ^b01111111] -> ^b11111101; " Shift 6
- [ C, L, 1 , 7, ^b01111111] -> ^b11111110; " Shift 7
-
- [ C, L, 1 , 1, ^b00000001] -> ^b10000000; " Shift 1/Wrap
- [ C, L, 1 , 1, ^b11111110] -> ^b01111111; " Shift 1/Wrap
-
- [ C, H, 1 , 0, ^b00000000] -> Z ; " Test High Z
-
- end shift40
-