Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

ΑΝΑΠΤΥΞΗ ΛΟΓΙΣΜΙΚΟΥ ΓΙΑ ΤΗΝ ΑΠΛΟΠΟΙΗΣΗ ΛΟΓΙΚΩΝ ΣΥΝΑΡΤΗΣΕΩΝ ΜΕ ΤΗ ΧΡΗΣΗ ΤΗΣ ΜΕΘΟΔΟΥ QUINE-MCCLUSKEY. Πτυχιακή Εργασία Τσικρίκης Ανδρέας (759) Επιβλέπων:

Παρόμοιες παρουσιάσεις


Παρουσίαση με θέμα: "ΑΝΑΠΤΥΞΗ ΛΟΓΙΣΜΙΚΟΥ ΓΙΑ ΤΗΝ ΑΠΛΟΠΟΙΗΣΗ ΛΟΓΙΚΩΝ ΣΥΝΑΡΤΗΣΕΩΝ ΜΕ ΤΗ ΧΡΗΣΗ ΤΗΣ ΜΕΘΟΔΟΥ QUINE-MCCLUSKEY. Πτυχιακή Εργασία Τσικρίκης Ανδρέας (759) Επιβλέπων:"— Μεταγράφημα παρουσίασης:

1 ΑΝΑΠΤΥΞΗ ΛΟΓΙΣΜΙΚΟΥ ΓΙΑ ΤΗΝ ΑΠΛΟΠΟΙΗΣΗ ΛΟΓΙΚΩΝ ΣΥΝΑΡΤΗΣΕΩΝ ΜΕ ΤΗ ΧΡΗΣΗ ΤΗΣ ΜΕΘΟΔΟΥ QUINE-MCCLUSKEY. Πτυχιακή Εργασία Τσικρίκης Ανδρέας (759) Επιβλέπων: Δρ. Μπαλουκτσής Αναστάσιος, Καθηγητής ΣΕΡΡΕΣ, ΙΟΥΝΙΟΣ 2009 ΜΕΡΟΣ 2 Ο

2 Η ΦΙΛΟΣΟΦΙΑ ΤΟΥ ΠΡΟΓΡΑΜΜΑΤΟΣ ΟΙ ΠΙΝΑΚΕΣ mTable[32] T[76][7+1] Tnext[76][7] finalMinterms[76][7] m_T[76][32] m_Tnext[76][32] m_finalMinterms[76][32]

3 Η ΦΙΛΟΣΟΦΙΑ ΤΟΥ ΠΡΟΓΡΑΜΜΑΤΟΣ 0 0 1 1 2 5 3 18 4 29 5 6 … … 30 31 ΟΙ ΠΙΝΑΚΕΣ mTable[]

4 Η ΦΙΛΟΣΟΦΙΑ ΤΟΥ ΠΡΟΓΡΑΜΜΑΤΟΣ ΟΙ ΠΙΝΑΚΕΣ 012345678 0 00000 1 1 00001 1 2 00101 0 3 10010 0 4 11101 0 5 6 … ……………………… 74 75 T[][]

5 Η ΦΙΛΟΣΟΦΙΑ ΤΟΥ ΠΡΟΓΡΑΜΜΑΤΟΣ ΟΙ ΠΙΝΑΚΕΣ 01234567 0 00000 1 00001 2 00101 3 10010 4 11101 5 6 … …………………… 74 75 Tnext[][] finalMinterms[][]

6 Η ΦΙΛΟΣΟΦΙΑ ΤΟΥ ΠΡΟΓΡΑΜΜΑΤΟΣ ΟΙ ΠΙΝΑΚΕΣ – Ο πίνακας Τ[ ][ ] 012345678 0 00000 0 1 00001 0 2 00101 0 3 10010 0 4 11101 0 5 6 … ……………………… 74 75 Τρέχουσα Γραμμή Γραμμή Βήματος Σύγκριση της τρέχουσας γραμμής με την γραμμή Βήματος. Εάν προκύψει διαφορά μόνο σε 1 ψηφίο τότε αυτοί οι όροι συνδυάζονται και δημιουργούν ένα νέο όρο.

7 Η ΦΙΛΟΣΟΦΙΑ ΤΟΥ ΠΡΟΓΡΑΜΜΑΤΟΣ ΟΙ ΠΙΝΑΚΕΣ – Ο πίνακας Τ[ ][ ] 012345678 0 00000 1 1 00001 1 2 00101 0 3 10010 0 4 11101 0 5 6 … ……………………… 74 75 Τρέχουσα Γραμμή Γραμμή Βήματος Μετακίνηση της γραμμής Βήματος κατά μία θέση και επανέλεγχος. Η 8 η στήλη του πίνακα έχει ενημερωθεί.

8 Η ΦΙΛΟΣΟΦΙΑ ΤΟΥ ΠΡΟΓΡΑΜΜΑΤΟΣ ΟΙ ΠΙΝΑΚΕΣ – Ο πίνακας Τ[ ][ ] 012345678 0 00000 1 1 00001 1 2 00101 0 3 10010 0 4 11101 0 5 6 … ……………………… 74 75 Τρέχουσα Γραμμή Γραμμή Βήματος Μετακίνηση της γραμμής Βήματος κατά μία θέση και επανέλεγχος.

9 Η ΦΙΛΟΣΟΦΙΑ ΤΟΥ ΠΡΟΓΡΑΜΜΑΤΟΣ ΟΙ ΠΙΝΑΚΕΣ – Ο πίνακας Τ[ ][ ] 012345678 0 00000 1 1 00001 1 2 00101 0 3 10010 0 4 11101 0 5 -1 6 -1 … ……………………… 74 -1 75 -1 Τρέχουσα Γραμμή Γραμμή Βήματος Μετακίνηση της γραμμής Βήματος κατά μία θέση και επανέλεγχος.

10 Η ΦΙΛΟΣΟΦΙΑ ΤΟΥ ΠΡΟΓΡΑΜΜΑΤΟΣ ΟΙ ΠΙΝΑΚΕΣ – Ο πίνακας Τ[ ][ ] 012345678 0 00000 1 1 00001 1 2 00101 1 3 10010 0 4 11101 0 5 -1 6 -1 … ……………………… 74 -1 75 -1 Τρέχουσα Γραμμή Γραμμή Βήματος Μετακίνηση της Τρέχουσας γραμμής κατά μία θέση και τοποθέτηση της γραμμής Βήματος στην ακριβώς επόμενη θέση από την Τρέχουσα.

11 Η ΦΙΛΟΣΟΦΙΑ ΤΟΥ ΠΡΟΓΡΑΜΜΑΤΟΣ 01234567 0 00002 1 2 3 4 5 6 ……………………… 74 75 ΟΙ ΠΙΝΑΚΕΣ – Ο πίνακας Tnext[ ][ ] 012345678 0 00000 0 1 00001 0 2 00101 0 3 10010 0 4 11101 0 5 6 … ……………………… 7474 7575 newMinterm T[][] Tnext[][]

12 Η ΦΙΛΟΣΟΦΙΑ ΤΟΥ ΠΡΟΓΡΑΜΜΑΤΟΣ 01234567 0 00002 1 2 3 4 5 6 ……………………… 74 75 ΟΙ ΠΙΝΑΚΕΣ – Ο πίνακας Tnext[ ][ ] 012345678 0 00000 1 1 00001 1 2 00101 0 3 10010 0 4 11101 0 5 6 … ……………………… 7474 7575 newMinterm T[][]Tnext[][]

13 Η ΦΙΛΟΣΟΦΙΑ ΤΟΥ ΠΡΟΓΡΑΜΜΑΤΟΣ 01234567 0 00101 1 10010 2 11101 3 4 5 6 ……………………… 74 75 ΟΙ ΠΙΝΑΚΕΣ – Ο πίνακας Tnext[ ][ ] 012345678 0 00000 1 1 00001 1 2 00101 0 3 10010 0 4 11101 0 5 6 … ……………………… 7474 7575 firstMinterm T[][]finalMinterms[][]

14 Η ΦΙΛΟΣΟΦΙΑ ΤΟΥ ΠΡΟΓΡΑΜΜΑΤΟΣ ΟΙ ΠΙΝΑΚΕΣ m_ m_T[][] m_finalMinterms[][] m_Tnext[][] 012345 … 3031 0 -1-1… 1 … 2 … 3 … 4 … 5 … 6 … ……………………… 74 … 75 … Οι πίνακες m_ χρησιμοποιούνται για να αποθηκεύουν τους δεκαδικούς αριθμούς από τους οποίους προέκυψαν τα τελικά αποτελέσματα.

15 Η ΦΙΛΟΣΟΦΙΑ ΤΟΥ ΠΡΟΓΡΑΜΜΑΤΟΣ 012345 … 3031 0 0 -1… 1 1 … 2 2 … 3 8 … 4 10 … 5 … 6 … ……………………… 74 … 75 … ΟΙ ΠΙΝΑΚΕΣ m_ m_T[][] m_Tnext[][] 012345 … 3031 0 01 1… 1 210 … 2 … 3 … 4 … 5 … 6 … ……………………… 74 … 75 … 0,1 2,10

16 Η ΦΙΛΟΣΟΦΙΑ ΤΟΥ ΠΡΟΓΡΑΜΜΑΤΟΣ 012345 … 3031 0 01 1… 1 210 … 2 … 3 … 4 … 5 … 6 … ……………………… 74 … 75 … ΟΙ ΠΙΝΑΚΕΣ m_ m_T[][] m_Tnext[][] 0,1,2,10 012345 … 3031 0 012101… 1 … 2 … 3 … 4 … 5 … 6 … ……………………… 74 … 75 …

17 Η ΦΙΛΟΣΟΦΙΑ ΤΟΥ ΠΡΟΓΡΑΜΜΑΤΟΣ 012345 … 3031 0 01 1… 1 210 … 2 … 3 … 4 … 5 … 6 … ……………………… 74 … 75 … ΟΙ ΠΙΝΑΚΕΣ m_ - Προγραμματιστικά m_T[][] m_Tnext[][] 012345 … 3031 0 1… 1 … 2 … 3 … 4 … 5 … 6 … ……………………… 74 … 75 …

18 Η ΦΙΛΟΣΟΦΙΑ ΤΟΥ ΠΡΟΓΡΑΜΜΑΤΟΣ 012345 … 3031 0 01 1… 1 210 … 2 … 3 … 4 … 5 … 6 … ……………………… 74 … 75 … ΟΙ ΠΙΝΑΚΕΣ m_ - Προγραμματιστικά m_T[][] m_Tnext[][] 0 012345 … 3031 0 0 1… 1 … 2 … 3 … 4 … 5 … 6 … ……………………… 74 … 75 …

19 Η ΦΙΛΟΣΟΦΙΑ ΤΟΥ ΠΡΟΓΡΑΜΜΑΤΟΣ 012345 … 3031 0 01 1… 1 210 … 2 … 3 … 4 … 5 … 6 … ……………………… 74 … 75 … ΟΙ ΠΙΝΑΚΕΣ m_ - Προγραμματιστικά m_T[][] m_Tnext[][] 0,1 012345 … 3031 0 01 1… 1 … 2 … 3 … 4 … 5 … 6 … ……………………… 74 … 75 …

20 Η ΦΙΛΟΣΟΦΙΑ ΤΟΥ ΠΡΟΓΡΑΜΜΑΤΟΣ 012345 … 3031 0 01 1… 1 210 … 2 … 3 … 4 … 5 … 6 … ……………………… 74 … 75 … ΟΙ ΠΙΝΑΚΕΣ m_ - Προγραμματιστικά m_T[][] m_Tnext[][] 0,1 012345 … 3031 0 01 1… 1 … 2 … 3 … 4 … 5 … 6 … ……………………… 74 … 75 …

21 Η ΦΙΛΟΣΟΦΙΑ ΤΟΥ ΠΡΟΓΡΑΜΜΑΤΟΣ 012345 … 3031 0 01 1… 1 210 … 2 … 3 … 4 … 5 … 6 … ……………………… 74 … 75 … ΟΙ ΠΙΝΑΚΕΣ m_ - Προγραμματιστικά m_T[][] m_Tnext[][] 0,1,2 012345 … 3031 0 012 1… 1 … 2 … 3 … 4 … 5 … 6 … ……………………… 74 … 75 …

22 Η ΦΙΛΟΣΟΦΙΑ ΤΟΥ ΠΡΟΓΡΑΜΜΑΤΟΣ 012345 … 3031 0 01 1… 1 210 … 2 … 3 … 4 … 5 … 6 … ……………………… 74 … 75 … ΟΙ ΠΙΝΑΚΕΣ m_ - Προγραμματιστικά m_T[][] m_Tnext[][] 0,1,2,10 012345 … 3031 0 012101… 1 … 2 … 3 … 4 … 5 … 6 … ……………………… 74 … 75 …

23 Η ΒΕΛΤΙΣΤΗ ΛΥΣΗ 0 12345 … 3031 0 210 1… 1 89 … 2 810 … 3 57 … 4 67 … 5 15913 … 6 261822 … ……………………… 74 … 75 … m_finalMinterms[][] 1 0 1 Δύο buffers διατρέχουν τον πίνακα m_finalMinterms[][] αναζητώντας διπλές εγγραφές. Εάν βρεθούν διπλές εγγραφές για όλα τα στοιχεία ενός πρώτου συνεπαγωγού τότε αυτός διαγράφεται. Αυτό που προκύπτει μετά τις διαγραφές είναι η βέλτιστη λύση.

24 Η ΒΕΛΤΙΣΤΗ ΛΥΣΗ 0 12345 … 3031 0 210 1… 1 89 … 2 810 … 3 57 … 4 67 … 5 15913 … 6 261822 … ……………………… 74 … 75 … m_finalMinterms[][] 1 0 Το «2» βρέθηκε στην 6 η γραμμή. Αυτό σημαίνει πως ο όρος 2 του πρώτου συνεπαγωγού που εξετάζεται καλύπτεται και από κάποιον άλλο πρώτο συνεπαγωγό. Άρα το 1 που προστέθηκε κατά την επιλογή του «2» αφαιρείται. Γενικό Σύνολο = 0

25 Η ΒΕΛΤΙΣΤΗ ΛΥΣΗ 0 12345 … 3031 0 210 1… 1 89 … 2 810 … 3 57 … 4 67 … 5 15913 … 6 261822 … ……………………… 74 … 75 … m_finalMinterms[][] 2 -2 0 Ο αριθμός 10 βρέθηκε με διπλή κάλυψη. Άρα το 1 που προστέθηκε κατά την επιλογή του αφαιρείται, οπότε το αποτέλεσμα παραμένει 0.

26 Η ΒΕΛΤΙΣΤΗ ΛΥΣΗ 012 345 … 3031 089 1… 1810 … 257 … 367 … 415913 … 5 261822 … 6 … ……………………… 74 … 75 … m_finalMinterms[][] 0 0 0 Ο Πρώτος Συνεπαγωγός που αποτελούνταν από τους όρους 2 και 10, βρέθηκε πως έχει διπλή κάλυψη σε όλα τα στοιχεία του. Αυτό σημαίνει πως είναι περιττός για την τελική λύση, οπότε διαγράφεται. Έτσι όλοι οι υπόλοιποι συνεπαγωγοί «ανεβαίνουν» μια θέση πιο πάνω για να καλύψουν το κενό που άφησε η διαγραφή.

27 Ο ΚΩΔΙΚΑΣ ΥΛΟΠΟΙΗΣΗΣ ΤΟΥ ΑΛΓΟΡΙΘΜΟΥ while(newMinterm!=-1) //ΌΣΟ ΥΠΑΡΧΕΙ ΕΠΟΜΕΝΗ ΦΑΣΗ { phase++; //αυξάνεται ο μετρητής της φάσης change = 100; //ορίζεται το change τυχαία σε έναν αριθμό newMinterm = -1 ; //θεωρείται ότι δεν υπάρχουν νέοι συνδυασμοί ακόμη //ΈΝΑΡΞΗ ΤΟΥ ΒΡΟΓΧΟΥ ΤΗΣ ΤΡΕΧΟΥΣΑΣ ΓΡΑΜΜΗΣ for (i=0;i<minterms;i++) { step=i+1; //Αρχικοποίηση του βήματος μία θέση μετά την τρέχουσα //ΈΝΑΡΞΗ ΤΗΣ ΓΡΑΜΜΗΣ ΒΗΜΑΤΟΣ for (step; step<minterms; step++) { onlyone=0; //μηδενίζεται ο μετρητής διαφοράς ψηφίων //έναρξη του buffer ψηφίου for (j=0;j<vars;j++) { if (onlyone<2) //αν διαφέρουν σε λιγότερα από 2 ψηφία if (T[i][j]!=T[step][j]) { onlyone++; change=j; //κρατάει τη θέση απαλοιφής } } //ΤΕΛΟΣ του buffer ψηφίου

28 //ΕΛΕΓΧΟΣ ΔΙΑΦΟΡΑΣ ΣΕ 1 ΜΟΝΟ ΨΗΦΙΟ if(onlyone == 1) { newMinterm++; //αύξηση του μετρητή νέων όρων nextPos=0; //μηδενισμός του μετρητή της επόμενης θέσης για νέους όρους //ΔΗΜΙΟΥΡΓΙΑ ΑΠΛΟΠΟΙΗΜΕΝΟΥ ΟΡΟΥ for(j=0;j<vars;j++) { if (j==change) Tnext[newMinterm][j]=2; //τοποθέτηση του αριθμού «2» στη θέση της απαλοιφής if (j != change) Tnext[newMinterm][j]=T[i][j]; //ή αντιγραφή του όρου αν δεν είναι θέση απαλοιφής } //ΕΝΗΜΕΡΩΣΗ ΤΩΝ ΠΙΝΑΚΩΝ ΤΩΝ ΣΥΝΔΥΑΖΟΜΕΝΩΝ MINTERMS for (j=0;j<JOINTS;j++) if(m_T[i][j]!=-1) { m_Tnext[newMinterm][j]=m_T[i][j]; nextPos++; } Ο ΚΩΔΙΚΑΣ ΥΛΟΠΟΙΗΣΗΣ ΤΟΥ ΑΛΓΟΡΙΘΜΟΥ

29 //ΕΝΗΜΕΡΩΣΗ ΤΩΝ ΠΙΝΑΚΩΝ ΤΩΝ ΣΥΝΔΥΑΖΟΜΕΝΩΝ MINTERMS for (j=0;j<JOINTS;j++) if(m_T[step][j]!=-1) { m_Tnext[newMinterm][nextPos]=m_T[step][j]; nextPos++; } //Μαρκάρισμα των όρων που συνδυάστηκαν δίνοντας στο mFlag τους την τιμή 1 T[i][mFlag] = 1; T[step][mFlag] = 1; } //ΤΕΛΟΣ ΕΛΕΓΧΟΥ ΔΙΑΦΟΡΑΣ ΣΕ 1 ΜΟΝΟ ΨΗΦΙΟ //ΜΑΡΚΑΡΙΣΜΑ ΤΩΝ ΙΔΙΩΝ ΟΡΩΝ (ΕΑΝ ΗΤΑΝ ΙΔΙΟΙ) if(onlyone == 0) T[i][mFlag] = 1; } //ΤΕΛΟΣ Της ΑΛΛΑΓΗΣ ΤΗΣ ΓΡΑΜΜΗΣ ΒΗΜΑΤΟΣ } //ΤΕΛΟΣ ΤΟΥ ΒΡΟΓΧΟΥ ΤΗΣ ΤΡΕΧΟΥΣΑΣ ΓΡΑΜΜΗΣ Ο ΚΩΔΙΚΑΣ ΥΛΟΠΟΙΗΣΗΣ ΤΟΥ ΑΛΓΟΡΙΘΜΟΥ

30 //ΟΣΟΙ ΟΡΟΙ ΜΕΙΝΑΝ ΑΜΑΡΚΑΡΙΣΤΟΙ ΕΙΝΑΙ ΠΡΩΤΟΙ ΣΥΝΕΠΑΓΩΓΟΙ for (i=0; i<minterms; i++) if (T[i][mFlag] == 0 ) { for (j=0; j<vars; j++) finalMinterms[firstMinterm][j] = T[i][j]; //.. και γράφονται στον πίνακα των πρώτων συνεπαγωγών for (j=0; j<JOINTS; j++) m_finalMinterms[firstMinterm][j]=m_T[i][j]; //Γράφεται και η αντίστοιχη δεκαδική τους μορφή firstMinterm++ ; //προστίθεται ένας νέος πρώτος συνεπαγωγός } } //ΤΕΛΟΣ ΤΗΣ ΦΑΣΗΣ Ο ΚΩΔΙΚΑΣ ΥΛΟΠΟΙΗΣΗΣ ΤΟΥ ΑΛΓΟΡΙΘΜΟΥ


Κατέβασμα ppt "ΑΝΑΠΤΥΞΗ ΛΟΓΙΣΜΙΚΟΥ ΓΙΑ ΤΗΝ ΑΠΛΟΠΟΙΗΣΗ ΛΟΓΙΚΩΝ ΣΥΝΑΡΤΗΣΕΩΝ ΜΕ ΤΗ ΧΡΗΣΗ ΤΗΣ ΜΕΘΟΔΟΥ QUINE-MCCLUSKEY. Πτυχιακή Εργασία Τσικρίκης Ανδρέας (759) Επιβλέπων:"

Παρόμοιες παρουσιάσεις


Διαφημίσεις Google