Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- MODULE Prak5_2
- DECLARATIONS
- "INPUTS
- clock pin 11;
- read pin 21;
- write pin 9;
- s1D, s1C, s1B, s1A pin 36, 39, 37, 38;
- s2D, s2C, s2B, s2A pin 41, 43, 40, 42;
- " OUTPUTS
- // 7-Segment Anzeige fuer die Zehnerstelle.
- zA, zB, zC, zD, zE, zF, zG pin 2..8 istype 'com';
- // 7-Segment Anzeige fuer die Einerstelle.
- eA, eB, eC, eD, eE, eF, eG pin 14..20 istype 'com';
- " NODES
- q3..q0 node istype 'reg'; // Multiplikant
- q7..q4 node istype 'reg'; // Multiplikator
- q12..q8 node istype 'reg'; // Zwischensumme
- q16..q13 node istype 'reg'; // Teilergebnis
- q19..q17 node istype 'reg'; // Rechenschritt Counter
- q27..q20 node istype 'reg'; // Anzeige
- " SETS
- s1 = [0, s1D, s1C, s1B, s1A];
- s2 = [0, s2D, s2C, s2B, s2A];
- multiplikant = [0, q3..q0];
- multiplikator = [0, q7..q4];
- zwischensumme = [q12..q8];
- teilergebnis = [q16..q13];
- rechenschritt = [q19..q17];
- anzeige = [q27..q20];
- anzeigeLinks = [q27..q24];
- anzeigeRechts = [q23..q20];
- EQUATIONS
- multiplikant.clk = clock;
- multiplikator.clk = clock;
- zwischensumme.clk = clock;
- teilergebnis.clk = clock;
- rechenschritt.clk = clock;
- anzeige.clk = clock;
- anzeige := 0;
- when (read) then {
- multiplikant := s1;
- multiplikator := s2;
- zwischensumme := 0;
- teilergebnis := 0;
- rechenschritt := 4;
- } else when (rechenschritt != 0) {
- rechenschritt := rechenschritt - 1;
- when (q4 == 1) then {
- zwischensumme := zwischensumme + multiplikant;
- } else {
- zwischensumme := zwischensumme;
- }
- }
- TRUTH_TABLE
- (anzeigeRechts -> [eA, eB, eC, eD, eE, eF, eG])
- 0 -> [1, 1, 1, 1, 1, 1, 0];
- 1 -> [0, 1, 1, 0, 0, 0, 0];
- 2 -> [1, 1, 0, 1, 1, 0, 1];
- 3 -> [1, 1, 1, 1, 0, 0, 1];
- 4 -> [0, 1, 1, 0, 0, 1, 1];
- 5 -> [1, 0, 1, 1, 0, 1, 1];
- 6 -> [1, 0, 1, 1, 1, 1, 1];
- 7 -> [1, 1, 1, 0, 0, 0, 0];
- 8 -> [1, 1, 1, 1, 1, 1, 1];
- 9 -> [1, 1, 1, 1, 0, 1, 1];
- 10 -> [0, 1, 1, 1, 1, 1, 1];
- 11 -> [0, 0, 1, 1, 1, 1, 1];
- 12 -> [1, 0, 0, 1, 1, 1, 0];
- 13 -> [0, 1, 1, 1, 1, 0, 1];
- 14 -> [1, 0, 0, 1, 1, 1, 1];
- 15 -> [1, 0, 0, 0, 1, 1, 1];
- TRUTH_TABLE
- (anzeigeLinks -> [zA, zB, zC, zD, zE, zF, zG])
- 0 -> [1, 1, 1, 1, 1, 1, 0];
- 1 -> [0, 1, 1, 0, 0, 0, 0];
- 2 -> [1, 1, 0, 1, 1, 0, 1];
- 3 -> [1, 1, 1, 1, 0, 0, 1];
- 4 -> [0, 1, 1, 0, 0, 1, 1];
- 5 -> [1, 0, 1, 1, 0, 1, 1];
- 6 -> [1, 0, 1, 1, 1, 1, 1];
- 7 -> [1, 1, 1, 0, 0, 0, 0];
- 8 -> [1, 1, 1, 1, 1, 1, 1];
- 9 -> [1, 1, 1, 1, 0, 1, 1];
- 10 -> [0, 1, 1, 1, 1, 1, 1];
- 11 -> [0, 0, 1, 1, 1, 1, 1];
- 12 -> [1, 0, 0, 1, 1, 1, 0];
- 13 -> [0, 1, 1, 1, 1, 0, 1];
- 14 -> [1, 0, 0, 1, 1, 1, 1];
- END
Add Comment
Please, Sign In to add comment