Δημοκρίτειο Πανεπιστήμιο Θράκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Γ. Δημητρακόπουλος Συστήματα VLSI Πρόοδος Άνοιξη 2018 Άσκηση 1 Όλο το κύκλωμα τροφοδοτείται με το ίδιο ρολόι και το skew μεταξύ8 των καταχωρητών είναι αμελητέο. Οι καθυστερήσεις που σχετίζονται με τους καταχωρητές του κυκλώματος είναι και αυτές αμελητέες. Η καθυστέρηση των μονάδων συνδυαστικής λογικής που αναγράφονται μέσα στους κύκλους αναφέρονται στην καθυστέρηση διάδοσης και μετριούνται σε nanosecond. α) Ποια είναι η ελάχιστη περίοδος του ρολογιού8 με την οποία περιμένετε το κύκλωμα σας να λειτουργεί8 σωστά8 αν η είσοδος Χ ξεκινά και αυτή από ένα καταχωρητή; β) Αν επιβάλλουμε στο ρολόι την περίοδο που υπολογίσατε στο ερώτημα (α) και αφαιρέσουμε τους καταχωρητές F και G, τι θα συμβεί8 στο κύκλωμα; Θα συνεχίσει να λειτουργεί8 σωστά8; Αν όχι, τι αλλαγές θα προτείνατε; γ) Αποφασίζετε να επανασχεδιάσετε το αρχικό8 σας κύκλωμα ώστε να μειώσετε όσο το δυνατόν περισσότερο το πλήθος των καταχωρητών διατηρώντας την περίοδο ρολογιού του ερωτήματος (α). Σε ποια λύση θα καταλήγατε; Τον καταχωρητή8 Η που εμφανίζεται στην έξοδο του κυκλώματος δεν επιτρέπεται να τον αφαιρέσετε. Απάντηση 1 α) Για τον προσδιορισμό της ελάχιστης περιόδου πρέπει να βρούμε την μέγιστη καθυστέρηση απ όλα τα μονοπάτια του κυκλώματος. Επειδή η μέγιστη καθυστέρηση είναι 8ps (μονοπάτι Α -> C), η ελάχιστη περίοδος είναι 8ps. β) Μετά την αφαίρεση των καταχωρητών F και G, το κύκλωμα μοιάζει ως εξής. 1
Για να συνεχίσει να λειτουργεί σωστά το κύκλωμα πρέπει να τηρείται ο setup περιορισμός και επίσης να μην χαλάει ο χρονισμός των σημάτων. Τα νέα μονοπάτια που δημιουργήθηκαν C->H, D->H και E->H έχουν καθυστέρηση 6ps, 6ps και 7ps αντίστοιχα, κι επειδή δεν υπερβαίνουν την περίοδο (T=8ps) το κύκλωμα δεν παραβιάζει το setup περιορισμό. Επίσης με την αφαίρεση των F,G καταχωρητών δεν επηρεάζεται ο χρονισμός των σημάτων, οπότε το κύκλωμα λειτουργεί σωστά. γ) Εφόσον η περίοδος είναι T=8ps, σε κάθε μονοπάτι η καθυστέρηση δεν θα πρέπει να είναι μεγαλύτερη από 8ps. Όπως είδαμε για να περιορίσουμε το πλήθος των καταχωρητών μπορούμε να αφαιρέσουμε τους καταχωρητές F και G. Ένα άλλο βήμα βελτιστοποίησης είναι η αντικατάσταση των καταχωρητών D,E με έναν μόνο καταχωρητή (έστω D) και την τοποθέτησή του πριν από τον κόμβο Κ2. Ομοίως αντικαθιστούμε τους καταχωρητές A και Β, με έναν μόνο καταχωρητή (έστω Β) πριν από τον κόμβο Κ1. Αρχικό κύκλωμα με 8 καταχωρητές Τελικό ισοδύναμο κύκλωμα με 4 καταχωρητές Άσκηση 2 Δώστε τις περιγραφές σε SystemVerilog που αντιστοιχούν σε κάθε ένα από τα κυκλώματα που σας δίνονται. Δε χρειάζεται να δηλώσετε εισόδους και εξόδους παρά μόνο τα καλώδια που χρησιμοποιείτε στην περιγραφή σας. α) β) 2
γ) Απάντηση 2 a) always_comb begin if(reset) NEXT_PC = 0; else if(branch) NEXT_PC = OFFSET + PC; else NEXT_PC = PC + 1; b) assign Z = A ^ B; c) always_ff @(posedge clk) begin X[1] <= X[8] ^ DATA; X[4:2] <= X[3:1]; X[5] <= X[4] ^ (X[8] ^ DATA); X[6] <= X[5] ^ (X[8] ^ DATA); X[8:7] <= X[7:6]; Άσκηση 3 H περιγραφή σε SystemVerilog που ακολουθεί εντοπίζει την ελάχιστη τιμή που έχει περάσει από την είσοδο Α και την εμφανίζει στην έξοδο minval. Επίσης, μετρά τις φορές που πέρασε από την είσοδο Α η ελάχιστη τιμή και εμφανίζει το πλήθος στην έξοδο mincount. Για παράδειγμα αν στην είσοδο Α εμφανιστούν οι τιμές 57, 85, 23, 34, 36, 23, 46, 23 τότε οι τελικές τιμές στις δύο εξόδους θα έιναι 23 και 3 αντίστοιχα.. module minvalcount ( input logic clk, input logic rst, input logic [7:0] A, output logic [7:0] minval, output logic [7:0] mincount); logic [7:0] val; logic [7:0] count; always_ff @(posedge clk) 3
begin if (rst) begin val <= 255; count <= 0; else if (A < val) begin val <= A; count <= 1; else if (A == val) count <= count + 1; assign minval = val; assign mincount = count; module; Συμπληρώστε το παρακάτω ημιτελές διάγραμμα ώστε να αντιστοιχεί ακριβώς στην παραπάνω περιγραφή σε SystemVerilog. Απάντηση 3 4
Άσκηση 4 Μία διεπαφή χειραψίας ready/valid μεταξύ ενός αποστολέα και ενός παραλήπτη επιτρέπει τη μεταφορά των δεδομένων στη θετική ακμή του ρολογιού όταν valid=ready=1, δηλώνοντας ότι και ο αποστολέας έχει έγκυρα δεδομένα προς μετάδοση και ο παραλήπτης είναι έτοιμος να τα λάβει. Στην άσκηση αυτή θέλουμε να παρεμβάλουμε ένα κύκλωμα μεταξύ του αποστολέα και του παραλήπτη το οποίο θα σέβεται τους κανόνες της χειραψίας και στις δύο πλευρές και θα υλοποιεί την κάθε μία από τις δύο παρακάτω λειτουργίες. Α) Λειτουργία hold: Όταν το σήμα hold = 1 τότε η επικοινωνία μεταξύ του αποστολέα και του παραλήπτη θα παγώνει ενώ όταν hold = 0 η μετάδοση θα πραγματοποιείται κανονικά. Με άλλα λόγια όταν hold=1 ανεξάρτητα αν ο αποστολέας και ο παραλήπτης είναι έτοιμοι θα στείλουν/λάβουν καινούρια δεδομένα αυτό δε θα συμβαίνει. Τα δεδομένα που δεν έχουν μεταδοθεί δεν πρέπει να χάνονται από τον αποστολέα. 5
Β) Λειτουργία flush: Όταν flush=1 το κανάλι θα αδειάζει από δεδομένα. Στην περίπτωση αυτή θέλουμε ότι δεδομένο προσπαθεί να στείλει ο αποστολέας να χάνεται και να μη φτάνει ποτέ στον παραλήπτη. Απάντηση 4 Στον παρακάτω πίνακα εμφανίζονται τα κυκλώματα που υλοποιούν α) μία HOLD διεπαφή είτε β) μία FLUSH διεπαφή. α) Διεπαφή HOLD β) Διεπαφή FLUSH Το τελικό κύκλωμα που υλοποιεί ταυτόχρονα τις δύο λειτουργίες HOLD και FLUSH φαίνονται στο παρακάτω σχήμα, στο οποίο αναλόγως το σήμα που θα είναι ίσο με 1 θα εκτελέσει την αντίστοιχη λειτουργία, με προτεραιότητα στο FLUSH. Διεπαφή HOLD+FLUSH 6