ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΛΟΠΟΝΝΗΣΟΥ ΣΧΟΛΗ ΟΙΚΟΝΟΜΙΑΣ, ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΛΟΓΙΚΗ ΣΧΕΔΙΑΣΗ Αναφορά 9 ης εργαστηριακής άσκησης: Μετρητής Ριπής ΑΦΡΟΔΙΤΗ ΤΟΥΦΑ Α.Μ.:2024201100032 Χειμερινό εξάμηνο 2014-2015
Περιεχόμενα Περιεχόμενα...2 Στόχος...3 Μετρητής ριπής με χρήση T flip flop, Λειτουργία μετρητή ριπής 8-bit, Πίνακας αληθέιας,κώδικας υλοποίησης...3 ΤestBench...7 Συμπεράσματα...8 2
Στόχος Στόχος της άσκησης είναι η σχεδίαση και υλοποίηση κυκλώματος μετρητή ριπής 8-bit με χρήση T flip flop σε γλώσσα HDL συνοδευόμενου του διαγράματος των δινομένων παλμών εισόδου και αντίστοιχων εξόδων του κάθε flip flop του κυκλώματος. Μετρητής ριπής 8 bit με χρήση T flip flop Ο μετρητής είναι ουσιαστικά ένας καταχωρητής ο οποίος με την εφαρμογή παλμών εισόδου περνάει απο μια ακολουθία προκαθορισμένων καταστάσεων. Ο μετρητής που ακολουθεί την φυσική αρίθμηση ονομάζεται δυαδικός μετρητής. O δυαδικός μετρητής ριπής αποτελείται απο σειριακή σύνδεση συμπληρωματικων flipflop με την έξοδο του κάθε flip-flop συνδεδεμένη με την είσοδο ρολογιού C του flip flop της επόμενης βαθμίδας.η μετάβαση εξόδου του ενός flip flop χρησιμοποιείται ως πηγή για την πυροδότηση των επομένου. Ενας δυαδικός μετρητής ριπής 8-μπιτ με χρήση Τ-flip flop, αποτελείται απο 8 T-flip flop και μπορεί να μετρήσει δυαδικά απο το 0 εώς το 2^8-1 = 255. Η έξοδος του κάθε T-flip flop συνδέεται με την είσοδο C του επόμενου flip flop.το flip flop που περιέχει το λιγότερο σημαντικό μπιτ, δηλαδή το Q0, δέχεται τους εισερχόμενους παλμούς προς μέτρηση CLK,Τ,RESET. Οι είσοδοι Τ(toggle) και RESET όλων των flip flop είναι συνδεδεμένες μονίμως στο λογικό 1(H είσοδος RESET είναι επίσης πάντα συμπληρωμένη στα φλιπ φλοπ οπότε αποτελεί μηδενισμό). Αυτο κάνει το κάθε flip flop να συμπληρώνεται όταν το σήμα στην είσοδο C περάσει απο μια αρνητική μετάβαση.τα flip flop δηλαδή αλλάζουν κατάσταση στην αρνητική μετάβαση της εισόδου C απο 1 σε 0. Το σχήμα του κυκλώματος είναι: 3
Λειτουργία μετρητή ριπής 8-bit: Ο μετρητής ξεκινάει να μετράει με το δυαδικό 0 και αυξάνεται κατα ένα με κάθε είσοδο παλμού μέτρησης (binary count-up counter).μετά τον αριθμό 15 ο μετρητής επιστρέφει στο 0 και επαναλαμβάνει την ακολουθία μέτρησης. Ξεκινάμε απο το flip flop του λιγότερο σημαντικού μπιτ Q0 το οποίο συμπληρώνεται σε κάθε παλμό μέτρησης.η είσοδος C του φλιπ φλοπ Q0 πυροδοτείται απο τη θετική ακμή του ρολογιού CLK του κυκλώματος και μετα ανάλογα την μετάβαση εξόδου του πυροδοτεί το επόμενο φλιπ φλοπ. Δηλαδή κάθε φορα που το Q0 πάει απο το 1 στο 0 πυροδοτείται η είσοδος C του φλιπ φλοπ Q1 και συμπληρώνεται το περιεχόμενο του, οπότε το μπιτ Q1 παει απο το 1 στο 0 άρα πυροδοτείται η είσοδος C του φλιπ φλοπ Q2 και συμπληρώνεται το περιεχόμενο του(μπιτ Q2) και ου το κάθε εξής.αυτό συνεχίζεται και για τα υπόλοιπα μπιτ του μετρητή.παρατηρούμε δηλαδή ότι ένα flip flop πυροδοτείται μόνο όταν παράγεται αρνητική μετάβαση απο την έξοδο του προηγούμενου φλιπ φλοπ. Ο πίνακας αληθείας του μετρητή ριπής 8 bit είναι: 4
Ο κώδικας HDL του κυκλώματος του δυαδικού μετρητή ριπής 8-bit είναι: module TFF(q, clk, reset,toggle); //Το κύκλωμα Τ_FF του T flip-flop output q; input clk, reset,toggle;//παλμοί εισόδου reg q; always @(posedge reset or negedge clk) if (reset)//εχουμε μηδενισμό της εξόδου αν η πυροδότηση της εισόδου είναι απο RESET σημα q = 1'b0; else if (toggle) q = ~ q;//συμπλήρωμα της εξόδου αν η πυροδότηση της εισόδου είναι απο Τ σήμα endmodule module ripple_counter(q, clk, reset,toggle);//το κυκλωμα του μετρητή ριπής με τη σειρειακή σύνδεση των 8 flip flop output [7:0] q; 5
input clk, reset,toggle; TFF F0(q[0], clk, reset,toggle);//ως αρχικό σήμα εισόδου του Q0 flip flop είναι ο παλμός του ρολογιού του κυκλώματος TFF F1(q[1], q[0], reset,toggle);//κάθε έξοδος flip flop αποτελεί πηγη εισόδου για το επόμενό του TFF F2(q[2], q[1], reset,toggle); TFF F3(q[3], q[2], reset,toggle); TFF F4(q[4], q[3], reset,toggle); TFF F5(q[5], q[4], reset,toggle); TFF F6(q[6], q[5], reset,toggle); TFF F7(q[7], q[6], reset,toggle); endmodule module test;//h διαδικασια module test η οποία προσομοιώνει την λειτουργία του μετρητή ριπής δίνει τις αντίστοιχες εξόδους των flip-flop reg c lk; // Eίσοδοι reg reset; reg toggle; wire [7:0] q; //δηλώνω wire ως πίνακα 8 στοιχείων που θα αποθηκεύω επιμέρους τις εξόδους των flip flop ripple_counter FF_8 (.q(q),.clk(clk),.reset(reset),.toggle(toggle));//καλώ τη διαδικασία ripple_counter που περιέχει τις περιστάσεις των εισόδων και εξόδων των flip flop του κυκλώματος χρόνου initial clk = 1'b0; // θέτω αρχικά το clk 0 always #10 clk = ~c lk; // σημπληρώνεται το σήμα του clk κάθε 10 μονάδες initial begin 6
reset = 1'b1; //Αρχικοποιώ τις εισόδους του κυκλώματος toggle = 1'b0; #15 reset = 0; #20 toggle = 1; #100 toggle = 0; #100 toggle = 1; #100 $finish; end endmodule ΤestBench 7
Συμπεράσματα Μετρητής είναι ένας καταχωρητής που μετρά μια προκαθορισμένη ακολουθία καταστάσεων βάση της εφαρμογή παλμών του ρολογιού. Ο δυαδικός μετρητής ριπής των 8 μπιτ αποτελείται απο 8 Τ-flip flop που συνδέονται σειριακά και η έξοδος του ενός αποτελεί είσοδο ρολογιού C του επομένου.η αρνητική μετάβαση εξόδου του ενος φλιπ φλοπ πυροδοτεί την είσοδο του επομένου και έτσι έχουμε αλλαγή κατάστασης.με την εφαρμογη παμλών ρολογιού στο least significant bit flip flop ο μετρητής μετρά-μεταβαίνει σε καταστάσεις ανάλογα με τις μεταβάσεις εξόδων των φλιπ φλοπ του. Βιβλιογραφία http://www.electroschematics.com/wp-content/uploads/2012/07/truth-table.jpg http://ecse.bd.psu.edu/cse271/counter.pdf http://www.eng.ucy.ac.cy/mmichael/courses/ece210/chapter7-2.pdf 8