Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- MODULE AMMO_COUNTER
- TITLE 'LED Ammo Counter on GAL22v10'
- DECLARATIONS
- DIP1 pin 2;
- DIP2 pin 3;
- DIP3 pin 4;
- DIP4 pin 5;
- DIP5 pin 6;
- DIP = [DIP5, DIP4, DIP3, DIP2, DIP1];
- MAG pin 7;
- TRIGGER pin 8;
- " 7-segment common-cathode displays (active low outputs)
- " Right display (DIS1)
- DIS1a pin 23 istype 'com';
- DIS1b pin 22 istype 'com';
- DIS1c pin 21 istype 'com';
- DIS1d pin 20 istype 'com';
- DIS1e pin 19 istype 'com';
- DIS1f pin 18 istype 'com';
- DIS1g pin 17 istype 'com';
- DIS1 = [DIS1a, DIS1b, DIS1c, DIS1d, DIS1e, DIS1f, DIS1g];
- " Left display (DIS2)
- DIS2a pin 16 istype 'com';
- DIS2b pin 15 istype 'com';
- DIS2c pin 14 istype 'com';
- DIS2d pin 13 istype 'com';
- DIS2e pin 11 istype 'com';
- DIS2f pin 10 istype 'com';
- DIS2g pin 9 istype 'com';
- DIS2 = [DIS2a, DIS2b, DIS2c, DIS2d, DIS2e, DIS2f, DIS2g];
- " 7-segment alphanumeric display code declarations
- blank = [0,0,0,0,0,0,0]; " blank (all off)
- char0 = [1,1,1,1,1,1,0]; " 0
- char1 = [0,1,1,0,0,0,0]; " 1
- char2 = [1,1,0,1,1,0,1]; " 2
- char3 = [1,1,1,1,0,0,1]; " 3
- char4 = [0,1,1,0,0,1,1]; " 4
- char5 = [1,0,1,1,0,1,1]; " 5
- char6 = [1,0,1,1,1,1,1]; " 6
- char7 = [1,1,1,0,0,0,0]; " 7
- char8 = [1,1,1,1,1,1,1]; " 8
- char9 = [1,1,1,1,0,1,1]; " 9
- " Pin 24 to +V
- " Pin 12 to GND
- " User-defined variables follow
- " Note - these should all be declared as NODES (*not* PINS)
- Q0 node istype 'reg';
- Q1 node istype 'reg';
- Q2 node istype 'reg';
- Q3 node istype 'reg';
- Q4 node istype 'reg';
- Q5 node istype 'reg';
- Q = [Q5..Q0];
- " ======================= START OF EQUATIONS SECTION =================================
- "DIP switches for mag capacity
- TRUTH_TABLE ([DIP5,DIP4,DIP3,DIP2,DIP1]->[Q5,Q4,Q3,Q2,Q1,Q0])
- [ 0, 0, 0, 0, 1]->[ 1, 1, 1, 0, 1, 1]; "6
- [ 0, 0, 0, 1, d]->[ 0, 1, 0, 1, 1, 1]; "12
- [ 0, 0, 1, d, d]->[ 0, 1, 0, 0, 0, 1]; "18
- [ 0, 1, d, d, d]->[ 0, 0, 1, 0, 1, 0]; "25
- [ 1, d, d, d, d]->[ 0, 0, 0, 0, 0, 0]; "35
- EQUATIONS
- "Counter
- Q0 := !Q0;
- Q1 := (Q1 $ Q0);
- Q2 := (Q2 $ (Q1&Q0));
- Q3 := (Q3 $ (Q2&Q1&Q0));
- Q4 := (Q4 $ (Q3&Q2&Q1&Q0));
- Q5 := (Q5 $ (Q4&Q3&Q2&Q1&Q0));
- Q.AR := !MAG;
- Q.CLK = TRIGGER;
- "LED displays
- DIS1 = char0 & (([Q5..Q0] == 35)#([Q5..Q0] == 25)#([Q5..Q0] == 15)#([Q5..Q0] == 5));
- DIS1 = char1 & (([Q5..Q0] == 34)#([Q5..Q0] == 24)#([Q5..Q0] == 14)#([Q5..Q0] == 4));
- DIS1 = char2 & (([Q5..Q0] == 33)#([Q5..Q0] == 23)#([Q5..Q0] == 13)#([Q5..Q0] == 3));
- DIS1 = char3 & (([Q5..Q0] == 32)#([Q5..Q0] == 22)#([Q5..Q0] == 12)#([Q5..Q0] == 2));
- DIS1 = char4 & (([Q5..Q0] == 31)#([Q5..Q0] == 21)#([Q5..Q0] == 11)#([Q5..Q0] == 1));
- DIS1 = char5 & (([Q5..Q0] == 30)#([Q5..Q0] == 20)#([Q5..Q0] == 10)#([Q5..Q0] == 0));
- DIS1 = char6 & (([Q5..Q0] == 29)#([Q5..Q0] == 19)#([Q5..Q0] == 9));
- DIS1 = char7 & (([Q5..Q0] == 28)#([Q5..Q0] == 18)#([Q5..Q0] == 8));
- DIS1 = char8 & (([Q5..Q0] == 27)#([Q5..Q0] == 17)#([Q5..Q0] == 7));
- DIS1 = char9 & (([Q5..Q0] == 26)#([Q5..Q0] == 16)#([Q5..Q0] == 6));
- DIS1 = char0 & (([Q5..Q0] == 36)#([Q5..Q0] == 37)#([Q5..Q0] == 15)#([Q5..Q0] == 38)#([Q5..Q0] == 39)#([Q5..Q0] == 40)); "5 cycle buffer for empty
- DIS2 = char0 & (([Q5..Q0] == 36)#([Q5..Q0] == 37)#([Q5..Q0] == 15)#([Q5..Q0] == 38)#([Q5..Q0] == 39)#([Q5..Q0] == 40)); "5 cycle buffer for empty
- DIS2 = char0 & (([Q5..Q0] == 26)#([Q5..Q0] == 27)#([Q5..Q0] == 28)#([Q5..Q0] == 29)#([Q5..Q0] == 30)#([Q5..Q0] == 31)#([Q5..Q0] == 32)#([Q5..Q0] == 33)#([Q5..Q0] == 34)#([Q5..Q0] == 35));
- DIS2 = char0 & (([Q5..Q0] == 26)#([Q5..Q0] == 27)#([Q5..Q0] == 28)#([Q5..Q0] == 29)#([Q5..Q0] == 30)#([Q5..Q0] == 31)#([Q5..Q0] == 32)#([Q5..Q0] == 33)#([Q5..Q0] == 34)#([Q5..Q0] == 35));
- DIS2 = char1 & (([Q5..Q0] == 16)#([Q5..Q0] == 17)#([Q5..Q0] == 18)#([Q5..Q0] == 19)#([Q5..Q0] == 20)#([Q5..Q0] == 21)#([Q5..Q0] == 22)#([Q5..Q0] == 23)#([Q5..Q0] == 24)#([Q5..Q0] == 25));
- DIS2 = char2 & (([Q5..Q0] == 6)# ([Q5..Q0] == 7)#([Q5..Q0] == 8)#([Q5..Q0] == 9)#([Q5..Q0] == 10)#([Q5..Q0] == 11)#([Q5..Q0] == 12)#([Q5..Q0] == 13)#([Q5..Q0] == 14)#([Q5..Q0] == 15));
- DIS2 = char3 & (([Q5..Q0] == 0)# ([Q5..Q0] == 1)#([Q5..Q0] == 2)#([Q5..Q0] == 3)#([Q5..Q0] == 4)#([Q5..Q0] == 5));
- END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement