orestis1996 Δημοσ. 1 Νοεμβρίου 2015 Δημοσ. 1 Νοεμβρίου 2015 (επεξεργασμένο) Εχω ενα μαθημα στο πανεπιστημιο το μαθημα της λογικης σχεδιασης οπου κανουμε προσομοιωση κυκλωματων με το προγραμμα synapitcad ,το προβλημα ειναι οτι κανουμε μονο θεωρια κ στο εργαστηριο δεν μας εχουν δειξει τιποτα για το synapitcad μονο φαιρνουμε εργασιες που μας βαζουν κ οτι γινει. -Ελεγχος ισοδυναμιας Ζητουμενο της ασκησης ειναι να ελεγχθει μεσω προσομοιωσης ποιες απο τις ακολουθες συναρτησεις ειναι ισοδυναμες. f1(a,b,c,d) = ab'+ba' f2(a,b,c,d) = (ab+a'b')' f3(a,b,c,d) = (a+c')' f4(a,b,c,d) = a'c σχεδιασα ενα κυκλωμα για καθε συναρτηση ,στη συνεχεια εκανα αποτυπωση του κυκλωματος με γλωσσα HDL ,τελος κανουμε μοναδα δοκιμης κ βαζουμε τιμες στο κυκλωμα, τα εκανα compile τα ετρεξα κ μου εβγαλε αυτο που βλεπετε για να δω αν οι συναρτησεις ειναι ισες θα δω αν η εξοδοι του κυκλωματος ειναι ιδιες,δηλαδη εχουν τις ιδιες κυματομορφες με τιμες 0 κ 1 τις καταλληλες χρονικες στιγμες,το προβλημα μου ειναι οτι το αποτελεσμα της προσομοιωσης ,δε το καταλαβαινω πολυ καλα,οποιος ξερει κατι ας βοηθησει το αποτελεσμα της εξοδου(test1.out) για τη πρωτη συναρτηση το καταλαβαινω δεν εχω προβλημα,με βαση το πινακα αληθειας που εκανα ,μου εβγαζε σωστες τις κυματομορφες .Τις υπολοιπες εξοδους δεν καταλαβαινω η test2.out δεν θα επρεπε να βγαζει μονο τιμη 0 ,αφου στα 40 ns γινεται 1 a = 0 b = 1 συναρτηση θα επρεπε να βγαζει 1,στο test3.out γιατι ειναι σκιασμενη η κυματομορφη,το test4.out δεν θα επρεπε να γινει μια φορα 1 γιατι ειναι μονο 0. Επεξ/σία 1 Νοεμβρίου 2015 από orestis1996
orestis1996 Δημοσ. 1 Νοεμβρίου 2015 Μέλος Δημοσ. 1 Νοεμβρίου 2015 βρηκα κατι γιατι ειναι η κυματομορφη γκρι "The gray region shows the uncertainty region for when the data may or may not be valid. These uncertainty regions grow in width as a logic value passes through different stages of a circuit." δεν το πολυ καταλαβα
Dr.Fuzzy Δημοσ. 1 Νοεμβρίου 2015 Δημοσ. 1 Νοεμβρίου 2015 Σε τι γλώσσα HDL το έχεις υλοποιήσει το κύκλωμα; To gray region απλά σημαίνει ότι είναι don't care ή έχεις πολλαπλούς οδηγούς πάνω στο συγκεκριμένο σήμα. Όπως και να έχει κάνε post τον κώδικα σου για να δούμε τι πάει λάθος.
orestis1996 Δημοσ. 1 Νοεμβρίου 2015 Μέλος Δημοσ. 1 Νοεμβρίου 2015 Σε τι γλώσσα HDL το έχεις υλοποιήσει το κύκλωμα; To gray region απλά σημαίνει ότι είναι don't care ή έχεις πολλαπλούς οδηγούς πάνω στο συγκεκριμένο σήμα. Όπως και να έχει κάνε post τον κώδικα σου για να δούμε τι πάει λάθος. Χρησιμοποιω HDL Verilog Για τη συναρτηση f2(a,b,c,d) = (ab+a'b')' module second_circuit(the_output,a,b,c,d); input a,b,c,d; output the_output; wire wire_3,wire_4,wire_not_b,wire_not_a,wire_or; not gate_not_1(wire_not_a,a); and gate_and_1(wire_3,wire_not_b,a); not gate_not_2(wire_not_b,; and gate_and_2(wire_4,b,wire_not_a); endmodule module test2(); reg first_in, second_in, third_in, fourth_in; wire out; second_circuit circuit(out, first_in, second_in, third_in, fourth_in); initial begin first_in=0; second_in=0; third_in=0; fourth_in=0; #10 first_in=0; second_in=0; third_in=0; fourth_in=1; #10 first_in=0; second_in=0; third_in=1; fourth_in=0; #10 first_in=0; second_in=0; third_in=1; fourth_in=1; #10 first_in=0; second_in=1; third_in=0; fourth_in=0; #10 first_in=0; second_in=1; third_in=0; fourth_in=1; #10 first_in=0; second_in=1; third_in=1; fourth_in=0; #10 first_in=0; second_in=1; third_in=1; fourth_in=1; #10 first_in=1; second_in=0; third_in=0; fourth_in=0; #10 first_in=1; second_in=0; third_in=0; fourth_in=1; #10 first_in=1; second_in=0; third_in=1; fourth_in=0; #10 first_in=1; second_in=0; third_in=1; fourth_in=1; #10 first_in=1; second_in=1; third_in=0; fourth_in=0; #10 first_in=1; second_in=1; third_in=0; fourth_in=1; #10 first_in=1; second_in=1; third_in=1; fourth_in=0; #10 first_in=1; second_in=1; third_in=1; fourth_in=1; #10 $finish; end endmodule Για τη συναρτηση f3(a,b,c,d) = (a+c')' module third_circuit(the_output,a,b,c,d); input a,b,c,d; output the_output; wire wire_not,wire_or; not gate_not(wire_not,c); or gate_or(wire_or,a,wire_not_1); not gate_not(the_output,wire_or); endmodule module test3(); reg first_in, second_in, third_in, fourth_in; wire out; third_circuit circuit(out, first_in, second_in, third_in, fourth_in); initial begin first_in=0; second_in=0; third_in=0; fourth_in=0; #10 first_in=0; second_in=0; third_in=0; fourth_in=1; #10 first_in=0; second_in=0; third_in=1; fourth_in=0; #10 first_in=0; second_in=0; third_in=1; fourth_in=1; #10 first_in=0; second_in=1; third_in=0; fourth_in=0; #10 first_in=0; second_in=1; third_in=0; fourth_in=1; #10 first_in=0; second_in=1; third_in=1; fourth_in=0; #10 first_in=0; second_in=1; third_in=1; fourth_in=1; #10 first_in=1; second_in=0; third_in=0; fourth_in=0; #10 first_in=1; second_in=0; third_in=0; fourth_in=1; #10 first_in=1; second_in=0; third_in=1; fourth_in=0; #10 first_in=1; second_in=0; third_in=1; fourth_in=1; #10 first_in=1; second_in=1; third_in=0; fourth_in=0; #10 first_in=1; second_in=1; third_in=0; fourth_in=1; #10 first_in=1; second_in=1; third_in=1; fourth_in=0; #10 first_in=1; second_in=1; third_in=1; fourth_in=1; #10 $finish; end endmodule Για τη συναρτηση f4(a,b,c,d) = a'c module fourth_circuit(the_output,a,b,c,d); input a,b,c,d; output the_output; wire wire_not,wire_and; not gate_not(wire_not,a); and gate_and(wire_and,c,wire_not); endmodule module test4(); reg first_in, second_in, third_in, fourth_in; wire out; fourth_circuit circuit(out, first_in, second_in, third_in, fourth_in); initial begin first_in=0; second_in=0; third_in=0; fourth_in=0; #10 first_in=0; second_in=0; third_in=0; fourth_in=1; #10 first_in=0; second_in=0; third_in=1; fourth_in=0; #10 first_in=0; second_in=0; third_in=1; fourth_in=1; #10 first_in=0; second_in=1; third_in=0; fourth_in=0; #10 first_in=0; second_in=1; third_in=0; fourth_in=1; #10 first_in=0; second_in=1; third_in=1; fourth_in=0; #10 first_in=0; second_in=1; third_in=1; fourth_in=1; #10 first_in=1; second_in=0; third_in=0; fourth_in=0; #10 first_in=1; second_in=0; third_in=0; fourth_in=1; #10 first_in=1; second_in=0; third_in=1; fourth_in=0; #10 first_in=1; second_in=0; third_in=1; fourth_in=1; #10 first_in=1; second_in=1; third_in=0; fourth_in=0; #10 first_in=1; second_in=1; third_in=0; fourth_in=1; #10 first_in=1; second_in=1; third_in=1; fourth_in=0; #10 first_in=1; second_in=1; third_in=1; fourth_in=1; #10 $finish; end endmodule Για τη δευτερη συναρτηση f2(a,b,c,d) = (ab+a'b')' για το ab εφτιαξα μια πυλη AND για τα a'b' εφτιαξα μια πυλη AND οπου εχει ως εισοδους δυο πυλες NOT ,οποτε φτιαχνουμε μια πυλη NOT για το a μια πυλη NOT για το b ab+a'b' εβαλα μια OR που εχεις ως εισοδους τις δυο πυλες AND τελος επειδη εχει το ' ,(ab+a'b')' εβαλα μια NOT Για τη συναρτηση f3(a,b,c,d) = (a+c')' Για το a+c' φτιαχνω μια πυλη OR οπου εχεις ως εισοδου το a και το c' (που ειναι μια πυλη NOT με εισοδο c) Για το (a+c')' φτιανω μια πυλη NOT με εισοδο το OR Για τη συναρτηση f4(a,b,c,d) = a'c για το a'c εκανα μια πυλη AND με εισοδους a' ,c . το a' ειναι μια πυλη NOT με εισοδο a εχω σχεδιασει λαθος τα κυκλωματα με βαση τις συναρτησεις που δινονται?
Dr.Fuzzy Δημοσ. 1 Νοεμβρίου 2015 Δημοσ. 1 Νοεμβρίου 2015 wire wire_not,wire_or; ... not gate_not(wire_not,c); or gate_or(wire_or,a,wire_not_1); Στο third_circuit το wire_not_1 δεν το έχεις δηλώσει. Γιαυτό είναι undefined η έξοδος σου. Λογικά ο κώδικας σου δεν πρέπει να κάνει καν compile. Επίσης θα μπορούσες πολύ πιο έυκολα να υλοποιήσεις τις λογικές εξισώσεις σε μια ανάθεση με λογικούς τελεστές και όχι με περιγραφή σε επίπεδο πυλών. Πολύ συνοπτικά, ο σκοπός των γλωσσών περιγραφής υλικού δεν είναι να κάνουμε schematic drawing, αλλά να χρησιμοποιούμε τα επίπεδα αφαίρεσης που μας προσφέρουν προκειμένου να περιγράψουμε ένα κύκλωμα και να αφήσουμε το εργαλείο σύνθεσης να το υλοποιήσει.
orestis1996 Δημοσ. 1 Νοεμβρίου 2015 Μέλος Δημοσ. 1 Νοεμβρίου 2015 Στο third_circuit το wire_not_1 δεν το έχεις δηλώσει. Γιαυτό είναι undefined η έξοδος σου. Λογικά ο κώδικας σου δεν πρέπει να κάνει καν compile. Οντως εχεις δικιο δε το εχω δηλωσει ,οταν το εκανα compile γιατι δεν μου εβγαλε error? το δηλωσα το wire_not_1 εκανα compile το ετρεξα κ μου εβγαλε το ιδιο
Dr.Fuzzy Δημοσ. 1 Νοεμβρίου 2015 Δημοσ. 1 Νοεμβρίου 2015 Πρέπει να σου έβγαλε, ξανά κάνε compile και δες καλύτερα το log. Μάλλον όταν κάνεις simulation απλά χρησιμοποιείς παλιό compilation μέσα στη work σου.
orestis1996 Δημοσ. 1 Νοεμβρίου 2015 Μέλος Δημοσ. 1 Νοεμβρίου 2015 Επίσης θα μπορούσες πολύ πιο έυκολα να υλοποιήσεις τις λογικές εξισώσεις σε μια ανάθεση με λογικούς τελεστές και όχι με περιγραφή σε επίπεδο πυλών. Μου προτεινεις να κανω τις συναρτησεις με τις εκφρασεις bool? assign f1 = (ab'&&ba') δεν το εχω δοκιμασει αμα το κανω θα μου βγαλει το σωστο αποτελεσμα που θελω ή ειναι κατι αλλο Πρέπει να σου έβγαλε, ξανά κάνε compile και δες καλύτερα το log. Μάλλον όταν κάνεις simulation απλά χρησιμοποιείς παλιό compilation μέσα στη work σου. οχι στο παραθυρο Report - Messages Errors 0 και κατω κατω μου βγαζει simulation Good
Dr.Fuzzy Δημοσ. 1 Νοεμβρίου 2015 Δημοσ. 1 Νοεμβρίου 2015 σου λέω ότι είναι προτιμότερο να γράφεις dataflow περιγραφή παρά gate-level, διότι στη δεύτερη περίπτωση το εργαλείο σύνθεσης δεν μπορεί να κάνει σωστό optimization στο κύκλωμα σου. Για να σου βγάλει σωστό αποτέλεσμα θα πρέπει ανεξαρτήτως πως θα το περιγράψεις να είναι σωστό το μοντέλο σου. Καθαρά φιλικά καλό είναι να το πιάσεις απο την αρχή διότι έχεις ελλείψεις σε βασικές έννοιες.
orestis1996 Δημοσ. 1 Νοεμβρίου 2015 Μέλος Δημοσ. 1 Νοεμβρίου 2015 σου λέω ότι είναι προτιμότερο να γράφεις dataflow περιγραφή παρά gate-level, διότι στη δεύτερη περίπτωση το εργαλείο σύνθεσης δεν μπορεί να κάνει σωστό optimization στο κύκλωμα σου. Για να σου βγάλει σωστό αποτέλεσμα θα πρέπει ανεξαρτήτως πως θα το περιγράψεις να είναι σωστό το μοντέλο σου. Καθαρά φιλικά καλό είναι να το πιάσεις απο την αρχή διότι έχεις ελλείψεις σε βασικές έννοιες. Στις διαλεξεις κανουμε λιγο θεωρια κ κανουμε κυριως ασκησεις (συμπληρωμα,πινακα αληθειας,ελαχιστοποιηση κυκλωματος),δεν μας λενε πραγματα παραπανω λεπτομεριες πανω στα κυκλωματα για να μαθουμε πως λειτουργουν ,κανουμε εργαστηριο οπου δινουμε τις ασκησεις που εχουμε φτιαξει κ αυτο τιποτα αλλο .Εχω κενα οχι γιατι δεν καθησα να διαβασω ουτε γιατι ειπαν κατι κ δε το επιασα αλλα επειδη δεν γινεται το μαθημα οπως πρεπει. Στις διαλεξεις κανουμε λιγο θεωρια κ κανουμε κυριως ασκησεις (συμπληρωμα,πινακα αληθειας,ελαχιστοποιηση κυκλωματος),δεν μας λενε πραγματα παραπανω λεπτομεριες πανω στα κυκλωματα για να μαθουμε πως λειτουργουν ,κανουμε εργαστηριο οπου δινουμε τις ασκησεις που εχουμε φτιαξει κ αυτο τιποτα αλλο .Εχω κενα οχι γιατι δεν καθησα να διαβασω ουτε γιατι ειπαν κατι κ δε το επιασα αλλα επειδη δεν γινεται το μαθημα οπως πρεπει. κ τι κανουν οι περισσοτεροι που παιρνουν το μαθημα αυτο,παιρνουν τις ασκησεις ετοιμες απο καποιον που ειναι μεγαλυτερο ετος κ τις εχει λυσει
Dr.Fuzzy Δημοσ. 1 Νοεμβρίου 2015 Δημοσ. 1 Νοεμβρίου 2015 Έστω ότι είναι έτσι, είναι όμως στο χέρι σου να διαβάσεις ένα απο τα πολλά βιβλία που υπάρχουν, παρουσιάσεις απο άλλα πανεπιστήμια, κλπ, κλπ που μπορείς να βρείς εύκολα με μια αναζήτηση στο google.
ThanosSW Δημοσ. 4 Ιανουαρίου 2016 Δημοσ. 4 Ιανουαρίου 2016 Φιλαρακι να σε ρωτησω Ετσι απο περιεργια, σε ποιο πανεπιστημιο πηγαινεις?
M2000 Δημοσ. 4 Ιανουαρίου 2016 Δημοσ. 4 Ιανουαρίου 2016 Είμαι άσχετος με το συγκεκριμένο πρόγραμμα αλλά μια ιδέα για αυτό: (a+c')' αν τα ' είναι Not (ή invert για τις πύλες), τότε το C' είναι η αρνητική είσοδος..υπάρχουν τέτοιες στις πύλες...ενώ το ( )' είναι αρνητική έξοδος. Η διαφορά είναι στο χρόνο μεταξύ εισόδου και εξόδου. τα a, c' αν έρχονται σε χρόνο Α τότε το ( )' ΄βγαίνει σε χρόνο Α2 όπου το Α2-Α είναι ο χρόνος που από την είσοδο έχουμε έξοδο! Μήπως λοιπόν η γλώσσα παραπάνω έχει τρόπο να δώσει εισόδους αρνητικές (negate) και εξόδους επίσης. Διότι αν είναι έτσι τότε τα a, b και c πρέπει να έχουν δυο εξόδους, μια κανονική και μια αντεστραμμένη, άρα λέμε για 3 πηγές με έξι συνολικά εξόδους που πηγαίνουν σε τέσσερα κυκλώματα; Προφανώς λοιπόν για να δούμε την ισοδυναμία πρέπει να ξεχωρίσουμε τα κυκλώματα με τις πηγές...τα δυο πρώτα από τα δυο δεύτερα. Το πρώτο με το τελευταίο δεν έχουν ίδιες πηγές..άρα τι ισοδυναμία να δω; Τα f3 με f4 είναι ισοδύναμα! Απλά στο f3 κοιτάμε την αντεστραμμένη έξοδο. Το ίδιο και τα f1 με f2.
Dr.Fuzzy Δημοσ. 11 Ιανουαρίου 2016 Δημοσ. 11 Ιανουαρίου 2016 Φιλαρακι να σε ρωτησω Ετσι απο περιεργια, σε ποιο πανεπιστημιο πηγαινεις? ..."πηγαίνω" αλλά ως καθηγητής όχι ως φοιτητής. 1
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα